我正在使用I2C通信,我需要读字而不是字节,但我卡住了。 要读取的字节我做的:ReadWords而不是字节
void I2CReadBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *value)
{
uint8_t i=0;
I2C_MasterSendStart(devAddr, I2C_WRITE_XFER_MODE);
I2C_MasterWriteByte(regAddr);
I2C_MasterSendRestart(devAddr, I2C_READ_XFER_MODE);
while (i++ < (length-1)) {
*value++ = I2C_MasterReadByte(I2C_ACK_DATA);
}
*value = I2C_MasterReadByte(I2C_NAK_DATA);
I2C_MasterSendStop();
}
如果我想readWords什么?我必须使用int16_t *值但在那之后,我坚持了
while (i++ < (length-1)) {
*value++ = I2C_MasterReadByte(I2C_ACK_DATA);
}
*value = I2C_MasterReadByte(I2C_NAK_DATA);
谢谢
最简单的事情就是根据你现有的字节阅读功能写一个字读功能,就像这样:void I2CReadWords(uint8_t devAddr,uint8_t regAddr,uint8_t length,uint16_t * value){ I2CR eadBytes(devAddr,regAddr,长度* 2,(uint8_t *)值); }'。但是你可能有字节排序困难。 –