这个是拿官方例程改的。
下面是加速传感器的写和读程序。
#define Slave_Addr 0x18
bool HwI2CSet(uint8_t RegAddr, uint8_t WriteBuf)
{
bool ret = false;
uint8_t buf[2] = {0};
buf[0] = RegAddr;
buf[1] = WriteBuf;
I2C_Transaction i2cTransaction;
i2cTransaction.writeBuf = buf;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf = NULL;
i2cTransaction.readCount = 0;
i2cTransaction.slaveAddress = Slave_Addr;
i2cTransaction.arg = NULL;
ret = I2C_transfer(I2CHandle, &i2cTransaction);
return ret;
}
/*********************************************************************
* @fn GY_I2C_GET
*
* @brief 读取寄存器(读取寄存器中的值)
*
* @param .
*
* @return None.
*/
bool HwI2CGet(uint8_t RegAddr, uint8_t *ReadBuf, uint8_t ReadLen)
{
bool ret = false;
I2C_Transaction i2cTransaction;
i2cTransaction.writeBuf = &RegAddr;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = ReadBuf;
i2cTransaction.readCount = ReadLen;
i2cTransaction.slaveAddress = Slave_Addr;
i2cTransaction.arg = NULL;
ret = I2C_transfer(I2CHandle, &i2cTransaction);
return ret;
}
另外一个设备只修改了 从及设备地址。另一个设备原理图如下。
Alvin Chen:
单独挂在你的光电设备是否可以正常读写?
Alvin Chen:
I2Cdemo :
dev.ti.com/…/node
user5831375:
回复 Alvin Chen:
不能。
Alvin Chen:
回复 user5831375:
那说明应该是你这个传感器的问题,你再看看这个传感器的资料。