2017-4-13 17:25:45 [显示全部楼层]
19636浏览
查看: 19636|回复: 7

[进阶] 【I2C扫描器】当不知道I2C设备地址的时候

[复制链接]
本帖最后由 nicho 于 2017-4-13 17:25 编辑

I2C总线上可以挂载多个设备,每个设备只要设备号不一样就不会干扰工作,一般情况下I2C设备会有一个设备ID的选择引脚,如AT24c02,或者是LCD1602之类的设备均设有地址引脚
问题来了,在使用的时候,万一无法驱动设备怎么办



1.检查设备接线
2.检查设备号
3.确认程序匹配

好了,这个教程就是为了解决第二个问题的~

来用Arduino做一个I2C设备号检测器吧~

-------------------------------------------------------------------------------------------

【I2C扫描器】当不知道I2C设备地址的时候图2

连接未知设备号的设备

【I2C扫描器】当不知道I2C设备地址的时候图1

刷进程序,打开串口助手,就可以看到设备号啦~

这里的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直接刷进去就可以使用啦~




iooops  中级技匠

发表于 2017-4-30 23:44:53

沙了个发
回复

使用道具 举报

iooops  中级技匠

发表于 2017-4-30 23:45:47

话说我都还没用到过I2C
回复

使用道具 举报

nicho  中级技匠
 楼主|

发表于 2017-4-30 23:51:16

iooops 发表于 2017-4-30 23:45
话说我都还没用到过I2C

MPU6050不是用了i2c了咩
回复

使用道具 举报

iooops  中级技匠

发表于 2017-4-30 23:56:58

nicho 发表于 2017-4-30 23:51
MPU6050不是用了i2c了咩

啊?我回头去了解一下
回复

使用道具 举报

光2  学徒

发表于 2019-6-18 17:30:59

看看                                怎么看啊
回复

使用道具 举报

大球涨  学徒

发表于 2019-7-4 11:20:17

看看
回复

使用道具 举报

gada888  版主

发表于 2019-7-6 10:08:29

这个实用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail