Нужна помощь ESP32 не может прочитать данные с тюнера RDA5807, хотя команды получает

dmitrij9992905

New member
Доброго времени суток!

Пишу в esp-idf для ESP32. Хочу подключить тюнер RDA5807M к ESP32, но при попытке прочитать из него данные выводится ошибка i2c null address error. Мой код:
Код:
uint16_t getRegister(uint8_t reg) {
uint16_t result;
uint8_t h = 0;
uint8_t l = 0;  // Действуем по алгоритму, описанному в документации ESP-IDF
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd);
i2c_master_write_byte(cmd, (RDA5807M_I2C_ADDR_RANDOM | WRITE_BIT), ACK_CHECK_EN); 
//i2c_master_write_byte(cmd, 0b00100010, ACK_CHECK_EN);
i2c_master_write_byte(cmd, reg, ACK_CHECK_EN);
i2c_master_stop(cmd);
i2c_master_start(cmd);
i2c_master_write_byte(cmd, (RDA5807M_I2C_ADDR_RANDOM | READ_BIT), ACK_CHECK_EN);
//i2c_master_write_byte(cmd, 0b00100011, ACK_CHECK_EN);
i2c_master_read_byte(cmd, h, ACK_VAL);
i2c_master_read_byte(cmd, l, NACK_VAL);
i2c_master_stop(cmd);  esp_err_t ret =
i2c_master_cmd_begin(i2c_port_num, cmd, 500 / portTICK_RATE_MS);
i2c_cmd_link_delete(cmd);  
// Складываем два байта в слово и выдаем
result = (uint16_t)h « 8;
result |= l;
return result;
}
Код примера:
Код:
static esp_err_t i2c_example_master_read_slave(i2c_port_t i2c_num, uint8_t* data_rd, size_t size) { 
 if (size == 0) { 
  return ESP_OK; 
 } 
 i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 
 i2c_master_start(cmd); 
 i2c_master_write_byte(cmd, ( ESP_SLAVE_ADDR « 1 ) | READ_BIT, ACK_CHECK_EN); 
 if (size > 1) { 
  i2c_master_read(cmd, data_rd, size - 1, ACK_VAL); 
 } 
 i2c_master_read_byte(cmd, data_rd + size - 1, NACK_VAL); 
 i2c_master_stop(cmd); 
 esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); 
 i2c_cmd_link_delete(cmd); 
 return ret; 
}
Код ошибки 263. Что я делаю не так?
Та же тема на англоязычном форуме: RDA5807M gets i2c commands but ESP32 cannot read (i2c null address error) - ESP32 Forum
 
Сверху Снизу