您的位置:首页 > 其它

基于Kinetis的KL系列之Cortex-M0的WAV音频播放器——系统设计(1)

2014-07-09 14:34 190 查看
一直想找个机会接触并使用飞思卡尔的KL系列来做一个小东西,对该Cortex-M0单片机 达到熟练运用的程度,从而能够使之在项目中得到推广,因为飞思卡尔的东西质量还是值得称赞的(虽然我司的FAE支持奇差无比,但还是难以抵挡其性价比高得诱惑

,另外目前飞思卡尔对于样片放开申请,很容易就能申请到也是其中之一的原因)

第一是确定功能,目前构思如下:

控制MCU: 初步选择MKL26Z256VLH4,具有以下资源

RAM: 32KB(按照以前做过WAV播放器,大概44.1kbps/16bit 音频数据时 系统耗费大概7KB内存左右,选了个这么大的,可以考虑软件MP3,或者做一个简单的GUI)

Flash:256KB(感觉如果存中文字库,貌似还不够啊,到时候看能不能压缩 选择个1000个常用汉字)

SPI: 2个(应该够了,SD卡需要独占一个SPI(因为有片选高发送DUMMY的操作,以前挂了2个是不是 软件写得有问题没操作起来),另外就可以挂很多SPI外设,用不同片选区分,
目前能想到的有SPI_LCD, SPI_Flash(存字库->或者不用)

UART: 3个,够用了,一个debug,另外一个用作命令解析

USB Device: 1个,用来将设备枚举成U盘

触摸按键:4个,刚好这个是KL系列的特色,一定得用上,作为播放器的功能按键

音量按键:2个,根据以往做过WAV播放器的经验,没有音量按键简直用得生不如死

音频DAC:最好选一款SNR高又集成耳放的,原先使用过WM8978,PCM1770,音质都一般,感觉缺少点味道。最后确定使用CS43L22(STM32F4 discovery,音质堪称完美
(对于木耳朵)),查了下手册,发现时I2C控制接口,我一直觉得这个控制接口不是很好,由于要ACK,使得速度上不去,有点鸡肋的味道,本人比较喜欢SPI的控
制接口,从设备少的时候,SPI首选。不过这次也可,看一下飞思卡尔的I2C是不是要好过STM32的

存储介质:TF卡,SPI Flash(备选,PCB作图时要画上去,用不用另说)

锂电池充放电:TP4057(国产神器)

LCD: 选一个小点阵的,作为文件浏览或者Debug输出,初步选用amobbs 论坛 Shanyan 送的那个小屏,插入图片一张,见下面



第二是需要考虑DAC的MCK选择方式

由于该DIY主要还是以熟悉运用KL26的MCU为主要目的,由于48KHZ和44.1kHZ的时钟不兼容,导致满足一种,另外一种就要有偏差,所以采用24M或12M 有源时钟作为MCK的输入时钟,当然KL26输出MCK也需要作为备用连接到DAC(网上相传主设备的时钟由于是经过PLL以后再分频输出,导致Jitter过高,到现在还是将信将疑的,由于没有专业设备测试验证,一直持保留态度)

第三是得考虑KL26的驱动支持问题

由于飞思卡尔的官网无相应底层库的支持,所以只能从官方外设例子中找相关驱动,这下又得去弄寄存器了(最没有技术含量的事情)

DAC的驱动 可以挖 STM32F4 Discovery里,应该会有,以下缕一下驱动的准备情况

(1)KL 时钟配置(深挖KL例子)

(2)GPIO驱动(深挖KL例子)

(3)SPI驱动(深挖KL例子)

(4)UART驱动(深挖KL例子)

(5)I2C驱动(深挖KL例子)

(6)DAC驱动(深挖STM32F4 Discovery例子)

(7)LCD驱动 (现成,amobbs坛友提供)

(8)播放器应用(现成,自己编写)

(9)调度器 (现成 使用protothread)

(10)界面框架(需要学习费点时间)

(11)U盘应用(需要确认飞思卡尔有没有例子,不然有点费时间)

(12)上位机控制界面(待决定)

总结,综上所述,该小制作的主功能实现成功率达90%以上,当然U盘和LCD界面可能会对自己的积累有很大的提升(因为以前没做过界面而且U盘很多时候没深挖,只使用库成功读写而已)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐