• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь 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
 
Сверху Снизу