调试通信协议#

单片机操作外设时,需要发送控制字和数据,所使用的通信控制方法即通信协议。常见的通信协议有: I2C, SPI, UART, CAN 等。

因为单片机操作外设要借助这些协议才能发送数据,而不是直接写控制字,所以必须首先保证协议使用正确,才能保证控制字成功发送到外设。否则,外设不能正确收到控制字,更不可能正确做出反应。

那么,如何保证正确通信?答案当然是正确使用通信协议。但如果程序出了差错,怎么调试呢?

另一方面,如果我有办法保证通信协议使用完全正确,但却不能确定控制字发送得是否正确,那么如何调试呢?好像只能靠观察外设地结果,但很难做到单步调试。

由此引出一个问题是,能不能通过 PC 串口,或单片机串口,发过控制字,由一个中转模块转换成 spi 或 I2C 协议的控制字,再由相应的协议通道发送给外设,这就实现了控制字的绝对正确发送,让学习者将精力集中到控制字上。

为了单步调试,似乎将发送的字打印出来观察是最简单的。但外设收到的字无法打印,能不能有一个电路模块,将收到的字以数码灯的状态显示出来?

可用工具#

CH341A USB 转 UART IIC SPI TTL ISP EPP/MEM 并口转换器-淘宝网

CH341A模块 USB 转 UART IIC SPI TTL ISP EPP/MEM 并口转换器-淘宝网

USB转UART,I2C,SPI(带4路ADC,4路PWM,8数字IO及nRF2401测试软件)-淘宝网

国外一个成熟的产品

USB-ISS Communications Module

USB-ISS Python Library — USB-ISS 2.0.1 documentation