
模块的桥接模式是指,通过通用串口和用户CPU相连,建立用户CPU和移动设备之间的双向通讯。用户可以通过串口,使用指定的AT指令对串口波特率,BLE连接间隔进行重设置(详见后面《串口AT指令》章节)。针对不同的串口波特率以及BLE连接间隔,以及不同的发包间隔,模块将会有不同的数据吞吐能力。为协调低速CPU的使用,默认波特率为9600bps,在有大数据量传输,或者高实时性需求的应用中,建议设定为高速串口波特率115200bps,支持掉电保存。
模块BLE连接间隔为20ms,串口波特率为115200bps时,模块具有最高理论转发能力(4K/S)。这里就在电平使能模式下,这种配置为例,对透传协议做详细介绍。
模块可以从串口一次性最多传输200字节数据包,模块会根据数据包大小自动分包发
EN为高电平,蓝牙模块处于完全睡眠状态。EN置低时,模块会以200ms的间隔开始广播,直到和手机对接成功。当EN从低到高跳变,不论模块状态,会立即进入睡眠。
连接成功之后,主机(MCU)如有数据发送至BLE模块,需将BRTS拉低,主机可在约100us后开始发送数据。发送完毕之后主机应主动抬高BRTS,让模块退出串口接收模式。要注意的是,抬高BRTS之前请确认串口数据完全发送完毕,否则会出现数据截尾现象。
当模块有数据上传请求时,模块会置低BCTS,最快会在500us之后开始发送,直到数据发送完毕。这个延时可以通过AT指令进行配置,见《串口AT指令》章节。数据发送完毕,模块会将BCTS置高。
如若主机的BRTS一直保持低电平,则蓝牙模块会一直处于串口接收模式,会有较高的功耗。
在模块连接成功后,会从TX给出〃TTM:0K\r\n\0〃字串,可以根据此字串来确定是否可以进行正常转发操作。当然也可以使用连接状态提示脚,也可以通过手机发送一个特定的确认字串到模块,主机收到后即可确认已经连接。当连接被APP端主动断开后,会从TX给出“TTM:DISCONNET\r\n\O”字串提示,如果是非正常断开,会从TX给出“TTM:DISCONNETFORTIMEOUT\r\n\O”字串提示。
模块的蓝牙默认连接间隔为20ms,如果需要节省功耗采用低速转发模式,需通过AT指令调整连接间隔(最长连接间隔2000ms),每个连接间隔最多传输80个字节,连接间隔为T(单位:ms),那么每秒最高转发速率V(单位byte/s)为:
如果模块的蓝牙连接间隔为20ms,而每个间隔最多传输80byte,因此理论最高传输能力(转发速率)为80*50=4Kbyte/s。测试表明,转发速率在2K/s以下,漏包机率很低。安全起见,无论是低速或者高速转发应用,都建议在上层做校验重传处理。
&以下是就20ms连接间隔的通讯模式举例,也可以自行配置。转发速率V0越低,丢包率
注:可以根据实际应用设计特定的通讯模式,串口包的长度可以设计在80byte〈L〈200byte之间(大包传输),根据BLE协议有以下关系:
满足以上条件的转发模式都是相对安全的,其中取TS=T,TS=T*2,TS=T*3,可用但不推荐,丢包率相对较高,必须加入校验重发机制。也就是说,当串口包采用80byte〈L〈200byte的大包时,串口数据可以一次性传递给模块,但需要预留模块通过蓝牙发送数据的时间,否则会出现追尾现象。如:在连接间隔设置为T=20ms时,如串口数据包长度选择L=200,则TS必须大于T*3=60ms,取TS=70ms是比较合理的选择。
9.串口数据包的大小可以不定长,长度可以是200字节以下的任意值,同样满足以上条件即可。但为最大效率地使用通讯的有效载荷,同时又避免通讯满负荷运行,推荐使用20,40,60字节长度的串口数据包,包间间隔取大于20ms。
CBCharacteristicWriteWithResponse参数,使用带回应写模式,这种模式会降低部分转发效率,但可保证单个数据包的正确性,而使用CBCharacteristicWriteWithoutResponse参数,使用不带回应写模式,这种模式会有利于提高转发效率,但数据包的正确性需要APP上层去校验。