齐天大妖孽 发表于 2014-3-4 14:08:07

Bluno波特率的相关概念

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

rjyo 发表于 2014-6-2 18:28:40

谢谢详细的说明!

请问 AT+P13+OUT=0 这类的命令怎么用?好像网页的说明里只有关于蓝牙部分的操作,这部分的没有。

齐天大妖孽 发表于 2014-6-6 09:34:33

很容易使用,举几个例子吧:
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的电平状态
页: [1]
查看完整版本: Bluno波特率的相关概念