BLE_HCI_UART

Host Controller Interface(Transport Layer)

UART Transport Layer

GENERAL

HCI UART传输层的目标,是让同一个PCB上的两个UART的接口可以使用蓝牙的HCI。HCI UART传输层设定UART通信不受线错误影响。
BLE_HCI_UART_第1张图片

PROTOCOL(协议)

有四种HCI数据包可以通过UART传输层发送:HCI Command packet、HCI Event packet、HCI ACL Data packet和HCI Synchronous Data packet。HCI Command packets仅用于发送个BLE Controller,HCI Event packets仅用于发送给BLE Host、HCI ACL和Synchronous Data packet可以双向发送。

HCI 不能提供区分四种HCI数据包类型的能力。因此,如果HCI数据包通过一个通用的物理接口发送,那么一个HCI数据包类型标志按下表所示:BLE_HCI_UART_第2张图片

HCI数据包类型标志应该在HCI数据包之前立即发送。所有的四种HCI数据包都有一个长度域,用来确定数据包的长度。当一个完整的HCI数据包收到时,下一个数据包的类型标志是表示下一个数据包的。通过UART传输层,HCI数据包必须跟在HCI数据包类型标志之后。

RS232 SETTINGS

HCI UART传输层,RS232设置如下:
BLE_HCI_UART_第3张图片

RTS/CTS流控制用于防止UART缓存被覆盖。因为HCI有自己的流控制机制,所以RTS/CTS流控制不适用于HCI的流控制。

如果CTS为1,那么HOST/Controller允许发送。

如果CTS为0,那么HOST/Controller不允许发送。

流关断响应时间定义了,从RTS设置为0开始的最大时间,直到数据流真正停止。

RS232信号连接没有任何常见调制解调,也就是说TXD与RXD直接链接。

ERROR RECOVERY

如果Host或者Controller在通信中失去了同步,那么需要重启。同步的丢失,意味着一个错误的HCI数据包类型标志检测到了,或者长度域超出了HCI数据包的范围。

如果UART同步在从Host到Controller的通信中丢失,那么Controller应该发送HCI_Hardware_Error事件,告诉Host相关的错误。Controller会希望收到来自Host的HCI_Reset命令,以进行重启。Controller将在从Host到Controller的重新同步的数据流中,使用HCI_Reset命令。

如果UART同步在从Controller到Host的通信中丢失,那么Host应该发送HCI_RSET命令,目的是重启Controller。在从Controller到Host的数据流中,Host应该通过查找HCI_Command_Complete事件进行重新同步。

中,Host应该通过查找HCI_Command_Complete事件进行重新同步。

参考文献

《Core_v5.1》BLE5.1 spec.

你可能感兴趣的:(BLE,研究)