本文已参与「新人创作礼」活动,一起开启掘金创作之路。
问题描述
大概是这样,使用STM32硬件IIC作为主机通讯,只要不发送错误的从机地址,
通讯一直都是没问题的,因为验证程序的关系,所以在程序中修改了一下从机地址,
这时候就出现了问题,下面直接看图把
使用这段代码修改从机的地址后显示从机地址修改成功,但是后续的通讯使用新地址却失败,笔者反复探究,观察后发现,发送一个错误的从机地址尝试一次通讯,后续是用正确的地址也会失败。
本着好奇心用逻辑分析仪,仿真后发现。情况是后续的通讯从机有回复应答,但是STM32硬件的IIC没有识别到这个应答。
仿真中的寄存器情况是这样的
正常通讯这里的寄存器应该是0x0082
多出来的位是AF位
不知道 这是不是就是传说中的STM32硬件IIC不好用的原因
不知道是否是从机的问题,从逻辑分析仪来看从机是有应答的,但是主机却识别不到。
后续改为软件模拟IIC后正常工作运行。
但其实后续正常使用硬件IIC不使用修改从机地址命令,其实也是正常的。
虽然挺无语,但是遇到实际问题逻辑分析仪是真的好用。