大学生
最后登录1970-1-1
在线时间 小时
注册时间2023-10-9
|
发表于 2024-9-29 10:54:03
|
显示全部楼层
do while 第一次执行 生成起始信号,清除SR1寄存器数据,发送地址,进入while判断,判断读取SR1寄存器bit1,bit1为0循环继续,bit1为1循环结束.
假设发送未结束,因为地址发送需要时间,此时SR1->bit1为0,进入循环,因为总线占用,生成起始信号不起作用(在本字节传递完成后起作用),清除SR1寄存器数据,发送地址(此步同样不起作用),接着进入while判断直到发送结束.
假设发送结束,NACK,此时SR1->bit1为0,进入循环,重新发送起始信号等开始新一次通讯.继续循环.
假设发送结束,ACK,此时SR1->bit1为1,退出循环.软件清除AF标志位,发送结束信号完成I2C通讯.
告诉你了看标志位,看标志位,看标志位!!!!
这么简单的逻辑理解不了????我上个回答有什么问题,非得按行给你讲代码你才能看懂吗?一点脑子不带的?给你免费回答个问题,给你还装起来了. |
|