调试软件iic协议心得

本文详细解释了I2C协议中的数据发送过程,包括START、地址传输、读写标志、ACK/NACK确认,以及如何通过示波器和逻辑分析仪进行调试。特别强调了I2C时序的严格性以及使用STM32进行软件模拟的注意事项。
摘要由CSDN通过智能技术生成

如何判断发送成功?

主控发送了一个字节8位(8个 SCL 时钟)的数据后,在第9个时钟周期,释放 SDA 控制权(IO 引脚输出改为输入),读取 SDA 状态,读到低电平表示通信成功,为高通信失败。

iic协议对时序要求严格,所以要注意:

  • 首先,总线必须处于空闲状态
  • I2C主控向要通信的从机发送一个START 信号
  • I2C主控发送 I2C从设备的地址
  • I2C主控传输读/写标志。主控告诉从设备它是想要向从机发送数据(WRITE)还是接收从机的数据(READ)。
  • I2C从设备传输ACK/NACK(希望是ACK)。0表示确认,1表示未确认。
  • 一旦主机收到了0(ACK),主机就会以8位数据包的形式将数据传输给从机。
  • I2C主控传输ACK/NACK(希望是NACK)
  • 当数据序列传输完毕时,主机发送STOP命令。
  • 总线返回空闲状态

部分示例:

发送从机写地址0xD0

发送写寄存器地址0x6B

写入寄存器内容0X80

 注意事项:

1.  初步调试需要借助示波器或逻辑分析仪。

2. 使用开发板的demo (比如N32WB031)需要注意SDA,SCL 切换输入模式。如果都设置为OD,则不要切换为输入模式。

3. 发送slave id (从机地址),需要注意第9个scl 时钟周期是ACK 。

参考链接:

https://blog.csdn.net/weixin_47969962/article/details/132404887

实现代码:

STM32-软件模拟I2C - 不要让自己太懒 - 博客园 (cnblogs.com)

调试:

https://zhuanlan.zhihu.com/p/681086567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值