文章目录[隐藏]
目录
I2C,两线式串行总线,可发送和接收数据
SCL和SDA都必须上拉
I2C协议
1. 空闲状态
SCL和SDA同时处于高电平
2. 开始信号
SCL为高电平期间,SDA由高电平转为低电平
3. 停止信号
SCL为高电平期间,SDA由低电平转为高电平
4. 应答信号ACK
发送器每发送8个字节,就在时钟脉冲9期间释放数据线SDA,由接收器反馈一个应答信号
拖接收器成功接收该信号,则拉低SDA,表示ACK
若没有成功接收该信号,则不拉低,SDA仍为高,表示NACK
5. 数据的有效性
SDA高电平表示1,低电平表示0,时钟线SCL高电平期间SDA应保持稳定
6. 数据传输
在SCL控制下传送数据
I2C的实现
定义SCL与SDA的引脚
SDA需要能够转变IO的方向
IIC_Init
II2_START![](https://cdn.chandianzi.cn/wp-content/uploads/csstm/d6858f2c87c94be687870e24adbf6bd3.png?imageMogr2/thumbnail/!2048x1186r|imageMogr2/gravity/Center/crop/2048x1186/interlace/1/quality/60)
IIC_Stop![](https://cdn.chandianzi.cn/wp-content/uploads/csstm/8e5dc1cb079b40d8bf0669cc6390fd3c.png?imageMogr2/thumbnail/!2048x1430r|imageMogr2/gravity/Center/crop/2048x1430/interlace/1/quality/60)
IIC_Wait_Ack![](https://cdn.chandianzi.cn/wp-content/uploads/csstm/92972cb64b514c14bb5a770368eee5d8.png?imageMogr2/thumbnail/!2048x1770r|imageMogr2/gravity/Center/crop/2048x1770/interlace/1/quality/60)
IIC_Ack
IIC_NAck ![](https://cdn.chandianzi.cn/wp-content/uploads/csstm/fa6aeda9717c4d97894dcf9ef31b1107.png?imageMogr2/thumbnail/!2048x1044r|imageMogr2/gravity/Center/crop/2048x1044/interlace/1/quality/60)
IIC_Send_Byte
IIC_Read_Byte
如果读到1,则最低位+1
通过I2C操作24C02
初始化
写一个字节
地址是2个字节u16,高8位是一个字节,即高字节,低8位是一个字节,即低字节
写入的是一个字节,8位,u8
读一个字节
写入读出多个地址
版权声明:本文为CSDN博主「CodeForCoffee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24118527/article/details/122759559
暂无评论