Microchip
直播中

李启华

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

如何从I2C设备读取ID

你好,我试图读取I2C设备上的IDs I2C信息,它是定义为部分拷贝的:(NXPuser-./UM10204)3.1.17设备ID字段(参见图20)是一个可选的3字节只读(24位)字,给出以下信息:·12位的制造商名称,唯一的per制造商(例如,NXP)·9位具有零件标识,由制造商指定(例如,PCA9698)·3位具有模具修改,由制造商指定(例如,RevX)。设备ID是只读的,在设备中是硬连线的,并且可以访问如下:启动条件2。主机发送保留的设备ID I2C总线地址,然后将R/W位设置为“0”(写):“1111 1000”。3。主机发送必须识别的从设备的I2C总线从地址。TelSB是一个“不在乎”的价值观。只有一个设备必须确认这个字节(一个I2C总线从地址)。4。主程序发送一个Re-START条件。备注:一个STOP条件后面跟着一个START条件重置从程序状态,并且不能执行设备ID读取。此外,STOP条件或Re-START条件之后访问另一个从设备将重置从设备,并且不能执行设备ID读取。主机发送保留的设备ID I2C总线地址,然后将R/W位设置为“1”(Read):“1111 1001”。6。设备ID读取可以从12个制造商位(第一字节+第二字节的四个MSB)开始,然后是九个部分标识位(第二字节的四个LSBs of+第三字节的五个MSB),然后是三个芯片修订位(第三字节的三个LSB)。主机通过NACK最后一个字节结束读取序列,从而重置另一个设备状态机,并允许主机发送停止条件。注意:通过发送NACK,可以随时停止设备ID的读取。如果主机在第三个字节之后继续ACK,从机回滚到第一字节,继续发送设备ID序列,直到检测到NACK。使用的代码(MikroC 18F26K22 16MHz:终端显示结果:resultat:DeviDevice@:4EDevice IDs 2:F8Device IDs 1:F8Device IDs 0:F8Device ID 24位:16316664BAD结果)。我什么也没读!发送后由X50分析器确认的I2C TRAME捕获的@ 0xF8。没有阅读,只是读回AdRES0xF8?怎样????有什么想法吗?Nota:我在I2C总线上发现设备和玩LCD没有问题。

回帖(4)

李兆峰

2020-3-10 08:28:21
它是“可选的”,也许你的设备不支持它…(我今天才知道这件事!)
举报

王焕树

2020-3-10 08:44:27
正如Cinzia指出的,这里的关键词是“可选的”,就在说明书的第一句话中。这意味着,如果要检测的设备的数据表没有具体支持该特性,那么它不支持。我所使用的设备中没有一个支持该特性。
举报

李兆峰

2020-3-10 08:51:22
是的,同样的:现在我想在我创建的3个I2C从设备中实现它。
举报

h1654155275.5724

2020-3-10 09:00:08
你好,好,谢谢'si误解了数据表,很难,这是使用这个ID信息是可选的…我看到一个相当新的I2C设备的数据表:DS3232 RTC准确。没有关于某些ID寄存器的信息……看来这个0xF8(写地址)对应于:部分文档……取自I2C规范(2000)。17年后等着瞧
举报

更多回帖

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