Microchip
直播中

王敏

7年用户 245经验值
私信 关注
[问答]

PIC16LF18325如何采用I2C延长时钟

我用PIC16LF18325通过I2C与SI7006湿度传感器通话。除了获得湿度测量值之外,我能够有效地与传感器通信。有一种叫做时钟伸展的东西,我不知道我的I2C在湿度传感器之前在哪里完成传输。数据已准备就绪。您可以在下面的链接18、20和21页上找到关于这方面的信息:http://www.silabs.com/Sup...calDocs/Si7006-A20.pdfI使用Mplab代码配置器生成的I2C代码来做到这一点,以下是我的代码:uint8_t readBuffer[2];uint8_t writeBuffer[2];uint8_t status=0;writeBuffer[0]=Si_Rel_Humidity;I2C2_MasterWrite(writeBuffer,1,Si_Address,&status);_._ms(1);I2C2_MasterRead(readBuffer,2,Si_Address,&status);知道如何进行时钟拉伸以读取湿度传感器数据吗?

回帖(4)

张娜

2020-4-30 11:21:43
是的,我不确定哪一个I2C主控硬件将正确地实现时钟拉伸。SMBus兼容吗?在这种情况下,我会用软件I2C…
举报

张娜

2020-4-30 11:31:09
是的,我不确定哪一个I2C主控硬件将正确地实现时钟拉伸。SMBus兼容吗?在这种情况下,我会用软件I2C…
举报

曹光辉

2020-4-30 11:45:43
Si7006上的读取操作进行:Start|Slave Addr|W-bit|Ack|Strt Re|Slave Addr|R-bit|Ack|Clock Stretch|MS Byte|Ack|LS Byte|NA PI读取了存储在Si7006上的温度,但是由于某种原因,当您告诉它测量并随后读取PIC时,它停止时钟NG,看起来像是超时了。如果它有帮助,我可以向您展示数据/ CLK行的范围捕获。
举报

陈晨

2020-4-30 11:53:37
时钟拉伸是基本I2C协议支持的一种技巧。在定时位之前,主控器必须等待时钟上升到1阈值以上。把钟放低,它等待着。SMBus使用这种行为。基本I2C不认为它是一个特性,因为I2C没有超时,HW将永远等待。SMBus需要超时。这应该比马克斯将要占用的超时10%-20%。OP将需要决定他们是否愿意等待或者在一段时间后回来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分