5509a与加速度传感器adxl345进行iic通信,现在要从adxl345中的0x00寄存器中读出数据,该怎么写读函数?
int I2C_read (Uint16 *data, int length, int master, Uint16 slaveaddress,int transfermode, int timeout, int checkbus);
在数据文档中iic_read读中只有从设备的地址,怎么读出其子地址(adxl345中的寄存器)的数据?恳请大神帮忙指导!
Shine:
请参考这个应用报告里的AIC23寄存器读写例程。
http://www.ti.com/lit/an/spra785a/spra785a.pdf
Kecheng Li:
回复 Shine:
这篇文档我看了,里面只有往AIC23寄存器写数据的例程,如果我要从某个从地址的某个寄存器里面读出这个寄存器的数据,应该怎么样写呢?
z=I2C_read(datareceive,5,1,0×50,3,30000,0);
上面是从eeprom读数据的函数,按我的理解是:从从地址0x50读出5个数据放到datareceive中,但是如果从0x50中的0x11(假设有这个寄存器)读出数据,上面的函数该怎么写呢?本人刚学,望大神赐教!
Shine:
回复 Kecheng Li:
我看了一下AIC23的时序是只写的,所以这里没有读寄存器的例程。
你看一下adxl345的读寄存器的时序,它要求是先写寄存器的地址,再去读寄存器的值。
Tony Tang:
子地址属于数据,不属于I2C地址,将它当数据写给I2C设备,顺序按你的I2C设备的访问要求做。