STM32
直播中

白边赫

7年用户 209经验值
私信 关注
[问答]

i2c模拟实验中结束发送时序结果不同是怎么回事?

i2c协议中的一个时序问题:SCL为高电平是,SDA由低到高的过程为停止信号。  
void stop(void){sda=0;AT24C02_delay();scl=1;AT24C02_delay();sda=1;AT24C02_delay();}这个函数能够让我的程序达到预期目的。void stop(void){scl=1;AT24C02_delay();sda=0;AT24C02_delay();sda=1;AT24C02_delay();}这个函数却不能了,仅仅是SCL=1的位置不同,但是我觉的下面这个函数也满足了协议要求啊。[/mw_shl_code]

回帖(5)

马海娟

2019-10-31 07:59:29
你第二个函数根据协议来确实也是OK的.
看看是不是原来的sda,scl时序影响到了stop.
比如原来如果sda为1,那么与你的第二个函数前面三句组合在一起,刚好就是一个IIC的start信号.不知道是不是这个原因.
举报

h1654155275.5771

2019-10-31 08:07:52
STM32中有IIC功能,为什么还要IO口去模拟呢?
举报

殷夏

2019-10-31 08:25:01
那个很垃圾啊.
举报

乔占宽

2019-10-31 08:40:14
但是用IO口模拟IIC模式,虽然也能起到IIC功能,但是并不能保证其稳定。
使用IIC功能,它的引脚的输入部分包含尖峰抑制单元,以去除小于50ns的毛刺等功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分