飞凌嵌入式FET1052-C解决方案 实现7.1声道FLAC播放器
[复制链接]
原文链接:http://www.forlinx.com/zixun/268.htm 本文介绍了采用飞凌嵌入式FET1052-C核心板快速的实现7.1声道FLAC播放器。核心板CPU采用i.MX RT1052,具备528MHz的主频,其Arm Cortex-M7核心支持三个SAIs和SAI1有四个传输(TX)数据线,支持7.1环绕声数据传输。CPU的高性能和四线SAI为本方案的实现提供支持。 i.MX RT1052是NXP i.MX RT1050系列跨界处理器中性价比较高的一款,所谓跨界指的是其兼具MPU的高性能和MCU的低功耗与实时性。 1、i.MX RT1052 SAI特性介绍•具有独立位时钟和帧同步的发送器,支持四条数据线。 •接收器与独立位时钟和帧同步,支持四数据线。 •每个数据线支持最大32字的帧大小。 •字大小从8位到32位可编程。 •帧的第一个字和其余字大小分别可配置。 •每个传输和接收数据线支持异步32×32位FIFO。 •支持在FIFO错误后自动重启,无需软件干预。 •支持将8位和16位数据打包到每个32位FIFO字中。 •支持将多数据线FIFOs组合成单数据线FIFO。 2、FLAC解码FLAC(Free Lossless Audio Codec)是一种类似于MP3但无损的音频格式,这意味着FLAC中的音频压缩没有任何质量损失。 我们所说的FLAC是自由(free)的不仅仅意味着你可以不花钱而得到它。更重要的是FLAC的文件格式是对公众完全开放的,你可以以任何目的使用它(FLAC 项目只FLAC保留维护 FLAC 格式规格和确认兼容特性的权利),FLAC的文件格式和编码/解码的实现方式都不受任何已知专利的限制。还有,所有的源代码都在开放源代码的授权方式下可以得到。它是第一个真正开放和免费无损音频格式。 八个频道分配是:前左、前右、前中、LFE、后左、后右、左、右。 FLAC在i.MX RT1052上的解码完全是通过软件实现的。 3、方案实现 3.1硬件实现原理图1 7.1声道系统架构 RT1052核心板从SD卡和USB解码FLAC文件并将数据传输到SAI1, SAI1有四条传输数据线(一条数据线包含两个数据通道)。然后,Codec芯片CS42448 获取4个数据线和时钟来处理数据并使用DACs向后级功放传输8个声道的模拟音频信号。 笔者带着大家来熟悉使用PINMUX表选择核心板上的引脚,用于制作原理图。 首先打开“**_PINMUX.xlsx”文件,表头中Pin Name是引脚的名称,用这个名字可以从i.MX RT1052 CPU手册中找到关于引脚的详细说明;Coords是CPU的球号坐标;Alt0~7是引脚的8种功能描述。 那么我们以本文中最关键的SAI1功能做示例,从表中可以找到支持4个数据线的SAI1,如下图2: 图2 根据这些CPU球号,就可以在飞凌提供的OK1052-C底板原理图中找到这些引脚在底板连接器上的位置(如图3),不过可以发现,这几个引脚已经被QSPI所占用,而QSPI在核心板上用做了QSPI的ROM,所以不建议使用这几个引脚了。 图3 换一组其它引脚,可以找到另外一组支持4 TX线的SAI1引脚,如下图: 图4 同样的方法,可以在OK1052-C底板原理图中找到引脚所在位置,通过图5可以看出,目前飞凌默认配置的是LCD的功能,但是本方案用不到LCD,可以将其用于SAI1的。 图5 按照表格中引脚功能名称,修改原理图标号如下: 图6 其它引脚的配置也是同样的方法,如果所用功能和飞凌OK1052-C底板一致的,可以不修改其功能引脚位置,这样也便于程序的修改、开发。 3.2软件实现流程
S1、CPU、功能引脚和时钟初始化,如USDHC、USB、IIC和SAI。 S2、看门狗初始化,以防止程序错误。 S3、使用IIC实现CS42448编解码器的初始化和配置。 S4、创建和初始化一个新的FLAC流解码器。 S5、检测FLAC文件的信息以配置SAI TX。 S6、解码过程中的音频回放。 S7、当一个音频文件结束,下一个文件开始(到步骤4)。如果SD卡上的所有文件都播放完成后,从头播放音频。 4、附件说明4.1:《Sch》文件夹,参考原理图源文件。 4.2:《CDB42448_DB2.pdf》CS42448评估板参考手册 4.3:《CS42448_F5.pdf》CS42448芯片手册 4.4:《FET1052-C&FLAC7.1player_PINMUX.xlsx》FET1052-C核心板引脚配置表 附件下载地址:
|