i2c - I2C 从机中的确认
问题描述
我阅读了 nxp 提供的 I2C 规范,但在某些方面我仍然不清楚。你能给我解释一下吗?
- 通常从机由 I2C 主机控制。确认由 I2C 主机启用,那么从机如何生成 I2C 确认?
- I2C 从机地址和 I2C 数据字节都是 1 字节数据,那么 I2C 从机如何区分它们?
解决方案
假设 nxp 的 i2c 规范与行业标准相同。
1)我不认为“确认由大师启用”是正确的术语。在主机发送每个(完整)字节后,它等待从机发回确认位(或不确认)。从机通过改变 SDA 线的电平来做到这一点。
2) 对于从主设备到从设备(和返回)的数据传输,保持发送字节的顺序非常重要。一个典型的例子是这样的:
- 主机发送:启动信号
- 主机发送:从机地址 + 写入位
- 从机发送:ACK
- 主机发送:主机要读取的寄存器地址
- 从机发送:ACK
- 主机发送:重复启动信号
- 主机发送:从机地址 + 读取位
- 从机发送:ACK
- 从机发送:主机要读取的寄存器寄存器地址的内容
- 主机发送:NACK
- 主机发送:停止信号
如果您正在寻找有关 I2C 的更多详细信息,那么整个 Internet 上都有很多。对我来说,这个数据表的第 21 节帮助我理解了很多。
推荐阅读
- python - BeautifulSoup Webscrape 问题
- python - pandas 基于链式拆分过滤数据帧
- php - laravel 6 没有观看查看子文件夹
- django - 如何从表单验证中排除字段但保存清理后的数据
- php - 如何定义与多个类的 hasMany 关系?
- html - 如何将表格的值发送到电子邮件?
- regex - 负向后看无法正常工作
- javascript - 了解英国夏令时的 JavaScript 日期
- python-3.x - 当不同事件循环中的协程访问公共代码时,我是否需要使用 asyncio.Lock
- c# - 如何配置 ASP.NET Core 以在骆驼情况下返回异常?