将 I2C 与基于 BSL 的协议一起使用时,需要了解以下注意事项:
- 主机始终启动传输(R 或 W)。
- 数据包必须包含从设备的地址。所有其他地址将被忽略。
- 如果从设备尚未准备好处理数据或发送响应,它将使时钟保持低电平(在 I2C 中称为“拉伸时钟”)
- 请注意,不同的命令具有不同的处理时间
- 示例:主机从 MCU 读取版本
S | 0x40 | W | A | 0x80 | A | 0x01 | A | 0x19 | A | 0xE8 | A | 0x62 | A | P |
| Addr | | | Header | | Length | | TX_ VERSION | | Checksum _L | | Checksum _H | | |
S | 0x40 | R | A | 0xA0 | /A | P |
| Addr | | | Version | | |
- 示例:主机将 16 个字节写入地址 0xC000。
S | 0x40 | W | A | 0x80 | A | 0x14 | A | 0x10 | A | 0x00 | A | 0xC0 | A | 0x00 | A | 0x03 | A | 0xEE | A |
| Addr | | | Header | | Length | | RX_DATA_ BLOCK | | AddrL | | AddrM | | AddrH | | Data0 | | Data1 | |
0x47 | A | 0xFF | A | 0xB2 | A | 0x40 | A | 0x80 | A | 0x5A | A | 0x20 | A | 0x01 | A | 0xD2 | A |
Data2 | | Data3 | | Data4 | | Data5 | | Data6 | | Data7 | | Data8 | | Data9 | | Data10 | |
0xD3 | A | 0x22 | A | 0x00 | A | 0xD2 | A | 0xD3 | A | 0x15 | A | 0xE4 | A | P |
Data11 | | Data12 | | Data13 | | Data14 | | Data15 | | Checksum _L | | Checksum _H | | |