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

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

image.png

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


image.png


协议

传输层可通过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设置

image.png


使用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事件来重新同步。


目录
相关文章
|
4月前
|
传感器 监控 芯片
嵌入式系统中MCU与SoC通信方式的选择与应用
嵌入式系统中MCU与SoC通信方式的选择与应用
226 3
|
4月前
Modbus4j核心代码讲解
Modbus4j核心代码讲解
135 1
|
4月前
[通讯方式] 串口通信
[通讯方式] 串口通信
86 0
|
10月前
|
存储 开发框架 前端开发
单片机与HC-05蓝牙模块通信
单片机与HC-05蓝牙模块通信
134 0
|
11月前
|
网络协议 算法 网络架构
嵌入式 STM32 通讯协议--MODBUS
嵌入式 STM32 通讯协议--MODBUS
|
物联网
zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)
zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)
422 0
|
Linux API 芯片
USB2S可编程USB转串口适配器开发原理的通讯协议
USB2S可编程USB转串口适配器基于FTDI FT2232H芯片设计,对多种通讯协议的支持,包括UART,I2C,SMBus,1-Wire,SPI,CAN和PWM等。
USB2S可编程USB转串口适配器开发原理的通讯协议
Adurion两个HCO5蓝牙模块之间互相通信
Adurion两个HCO5蓝牙模块之间互相通信
117 0
|
存储 人工智能
西门子S7-200 SMART Modbus RTU通信,如何编写从站程序
上篇文章中我们通过一个例子学习了西门子S7-200 SMART中断程序的编写,本篇我们开始学习S7-200 SMART的Modbus RTU通信。通过集成RS485端口或可选通信板SM CM01的RS485/RS232端口,S7-200 SMART可以作为Modbus RTU主站或者从站同多个设备进行通信。
西门子S7-200 SMART Modbus RTU通信,如何编写从站程序