Базовая ошибка чтения / записи I2C на Beaglebone

Я пишу программу для доступа к регистрам WHO_AM_I на акселерометре и гироскопе через i2c на биглебоне черном. Вот основной код.

int main(void)
{
char rxBuffer[40];
char txBuffer[32];
int gyroAddress = 0x20;
int acceleroAddress = 0x1e;
int tenBitAddress = 0;
int opResult = 0;int i2cFD = open("/dev/i2c-1",O_RDWR);
opResult = ioctl(i2cFD, I2C_TENBIT, tenBitAddress);
opResult = ioctl(i2cFD,I2C_SLAVE, acceleroAddress);

memset(rxBuffer, 0, sizeof(rxBuffer));
memset(txBuffer, 0, sizeof(txBuffer));

txBuffer[0] = 0x0D;
opResult = write(i2cFD, txBuffer, 1);
if (opResult !=1) printf("No ACK bit!\n");
opResult = read(i2cFD, rxBuffer, 1);

printf("Part ID: %d\n", (int)rxBuffer[0]);//for gyro
opResult = ioctl(i2cFD, I2C_SLAVE, gyroAddress);
txBuffer[0] = 0x0C;
opResult = write(i2cFD, txBuffer, 1);
if (opResult != 1) printf("No ACK bit!\n");
opResult = read(i2cFD, rxBuffer, 1);
printf("Part ID: %d\n", (int)rxBuffer[0]);
}

`
Я получаю Part ID для обоих как ноль, но когда я проверяю датчик с помощью команд i2cget, он дает мне ожидаемое значение «0xC7». Есть идеи, что я делаю не так?

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]