完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用ESP-IDF 4.3.1和ESP-IDF 4.0.2测试过,一个ESP32作为主机,一个ESP32作为从机进行I2S通信,主机接收数据,从机发送数据。现在问题是从机设置Code: Select all
i2s_config_t i2s_config = { .mode = I2S_MODE_SLAVE | I2S_MODE_RX, .sample_rate = SAMPLE_RATE, .bits_per_sample = 32, .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, //2-channels .communication_format = I2S_COMM_FORMAT_STAND_MSB, .dma_buf_count = 6, .dma_buf_len = 60, .use_apll = false, .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1 //Interrupt level 1 }; 从机设置bits_per_sample 为32的情况下,从机是无法向主机发送数据的(我用逻辑分析仪抓取过数据取验证确实没有数据)。 |
|
相关推荐
1个回答
|
|
在ESP32上使用I2S通信时,如果从机设置bits_per_sample为32位,但无法向主机发送数据,可能的原因有以下几点:
1. **I2S配置错误**:首先,确保I2S配置正确。在您提供的代码片段中,`i2s_config`结构体的`.mode`字段设置为`I2S_MODE_SLAVE | I2S_MODE_RX`,这意味着从机应该接收数据,而不是发送数据。如果您想要从机发送数据,应该设置为`I2S_MODE_SLAVE | I2S_MODE_TX`。 2. **采样率设置**:您提供的代码片段中`.sample_rate`字段的值是`SAMP`,但这个值没有给出具体的数值。确保采样率设置正确,并且与主机的采样率一致。 3. **数据位宽设置**:在`i2s_config`结构体中,`.bits_per_sample`字段应该设置为32,表示每个样本32位。确保这个值已经正确设置。 4. **I2S初始化**:确保在配置I2S之后,您已经正确初始化了I2S接口。使用`i2s_driver_install()`函数来安装I2S驱动。 5. **数据发送逻辑**:检查您的代码中是否有逻辑错误,例如在发送数据之前没有正确地准备数据缓冲区,或者在发送数据时没有正确地调用I2S发送函数。 6. **硬件连接**:检查硬件连接是否正确,确保I2S数据线和时钟线连接正确,并且没有硬件故障。 7. **ESP-IDF版本差异**:您提到使用了ESP-IDF 4.3.1和ESP-IDF 4.0.2进行测试。虽然这两个版本应该在功能上相似,但可能存在一些细微的差别或bug修复。确保您的代码与ESP-IDF版本兼容。 8. **中断和DMA配置**:如果使用中断或DMA进行数据传输,确保这些配置正确,并且中断服务程序或DMA回调函数能够正确处理数据。 9. **调试和日志**:使用ESP-IDF的调试工具来检查I2S通信过程中的任何错误或异常情况。查看I2S相关的日志输出,以获取更多关于问题的信息。 10. **电源和时钟问题**:确保ESP32的电源稳定,并且时钟配置正确,因为这些问题可能会影响I2S通信。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:12 , Processed in 0.827609 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号