完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
是否有关于 I2S 驱动程序缓冲区处理和状态回调的描述?我正在将一个音频处理项目从 Kinetis 移植到 LPC55S69,在 Kinetis 上我使用的是我自己的 I2S DMA 驱动程序,我需要弄清楚我的驱动程序的哪些部分可以用 MCUX SDK 驱动程序替换——或者我是否应该跳过它并使我自己的驱动程序适应新硬件。
从我从稀疏的 SDK 文档中可以看出,驱动程序似乎有一个队列需要 I2S_NUM_BUFFERS (4) 个条目。它没有提到任何大小限制,所以我假设队列只接受四个指针。 所有提供的示例项目仅使用一个固定缓冲区。他们会连续两次对同一个缓冲区进行排队,以避免播放中出现间隙,但他们没有说明如何管理多个缓冲区。环回示例让发送方和接收方使用相同的缓冲区,因此内容在变化,但没有任何类型的同步机制——它们只是依赖于两者同步同步并且永远不会暂停或经历去同步化这一事实。演示仅更改内容,而不更改发送的缓冲区,这对于大多数实际应用程序来说是不安全的。 有一个 i2s_transfer_callback_t 的回调,它提供了一个类型为 status_t 的参数“completionStatus”,但是 status_t 只是类型定义为 int32_t,没有它可以返回的值的文档。 有 一个[i]带有BufferComplete、Done 和 Busy 值的匿名枚举 - 但没有明确说明这些在回调中使用。我假设这些是 status_t 的值,BufferComplete 表示已发送单个缓冲区,而 Done 表示所有缓冲区都已完成。最好提前知道最终缓冲区是同时生成 BufferComplete [i]和Done,还是只是 Done。 这是在基本 I2S 驱动程序中提供的。在 I2S_DMA 驱动程序中有一个单独的 I2S_DMACallback。手册中似乎根本没有记录。从代码来看,这似乎完全是 ISR 使用的内部函数。那是对的吗?有什么方法可以在 SDK 文档中区分什么是导出函数,什么只在内部使用?或者,如果不相关,可能完全排除内部内容? 我假设完成回调发生在 DMA 传输完成时?还是I2S FIFO清空时有回调?我的应用程序通常不会连续发送音频,因此我需要知道何时在不切断最后一次传输的情况下关闭 I2S 发射器。(感谢硬件设计师让您选择空闲的 I2S 发送器是发送零还是重复最后一个值——这是真正让事情变得更容易的小改动之一。我的应用程序需要这两种方式。) |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1936个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36433 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
5073 浏览 1 评论
6118 浏览 1 评论
6822 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4255 浏览 0 评论
655浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
646浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
647浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
738浏览 2评论
853浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 07:41 , Processed in 1.397180 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号