Bluno波特率的相关概念

2014-03-049389
AI 快速预览详细 收起
Bluno的蓝牙芯片支持USB串口和物理串口,且USB串口优先级高于物理串口。当你通过USB串口以特定波特率打开时,物理串口会自动调整为相同的波特率。通过AT+UART指令可以设置默认波特率,但在USB串口打开时,物理串口波特率会跟随USB串口。例如,设置AT+UART=9600后,未打开USB串口前物理串口波特率为9600,打开USB串口后则变为USB串口的波特率。
Bluno的蓝牙芯片由于存在USB串口和物理串口,并且可以只使用其中一个,这样它就不像普通的USB转串口芯片那样简单了(普通的USB转串口芯片,usb串口波特率和物理串口波特率总是相同的)。

下面先说下Bluno的思路:
1. USB的优先级别很好,当你把Bluno插到电脑上并用波特率X打开了USB串口,那么物理串口自动变成了X。
2. 我们还有一个AT+UART指令,会设置一个默认的串口波特率。那么它不就和USB那个波特率冲突了吗?当然不是这样的,由于USB级别高,打开USB串口后,物理串口波特率和它一致,但是USB没有插入或者USB插入但是USB串口没有打开的情况下,蓝牙芯片的物理串口波特率就是用的是AT+UART设置的那个。
3. 比如你设置了AT+UART=9600。那么默认的波特率就是9600了。在没有打开USB串口前,物理串口波特率就是9600.当你用38400打开USB串口时,物理串口波特率就变成了38400。而你用USB串口AT+UART=?查询到的是默认波特率,不是当前波特率,所以还是返回9600(返回当前波特率没有意义,因为和USB串口波特率相同)。
原来如此简单,大家知道怎么回事了吧。下面举个例子说明。

波特率默认是115200
1. 我用AT+UART=9600配置波特率,断电重启。
2. 拨到NORM模式,下载如下测试程序
/******************************
  这个程序的主要功能是用AT指令将PAIR灯点亮,
  由于在2540芯片的主循环中发现不是pair状态,会熄灭。
  所以会有闪烁效果。
******************************/
void setup() {
  // initialize serial:
  Serial.begin(9600);
  delay(1000);
}
void loop(){
  Serial.println("AT+P13+OUT=0");
  delay(500);
}
3. 拨到AT模式,上点测试,发现PAIR灯在闪烁,证明物理串口波特率一定是9600。
4. 用115200打开usb串口,那么物理串口也变成了115200,由于波特率改变,AVR芯片发送的数据蓝牙芯片接收不到了,PAIR灯闪烁会消失。
5. 再用9600打开usb串口,那么物理串口也变成了9600,AVR芯片发送的数据蓝牙芯片又可以接收到了,PAIR灯又开始闪烁了。


file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\358023925\QQ\WinTemp\RichOle\C7_PD]0IY8OVCE{]L~1JWBX.jpg

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\358023925\QQ\WinTemp\RichOle\C7_PD]0IY8OVCE{]L~1JWBX.jpg


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
齐天大妖孽
齐天大妖孽
作者
很容易使用,举几个例子吧:
AT+P06+OUT=0 P06输出低电平
AT+P06+OUT=1 P06输出高电平
AT+P06+IN=? P06输入模式,返回P06检测到的高低电平
AT+P06+ADC=? P06作为ADC使用, 返回ADC的值,12bit采样。
AT+PFF+IN=? 查询所有IO的电平状态
rjyo
rjyo
谢谢详细的说明!
请问 AT+P13+OUT=0 这类的命令怎么用?好像网页的说明里只有关于蓝牙部分的操作,这部分的没有。
- 没有更多了 -