私はI2C通信を使用しています。バイトの代わりに単語を読む必要がありますが、スタックしています。私はreadWordsする場合はバイトの代わりに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();
}
何?:私はバイトを読み取るために 私は*値を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、length * 2、(uint8_t *)value); } '。しかし、バイトオーダーの問題があるかもしれません。 –