蓝牙核心规范(V5.2)6.0-深入详解之Uart传输层

蓝牙核心规范(V5.2)6.0-深入详解之Uart传输层

这个HCIUART传输层的目标是使在同一PCB上的两个UART之间的串行接口上使用蓝牙HCI成为可能。HCIUART传输层假定UART通信没有线路错误。


蓝牙核心规范(V5.2)6.0-深入详解之Uart传输层


协议

传输层可通过UART发送五种HCI包,即HCI命令包、HCI事件包、HCIACL数据包、HCI同步数据包和HCIISO数据包。HCI命令数据包只能发送到蓝牙控制器,HCI事件数据包只能从蓝牙控制器发送,HCIACL/同步/ISO数据包可以从蓝牙控制器发送到蓝牙控制器发送。


HCI不提供区分这四种HCI数据包类型的能力。因此,如果HCI包通过公共物理接口发送,则必须根据下表2.1添加HCI包指示器。


HCI包指示器应在HCI包之前立即发送。所有四种HCI数据包都有一个长度字段,用于确定HCI数据包需要多少个字节。当接收到整个HCI包时,下一个HCI包需要下一个HCI包指示器。在UART传输层上,只允许HCI包指示器,后面跟着HCI包。


RS232设置

蓝牙核心规范(V5.2)6.0-深入详解之Uart传输层


使用RTS/CTS的流量控制用于防止临时UART缓冲区溢出。它不应该用于HCI的流控制,因为HCI有自己的针对HCI命令、HCI事件和HCI数据的流控制机制。


如果CTS为1,则允许主机/控制器发送。


如果CTS为0,则不允许主机/控制器发送。


流量关闭响应时间定义了从将RTS设置为0到字节流实际停止的最大时间。


RS232信号应以零调制解调器的方式连接,即本地TXD应连接到远程RXD,而本地RTS应连接到远程CTS,反之亦然。


错误恢复

如果主机或控制器在通过RS232的通信中失去同步,则需要重置。同步丢失意味着检测到不正确的HCI包指示器,或者HCI包中的长度字段超出了范围。


如果UART同步在主机与控制器之间的通信中丢失,则控制器应发送一个HCI_Hardware_Error事件,告诉主机有关同步错误。然后,控制器将期望接收到来自主机的HCI_Reset命令,以执行重置。控制器还将使用从主机到控制器的字节流中的HCI_Reset命令来重新同步。


如果在控制器与主机之间的通信中UART同步丢失,则主机应发送HCI_Reset命令以重置控制器。然后,主机应该通过在从控制器到主机的字节流中寻找HCI_Reset命令的HCI_Command_Complete事件来重新同步。


上一篇:嵌入式端音频开发(Unisound篇)之 7.5 蜂鸟M音频控制


下一篇:蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同