你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32实现软件I2C通信

[复制链接]
STMCU小助手 发布时间:2022-12-25 13:11
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的引脚

442c06dad3b54fae869b669774ef79e6.png

SDA需要能够转变IO的方向

003b845732ce43aa9749b03f13bdfd3d.png

IIC_Init

c756741ebb9543cc9907bdae0c2376cb.png

II2_START


d6858f2c87c94be687870e24adbf6bd3.png

IIC_Stop


8e5dc1cb079b40d8bf0669cc6390fd3c.png

IIC_Wait_Ack


92972cb64b514c14bb5a770368eee5d8.png

IIC_Ack

6322e2e7ee364880b886fa0c1799a2f9.png

IIC_NAck


fa6aeda9717c4d97894dcf9ef31b1107.png

IIC_Send_Byte

2d3aa782e1824d17add8dda0cc8c6216.png

IIC_Read_Byte
如果读到1,则最低位+1

1d08544cd64045459612bce4e4094f14.png


通过I2C操作24C02
初始化

18ba2ff7bc224536b3ecbc95ca79b096.png

写一个字节
地址是2个字节u16,高8位是一个字节,即高字节,低8位是一个字节,即低字节

写入的是一个字节,8位,u8

172330d0fe96480483accc816c029f71.png

读一个字节

dcecfbe1d32b425396ce1a06e2a10f60.png

写入读出多个地址


e0473fdfd67b457fa5a8d858021d4f57.png

————————————————
版权声明:CodeForCoffee


收藏 评论0 发布时间:2022-12-25 13:11

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版