找回密码
 立即注册
查看: 258|回复: 5

关于IIC的地址

[复制链接]
  • TA的每日心情

    16 小时前
  • 签到天数: 158 天

    [LV.7]常住居民III

    10

    主题

    289

    回帖

    1050

    积分

    金牌会员

    积分
    1050
    发表于 2024-2-18 00:16:18 | 显示全部楼层 |阅读模式
    请问下各位佬,我这边使用89c51和32G扫描IIC地址从0x00 到 0x127 来扫描挂载在总线的一个AT24C256。得到的地址是0xa0. 然后我使用Arduino nano对这个IIC重新进行扫描,得到的地址是0x50.
    Nano的可以正常读取和写入。 32G和C51的可能存在点问题,有时候可以正常读取有时候不能。 我用STM32 也读取了这个0xa0 也是有时候可以有时候不可以。 0x50是绝对不可以在STM32上的。但是可以在Nano上或者esp32上。
    有没有大佬知道这到底是一个什么情况。


    自信就会温和,温和就会坚定!
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:10
  • 签到天数: 122 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2044

    积分

    荣誉版主

    积分
    2044
    发表于 2024-2-18 01:41:40 | 显示全部楼层
    首先你要明白,iic的有效地址是高七位。
    这里就产生了一个问题,如何表示这个地址
    有将地址放在高七位,最低位补零的。也有把地址放在低七位,最高位补零的。
    比如说你的这个0xa0,换算二进制是10100000,显然是高七位存法
    同样的,0x50则是01010000,相比上面的向右移动了一位,是低七位存法。
    本质上这两个没什么区别
    具体使用为什么不行呢?是因为上面两种存法转换成读地址和写地址的算法过程不一样,当然是不能乱用的了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 07:59
  • 签到天数: 101 天

    [LV.6]常住居民II

    41

    主题

    1016

    回帖

    6971

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6971
    QQ
    发表于 2024-2-18 08:06:37 | 显示全部楼层
    1.“我这边使用89c51和32G扫描IIC地址从0x00 到 0x127 来扫描挂载在总线的一个AT24C256”,这里的设备地址应该是0-127扫描,不应该会到16位的地址吧
    2.至于地址0X50和0XA0,  IIC的地址是如下定义的
    截图202402180804239299.jpg

    实际上发送的第一个字节的前面七位就是设备地址,最后一个读写位,0XA0是 0x50<<1 | 0的结果了,器件地址是0X50(七位二进制数),但是这个七位要放到高七位,所以左移一下,最后一位写0是写入器件,写1是读取器件
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 21:58
  • 签到天数: 111 天

    [LV.6]常住居民II

    10

    主题

    583

    回帖

    930

    积分

    高级会员

    积分
    930
    发表于 2024-2-18 09:04:45 | 显示全部楼层
    IIC的有效地址或者协议中规定的地址是7位,8位地址(7位标准地址左移1位再加读写位)是不规范的说法。
    所以,猜测 “使用89c51和32G扫描AT24C256得到的地址是0xa0”,这里的0xa0就是不规范的8位地址,扫描结果没问题。这个可以从代码分析出来。

    至于32G和C51读写这个AT24C256不稳定,可能和时序有关,可以调整晶振频率或代码中的延迟试试,最好是用逻辑分析仪看时序。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    16 小时前
  • 签到天数: 158 天

    [LV.7]常住居民III

    10

    主题

    289

    回帖

    1050

    积分

    金牌会员

    积分
    1050
     楼主| 发表于 2024-2-18 19:47:35 | 显示全部楼层
    电子DIY小家 发表于 2024-2-18 08:06
    1.“我这边使用89c51和32G扫描IIC地址从0x00 到 0x127 来扫描挂载在总线的一个AT24C256”,这里的设备地址 ...

    谢谢老师
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    16 小时前
  • 签到天数: 158 天

    [LV.7]常住居民III

    10

    主题

    289

    回帖

    1050

    积分

    金牌会员

    积分
    1050
     楼主| 发表于 2024-2-18 19:48:10 | 显示全部楼层
    21cnsound 发表于 2024-2-18 09:04
    IIC的有效地址或者协议中规定的地址是7位,8位地址(7位标准地址左移1位再加读写位)是不规范的说法。
    所以 ...

    我抓一下详细分析下
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 16:31 , Processed in 0.065335 second(s), 53 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表