如何将8位的IIC地址转7位?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3090|回复: 4

[未解决] 如何将8位的IIC地址转7位?

[复制链接]
发表于 2020-9-13 09:54 | 显示全部楼层 |阅读模式
最近读《arduino权威指南》,里面说
Arduino使用7位的值来制定I2C的地址。某些器件的数据手册使用8位地址值,如果你有这样的设备,把那个值除以2得到正确的7位值
这句话什么意思??
具体怎么操作?
求大家给我举个例子。
发表于 2020-9-13 11:02 | 显示全部楼层

回帖奖励 +1 金币

除以2,也就是右移一位
直白点说,就是取高7位,舍去最低的1位
发表于 2020-9-13 11:50 | 显示全部楼层
I2C地址其实应该是8位,也就是7位(地址)+1位(读写标志:0是写、1是读)

从Slave设备中读数据时,使用的是“读地址”

往Slave设备中写数据时,使用的是“写地址”

因为使用了Arduino封装的Wire库,最低的1位(读写标志)是由Wire库自动添加的,所以实际调用函数时使用的是7位的地址,舍去了最低的1位(读写标志)
 楼主| 发表于 2020-9-14 17:24 | 显示全部楼层
假设
100(DEC)= 0110 0100(BIN)
除以2得到
50(DEC)= 0011 0010(BIN)
右移了一位。
发表于 2021-1-11 17:27 | 显示全部楼层
原来如此  学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 14:54 , Processed in 0.070179 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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