This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

5509A 用I2C接口API怎么读出从设备(0xA6)中的寄存器(0x00)读出寄存器的数据?



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中的寄存器)的数据?恳请大神帮忙指导!

  • 请参考这个应用报告里的AIC23寄存器读写例程。

    http://www.ti.com/lit/an/spra785a/spra785a.pdf

  • 这篇文档我看了,里面只有往AIC23寄存器写数据的例程,如果我要从某个从地址的某个寄存器里面读出这个寄存器的数据,应该怎么样写呢?

    z=I2C_read(datareceive,5,1,0x50,3,30000,0);

    上面是从eeprom读数据的函数,按我的理解是:从从地址0x50读出5个数据放到datareceive中,但是如果从0x50中的0x11(假设有这个寄存器)读出数据,上面的函数该怎么写呢?本人刚学,望大神赐教!

  • 我看了一下AIC23的时序是只写的,所以这里没有读寄存器的例程。

    你看一下adxl345的读寄存器的时序,它要求是先写寄存器的地址,再去读寄存器的值。
     

  • 子地址属于数据,不属于I2C地址,将它当数据写给I2C设备,顺序按你的I2C设备的访问要求做。