为了做一个扩展板,主机是通过I2C给从机MCU通信的,MCU就选定为STM32,为什么选这个呢,因为STM32便宜而且别人也好维护。
先打开了例程:
首先改成7Bit通信模式。
Buffer改成我的内容。
主程序先被我精简成这样。
改一改CallBack,让他接受一次又一次.
接受到的内容作为LED的延迟时间.
找了个Linux板子比如树莓派,这么操作。
LED的闪烁速度就我定了。逻辑分析仪一看,表现良好。
但是如果一个I2C从机就一个LED功能,未免太过简单,所以我们搞几个寄存器。就要改成接2字节,然后搞个状态逻辑。
当然,因为收到数据翻转LED的也要删掉哦。不然影响观察哦。
那么可以有这么几条指令啦。
解释下,第一条就是LED点亮,第二条就是LED熄灭,第三第四都是翻转。很好理解吧。读取就是个复杂的状态机机制,我目前总结出来的这几点,我还没完全调好,先这样吧。
- 如果一个器件有读有写,那么应该让这个期间第一次接受数据时候只要一个字节,然后再决定继续接受还是发送。
- 第一个字节总理解为地址。
- 读写不能共存,要不读,要不写,从机发送完后记得切换到可以接受数据的模式。
如果有读有写,请问如何判断是读还是写,在何时判断?
@y 状态机