6050的地址问题
这是数据手册上说的6050的地址:但是我看了好多代码 给出的都是这个:#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取跟手册上给出的不一致竟然也能成功 这是啥原因? 地址是:1101_00X0,1101_00X1
X取决于AD0脚,末位1/0表示读/写 I2C通讯规范中有介绍的:设备I2C地址是用7位来表示的!但是,你的IDE中,要认到设备就不一定是用7BIT的地址了,(0X68〈〈1)=0XD0........ BLACKBLUE007 发表于 2013-5-14 09:26 static/image/common/back.gif
I2C通讯规范中有介绍的:设备I2C地址是用7位来表示的!但是,你的IDE中,要认到设备就不一定是用7BIT的地址 ...
还是不明 DATASHEET中的数据明明写的明明白白 为什么还要进行移位操作 这个还跟IDE相关?? 额!
1,通讯协议格式中第一个字节(为slave address)由7位地址和一位R/W读写位组成的,这字节是个器件地址。所以设备地址实际是指设备“读地址”和设备“写地址”!同一设备它是有二个地址的!!!记住,无论是写地址还是读地址,都是8位或者10位的,没有7位的.......
2,不同的编译环境中,对I2C设备的slave address是有区别的,有些编译环境只要求你的BIT7-BIT1,其他的由编译器自动完成!而大部份的IDE中,都是要求申明I2C设备的8BIT写地址!我也不明白什么原因!估计是I2C是主从方式进行通讯的,要对slave address的设备进行读数据时,先要向该设备写入命令,等设备准备好了数据后,系统自动将地址+1,然后用这个读地址和对应的数据寄存器地址进行读操作........
3,你是高级元老,给你讲解,倍感压力!我讲的不一定对,但我就是这么理解的! ls应该说的很明白了 协议就是那么规定的
页:
[1]