七弦桐 发表于 2013-5-13 20:22:39

6050的地址问题

这是数据手册上说的6050的地址:

但是我看了好多代码 给出的都是这个:#define        SlaveAddress        0xD0        //IIC写入时的地址字节数据,+1为读取跟手册上给出的不一致竟然也能成功 这是啥原因?

aammoo 发表于 2013-5-13 20:33:54

地址是:1101_00X0,1101_00X1
X取决于AD0脚,末位1/0表示读/写

BLACKBLUE007 发表于 2013-5-14 09:26:50

I2C通讯规范中有介绍的:设备I2C地址是用7位来表示的!但是,你的IDE中,要认到设备就不一定是用7BIT的地址了,(0X68〈〈1)=0XD0........

七弦桐 发表于 2013-5-14 14:19:43

BLACKBLUE007 发表于 2013-5-14 09:26 static/image/common/back.gif
I2C通讯规范中有介绍的:设备I2C地址是用7位来表示的!但是,你的IDE中,要认到设备就不一定是用7BIT的地址 ...

还是不明 DATASHEET中的数据明明写的明明白白 为什么还要进行移位操作 这个还跟IDE相关??

BLACKBLUE007 发表于 2013-5-15 16:16:38

额!
1,通讯协议格式中第一个字节(为slave address)由7位地址和一位R/W读写位组成的,这字节是个器件地址。所以设备地址实际是指设备“读地址”和设备“写地址”!同一设备它是有二个地址的!!!记住,无论是写地址还是读地址,都是8位或者10位的,没有7位的.......
2,不同的编译环境中,对I2C设备的slave address是有区别的,有些编译环境只要求你的BIT7-BIT1,其他的由编译器自动完成!而大部份的IDE中,都是要求申明I2C设备的8BIT写地址!我也不明白什么原因!估计是I2C是主从方式进行通讯的,要对slave address的设备进行读数据时,先要向该设备写入命令,等设备准备好了数据后,系统自动将地址+1,然后用这个读地址和对应的数据寄存器地址进行读操作........
3,你是高级元老,给你讲解,倍感压力!我讲的不一定对,但我就是这么理解的!

Name_006 发表于 2013-5-15 16:36:15

ls应该说的很明白了   协议就是那么规定的                                                                        
页: [1]
查看完整版本: 6050的地址问题