Я сейчас программирую для CubeSat Satellite.Я работаю над компонентом антенны, чтобы получить статус антенны.Однако я столкнулся с проблемой с передачей I2C.
Я сузил проблему до проблемы приемника I2C, и я не знаю, что вызывает такую проблему.Printf ("ошибка rx \ r \ n") был добавлен, чтобы сузить проблему.
Адрес I2C определенно правильный на антенне ISIS.
if (isis_ants_delay_cmd(i2c_addr, &tx, tx_len, &rx, rx_len, 10) != E_NO_ERR) {
printf("I2C transaction error 1\r\n");
return -1;
}
static int isis_ants_delay_cmd(uint8_t addr, void * txbuf, size_t txlen, void * rxbuf, size_t rxlen, int delay) {
if (i2c_master_transaction(0, addr, txbuf, txlen, NULL, 0, 50) != E_NO_ERR) {
printf("tx error\r\n");
return 0;
}
vTaskDelay(delay/portTICK_RATE_MS);
if (i2c_master_transaction(0, addr, NULL, 0, rxbuf, rxlen, 50) != E_NO_ERR) {
printf("rx error\r\n");
return 0;
}
return E_NO_ERR;
}
Вывод на консоль:
статус наноминта # муравей
Получение статуса антенны.
Ошибка приема
Ошибка транзакции I2C 1