ReadWords而不是Bytes

时间:2017-08-01 20:47:03

标签: c byte i2c words

我正在使用I2C通信,我需要读取字而不是字节,但我被卡住了。 要读取字节,我会这样做:

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();
}

如果我想阅读词汇怎么办?我必须使用int16_t *值,但之后我会坚持使用

while (i++ < (length-1)) {
            *value++ = I2C_MasterReadByte(I2C_ACK_DATA);
        }
        *value = I2C_MasterReadByte(I2C_NAK_DATA);

谢谢

1 个答案:

答案 0 :(得分:0)

大尾端

uint16_t ReadWord(void)
{
    uint16_t result = 0;
    uint8_t b;
    b = I2C_MasterReadByte(I2C_ACK_DATA);
    result = b + I2C_MasterReadByte(I2C_ACK_DATA) << 8;
    return result; 
}

它不会检查是否有任何错误,因为我不知道你的错误是什么