【I2C扫描器】当不知道I2C设备地址的时候
2017-04-133万
AI 快速预览详细
本教程介绍如何使用Arduino制作一个I2C设备号检测器。通过连接未知设备并刷入特定程序,用户可以使用串口助手查看设备地址。工作原理是主设备发送所有可能的设备号,从设备会应答其正确的地址。这样就可以轻松找到设备地址,解决设备无法驱动的问题。
|
I2C总线上可以挂载多个设备,每个设备只要设备号不一样就不会干扰工作,一般情况下I2C设备会有一个设备ID的选择引脚,如AT24c02,或者是LCD1602之类的设备均设有地址引脚 问题来了,在使用的时候,万一无法驱动设备怎么办 1.检查设备接线 2.检查设备号 3.确认程序匹配 好了,这个教程就是为了解决第二个问题的~ 来用Arduino做一个I2C设备号检测器吧~ ------------------------------------------------------------------------------------------- ![]() 连接未知设备号的设备 ![]() 刷进程序,打开串口助手,就可以看到设备号啦~ 这里的83是十进制,转化为十六进制之后,设备号就是0x53 ~~ ![]() --------------------------------------- 工作原理是什么? 在i2c协议里面,主设备在从设备获得的第一个字节的数据就是从设备的地址。如果从设备的设备号和总线上主设备发出的信号相同,那么从设备就会应答,所以,只要把所有设备号都发一遍.看看哪个应答了,对应的数字就是设备号啦~ [mw_shl_code=cpp,true] void scanI2CBus(byte from_addr, byte to_addr) { byte data = 0; // not used, just a ptr to feed to twi_writeTo() for( byte addr = from_addr; addr < = to_addr; addr++ ) { byte rc = twi_writeTo(addr, &data, 0, 1, 0); if( rc == 0 ) { Serial.printl("device found at address "); Serial.println(addr,DEC); } } }[/mw_shl_code] --------------------------------------- I2CScanner.zip直接刷进去就可以使用啦~ |








