浅谈IIC通讯及部分代码解析,如有错误,欢迎指正。

在单片机模拟软件iic时上拉电阻一般为4.7K。

Start: 如上图时序图所示,在SCL高电平期间,SDA由高至低变化即可视为起始信号,如下图代码所示:先将总线与时钟线全部拉高,延迟一个iic周期(由于该通信需电平持续一段时间才能被检测到),再拉低SDA,最后拉低SCL。

Data/addr: 如上图时序图所示,在SCL低电平时间,SDA才能变化其电平来决定下一次输出的逻辑,即SDA的电平变化只能在SCL为低电平时进行,其他情况不被允许。该协议遵循高位先行原则。如下图代码所示:先判断要发送的字节的每一个位的0/1而拉低或者拉高SDA,然后拉高SCL,最后拉低SCL。一个字节数据放完毕后,拉高SDA,释放总线,以便读取ACK。(延时意义同上)

应答信号:处于数据位中的第9位,两种情况:NACK与ACK,它们的区别为,NACK信号的SDA电平为高,而ACK信号的SDA电平为低,如下图代码所示:(延时作用同上)

Stop:如上图时序图所示:当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号。即下图代码所示,先拉低SDA,然后拉高SCL,最后拉高SDA。(延时作用同上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值