ソースを参照

📃 docs(chipset): Add chipset docs

Jackistang 4 年 前
コミット
698698a177

+ 22 - 0
docs/Chipset.md

@@ -0,0 +1,22 @@
+Chipset 注册结构体:
+
+名称,mid, pid, proto 协议,初始波特率,工作波特率,bdaddr,init,  post 。
+
+工作波特率:有些 Chipset 支持更改波特率
+
+bdaddr:有些 Chipset 支持设置静态地址。
+
+
+
+
+
+需要将 HCI_Ttransport_h4 封装成哪些接口供 Chipset 使用?
+
+```C
+/* Send a command */
+int chip_hci_cmd_send(uint8_t *buf, uint16_t size);
+
+/* Wait until read a event. */
+int chip_hci_event_read(uint8_t *buf, uint16_t size);
+```
+

+ 72 - 1
docs/boards/CSR8311.md

@@ -44,4 +44,75 @@ static const uint8_t init_script[] = {
 
 > 每条命令的长度都为 0xc2,可能需要在末尾填充 0  ?
 
-初始化的 HCI 包为 `packages/csr8311.pklg` ,可以通过 Wireshark 打开。
+初始化的 HCI 包为 `packages/csr8311.pklg` ,可以通过 Wireshark 打开。
+
+
+
+> CSR chipset do not require an actual init script in general, but they allow to configure the chipset via so-called PSKEYs. After setting one or more PSKEYs, a warm reset activates the new setting.
+>
+> **BD Addr** can be set via PSKEY. A fixed address can be provided if the chipset has some kind of persistent memory to store it. Most USB Bluetooth dongles have a fixed BD ADDR.
+>
+> **SCO data** can be configured via a set of PSKEYs. We haven't been able to route SCO data over HCI for UART connections yet.
+>
+> **Baud rate** can be set as part of the initial configuration and gets actived by the warm reset.
+
+
+
+bluez/tools/hciattach.c : csr() 函数里有 CSR 的初始化代码。
+
+`/* 10 seconds should be enough for initialization */`
+
+```
+Read CSR chip build ID:
+01 00 fc 17 c2 00 00 09 00 00 00 19 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+build ID: resp[15] - resp[14]
+
+Read CSR chip current baudrate:
+01 00 fc 13 c2 00 00 09 00 01 00 02 68 00 00 00 00 00 00 00 00 00 00
+
+Set CSR chip baudrate:
+01 00 fc 13 c2 02 00 09 00 02 00 xx xx 00 00 00 00 00 00 00 00 00 00
+
+```
+
+
+
+![](images/image-20210718124735765.png)
+
+
+
+![](images/image-20210718125527316.png)
+
+
+
+CSR Vendor Read BuildID Command 等同于 HCI Command Read_Local_Version_Information 。
+
+
+
+![image-20210718141702726](images/image-20210718141702726.png)warm reset 在上电状态(warm)下强行复位芯片,使之前的配置信息生效(例如更改的波特率),该命令不会有 RSP 返回。
+
+
+
+![](images/image-20210718141636397.png)
+
+该命令大部分时间会返回 RSP
+
+低 13 位用于配置波特率:
+
+![](images/image-20210718142346393.png)
+$$
+Value = (baudrate / 244.140625)
+$$
+Bluez 里用的公式为:
+$$
+(baudrate * 64 + 7812) / 15625;
+$$
+高三位用于配置停止位和奇偶校验,一般都是 0 。
+
+![image-20210718142318452](images/image-20210718142318452.png)
+
+
+
+CSR8311 成功初始化:
+
+![](./images/csr8311_init.gif)

BIN
docs/boards/images/csr8311_init.gif


BIN
docs/boards/images/image-20210718124735765.png


BIN
docs/boards/images/image-20210718125527316.png


BIN
docs/boards/images/image-20210718141636397.png


BIN
docs/boards/images/image-20210718141702726.png


BIN
docs/boards/images/image-20210718142318452.png


BIN
docs/boards/images/image-20210718142346393.png