完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
产品采用i2s adc+dma来采集周期性的模拟信号,程序在上电启动后即对其进行初始化:
esp_err_t err; i2s_config_t i2s_config = { .mode = I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_TX | I2S_MODE_ADC_BUILT_IN, .sample_rate = I2S_SAMPLE_RATE, .bits_per_sample = I2S_SAMPLE_BITS, .communication_format = I2S_COMM_FORMAT_STAND_MSB, .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, .intr_alloc_flags = 0, .dma_buf_count = 2, .dma_buf_len = 1024, .use_apll = 1, }; //install and start i2s driver err = i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL); ESP_LOGI("load", "init step 1: %d", err); vTaskDelay(2000 / portTICK_RATE_MS); err = i2s_set_adc_mode(I2S_ADC_UNIT, I2S_ADC_CHANNEL); ESP_LOGI("load", "init step 2: %d", err); err = i2s_adc_enable(I2S_NUM); ESP_LOGI("load", "init step 3: %d", err); 同时产品具有软件重启的功能,某些情况下将调用esp_restart(); 经过测试,esp_restart()重启后,有一定的概率出现i2s adc读出的值一直为0,此现象将一直持续,置到esp32通过硬件复位,期间无论触发多少次esp_restart()重启也无法恢复。 |
|
相关推荐
1个回答
|
|
根据您的描述,您在使用ESP-IDF v4.4.2时遇到了软复位可能导致I2S ADC工作不正常的问题。以下是一些建议来解决这个问题:
1. **更新ESP-IDF版本**:首先,确保您使用的是最新版本的ESP-IDF。有时候,问题可能是由于软件中的已知错误导致的,而这些问题可能在新版本中已经得到修复。 2. **检查初始化顺序**:确保在软复位之前,I2S和ADC的初始化顺序是正确的。有时候,错误的初始化顺序可能导致硬件工作不正常。 3. **使用中断或事件**:在软复位后,使用中断或事件来重新初始化I2S ADC。这样,您可以确保在软复位后,硬件能够正确地重新配置。 4. **检查电源管理**:确保在软复位过程中,电源管理设置正确,以避免对I2S ADC的电源供应产生影响。 5. **使用错误处理机制**:在初始化I2S ADC时,添加错误处理机制。如果初始化失败,程序可以采取相应的措施,例如重试初始化或报告错误。 6. **检查硬件连接**:确保I2S ADC和相关硬件的连接正确无误。有时候,硬件连接问题可能导致工作不正常。 7. **查看日志和调试信息**:在程序中添加日志和调试信息,以便在出现问题时能够快速定位问题所在。 |
|
|
|
只有小组成员才能发言,加入小组>>
1143 浏览 1 评论
578浏览 6评论
479浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
463浏览 5评论
464浏览 4评论
440浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:50 , Processed in 0.799679 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号