"BLE4.0 低功耗蓝牙协议总结"
BLE4.0,即蓝牙低功耗技术,是蓝牙规范的一部分,旨在提供高效、低功耗的无线通信。该技术广泛应用于移动设备、物联网(IoT)产品、健康监测设备等。在描述中提到的“确认和重发的软件实现”是BLE协议中确保数据可靠传输的关键机制。
在BLE4.0的数据传输过程中,每个Data Channel PDU(协议数据单元)的SN(Sequence Number)位被用来追踪发送序列号。当发送新的Data Channel PDU时,SN位应设置为当前的transmitSeqNum。如果数据需要重发,SN位不应改变,以标识这是一个重复的PDU。接收端通过比较接收到的SN位与预期的nextExpectedSeqNum来判断是否是新数据或重发数据。如果两者相同,表示是新数据,nextExpectedSeqNum可以加1;若不同,则表明是重传数据,nextExpectedSeqNum保持不变。
NESN(Next Expected Sequence Number)位在发送时被设置为nextExpectedSeqNum,用于接收端检测数据包是否已被确认。当接收端接收到的Data Channel PDU的NESN位与transmitSeqNum相同,这意味着上一个发送的数据包未被确认,需要重发。而当NESN位与transmitSeqNum不同,说明上一数据包已确认,transmitSeqNum加1,可以发送新的PDU。
规范中的流程图(图2-93)和文本描述可能在理解上存在困惑,但实际编程实现时需要结合两者来确保正确处理数据的确认和重发机制。这个过程涉及到BLE协议的链路层,该层负责管理物理层之上的通信,包括错误检测、流量控制和连接管理。
BLE协议栈分为HOST层和CONTROLLER层,CONTROLLER主要包含PHY物理层和链路层。PHY层负责频率选择、调制和发射功率控制,而链路层则处理数据帧格式、前导码、接入地址、CRC校验和数据白化等。数据通道的PDU格式包括报头和长度,用于广播和连接数据的传输。在设备间通信中,还需要进行滤波以减少干扰,并通过Radio模块(如NRF51822)进行硬件支持,包括EasyDMA、包结构、白名单、状态机和时间参数配置等。
在非连接状态下,BLE设备可以处于就绪态、广播态、扫描态或发起态。广播态是BLE设备向周围环境发送信息的方式,包括可连接和不可连接的广播事件。扫描态允许设备监听广播信息,而发起态则是建立连接的过程。软件设计时需要根据这些状态创建相应的流程图以指导实现。
BLE4.0协议中的确认和重发机制是确保数据完整性和连接可靠性的重要组成部分,涉及SN和NESN位的管理和状态机的控制,这需要深入理解协议规范并正确实现。