wscjun 发表于 2013-5-18 16:42:08

STM32 硬件I2C求助

STM32 的硬件I2C已经能够读写成功了。不过在思考多字节读写的时候我参考ST公司的“STM32F10xxx I²C optimized examples“这个例子的时候又遇到了疑问:
I2C读取从设备的数据的时序应该是:
1.开始信号-->2.发送7位从设备地址+1位标明读或写-->3.等待从设备的应答-->4.发送要读取的从设备寄存器地址-->5.等待从设备的应答-->6.发送开始信号-->7.发送7位从设备地址+1位标明读或写-->8.等待应答信号和接收数据-->9.关闭应答并发送结束信号
而在“STM32F10xxx I²C optimized examples“例子中却只发送了一次地址,这是为什么,一直不太理解。

wye11083 发表于 2013-5-18 16:54:25

多字节读,主机需要发送ACK。如果主机发送NACK,则设备会停止响应。

wscjun 发表于 2013-5-18 17:08:25

wye11083 发表于 2013-5-18 16:54 static/image/common/back.gif
多字节读,主机需要发送ACK。如果主机发送NACK,则设备会停止响应。

嗯,的确是在多字节读取的时候主机是要发送ack的。谢谢你的回答。

对于一开始的疑问,我又想了想,是不是当I2C总线上只有一个从设备的时候,可以通过硬件连线的方式确定地址。而不需要主机发送从设备地址了。主机需要发送的只是需要读取的从设备中寄存器的地址。
如果I2C中线上挂了多个从设备的时候,就需要先指定要操作的从设备,在进行具体的操作。
页: [1]
查看完整版本: STM32 硬件I2C求助