这个工程准确的时间是从2019 8初开始的,中间很多事耽搁,一方面是做这件事本身不太重视吧,感觉简单,可能只是做一个板子,但是硬件的事谁知道呢(就像我有同学说,昨天刚还好的代码 今天就不行了),我遇见的大多数情况,其实是自己不用心所致,所以呢我希望把这些经验分享出来,如果对你有触动,想必也会减少你的损失。 由于这里时间有限,有些工作做得不是很细致,像是原件的选用,某些驱动的移别人写的比较乱这里就也就直接拿来用了。另外呢由于每个人的习惯不 同,代码的风格也会有较大的差异所以,整体的代码风格可能不是很一致,这里希望读者能够理解。 首先看一下我初始时候的构想: 大概的形式如下 其 实这个和最终的实物的排版方式已经很接近了,除了没有加电源模块,lcd也最终放弃了横屏,由于驱动的管脚有限所以就没有选用需要驱动管脚较多的横屏 LCD,而是选用SPI的LCD,这样省下了不少的管脚可以利用(最终貌似没有用到),mcu也放弃st32f103c8t6(64K flash)专用引脚数更多的身体stm32f103rgt6(1M flash),储存更大便于集成FAT,和更多的调试框架(直接用正点原子的usmart之类的)。
外置接口: Uart SWD 耳机口 microusb(或可以用于USB通信) microSD 集成的功能如下 外设最终没有集成FM和蓝牙,相信以后的工程会集成更多的功能。 起初我的设想就是直接开源,可能大家对整个项目感兴趣很少,但是,pcb原理图,或者是驱动代码等总会对大家有帮助你的。 原件的选择 由于这里还是在验证阶段,原件选用的原则就比较的随意了,不用考虑原理图,pcb布线事(最后发现这里是一个大坑),这里其实主要的选择是 LCD的尺寸,以及解码芯片的选择,由于是市场上有很多的解码芯片,有的甚至直接插上内存卡都可以播放歌曲例如BY8001-SSOP24(淘宝有卖), 但是这里希望能够编程,并且获得更多的功能,所以这些芯片是放弃的,另外屏幕的尺寸选择主要兼顾显示和性能,象stm32f1系列主频不是很高的,越大的 屏幕刷新一次的时间就越长,这样对其他硬件的影响就比较大。最终选择如下: (以上也算的打广告了了吧,关键是我没有网店啊) LCD使用2寸屏(178*200)主要是2.4寸有点大,1.8又感觉很小折中之举吧。 解码芯片使用VS1053B:这个可以直接给音频数据然后直接播放直接减轻了mcu的压力。
关于flash我不知道很早的的时候买了两个W25Q128所以这直接就选用了(还是16脚的),虽然有点占地方但是驱动简单就直接上了。
管脚的分配 这次的的管脚的分配是根据最小系统板的管脚进行配置的(之后发现真傻,只是方便了初期的验证),最小系统板的资源分配如下:
管脚分配如下:
验证板将会在电路模拟中展开。 电路的模拟 初期只是为了验证驱动能力所以还是在stm32f103c8t6上做验证,可能你会问这么简单还要做验证?关键是我真的没有经验,不论是电源 的选用还是管脚的驱动的问题,最终验证还是发现了一些管脚驱动能力的问题,所以在管脚分配的时候标记出来,防止画原理图的时候分配管脚出问题。下面是验证 板的样子:
由于是手动焊接的样子确实有点挫, 二期工程里主要包含的是原件的选择(更为细致),原理图,PCB,封装图库的完成以及第一次打样测试(这个真的是第一次打样的经历)过程,由于 当时没有录制视频,现在手里的只有一堆的电路,器件的手册材料,以及驱动代码等。 貌似我github上传的是这期的工程如果你要参考的话,我会在GitHub上更新然后区别一下版本,以及工程记录文件。
原件的选择(细分)下面是有关器件的选择以及图片型号以及原件来源: 电阻以及电容的选择: 晶振:3.726kHz 8MHz 12.228Hz Mcu:stm32f103rgt6(1M flash 72MHz ) 解码芯片:VS1053B 储存:MicroSD LCD:2.0寸 按键:方形按键 LED:直接使用小的led是 耳机孔: 其他杂项: 原理图及封装图下面只是一些展示如果想要所有的文件工程的话呢请到文章的末尾找到笔者在GitHub上上传的文件。 LED: MicroSD: 耳机孔:
注重原理而不是电路的连接,另外多的是使用功能而不是电路的具体电流电压属性,由于数字的路的工作电压的范围变动允许值还是比较大的,所以这 里除了对电源于有要求外其余大要求不是太大,这里的电源包括了mcu的电源,LCD电源(由于LCD的背光是耗电比较大的),还有就是对于VS1053B 的专门的电源,包括1.8v的以一个IOVCC(通过电阻分压大概3.0v)。 其实在这里比较困难的是我不确定原子给的原理图是否可以直接用,但是由于他们出了模块所以这里就直接使用了一些电路配置,本工程没有使用外放 说以电路上又有一些改进,这里在Vs1053B的配置过程中有一个管脚让我比较长困惑的是它的功能,那就是GRUND,手册上说在不使用的时候不能接地, 但是在网络上查找相关的资料以后得到的结果是,其实这是耳机的公共地,也就是耳机的地线。 下面是我电路的配置。 电源(供电给MCU 以及其部件):通过AMS1117-3.3将5V的USB输入转换成3.3V供电 (3.3V的滤波电解电容改为了220uf普通电容)
LCD及供电: (这里注意图中BlackLight+最终的限流电阻更改成了27R,3.3V的滤波电解电容改为了220uf普通电容)
MCU电路配置: (我已经最大限度保持清晰了,想看原理图的话还是在文章末尾在GitHub上找吧!)
W25Q128以及MicoSD电路配置: (开始的时候我还以为MicroSD对电压比较敏感呢,这里其实就几个上拉电阻而已)。 Key(按键): 这里的配置其实没有加消抖电容,这是由于最终的排版的位置不够索性就去掉了软件处理一下问题其实不大。
UART与SWD(仿真下载):uart这里没有考虑到使用的特殊情况直接没有任何的限制,然后外接一个ch340用于调试,swd则是借鉴jtag的接法接的。
这就是一个jtag下载器的接法由于我用的是swd的下载方式其他无用的线路也就按照这里的接法拉高了。
具体的接法 重点来了这里是VS1053B的电路配置 VS1053B:包括VS1053B芯片周围电源以及耳机接口
电源1.8V: 耳机接口: 好了就是所有的电路配置了,下面是一张全图,很模糊的还是看我上传的工程文件吧。
中间其实除了很多的状况,这才是小白吧,不过初期遇到问题越多也越好,这一样以后遇到类似的问题解决问题的能力就能够体现出来了,写代码也一 样啊,所以呀,一个问题出来你还不会解决的时候就是你最好的学习机会。虽然这样的经历是不是很友好的甚至你还会反感但是现实不就是这样么。
在下面直接就是PCB图了(貌似我github上传的是这期的工程图) PCB:
以上就是最终的PCB的样子了。但是这里的的问题是: 1.屏幕接线的尺寸画错了,本来0.4mm的尺寸我画成了0.8mm以上了。 2.没有关注高频的线路的设计,也就是下图的地方,下方直接就从晶振的下方穿过去了。
商家的选择 其实这里商家的选择很简单,便宜就行,我开始的时候还专门整理一下价格以及他们的制程等,例如: 其实不必要这样,你只要保证你的你的PCB线宽大于8mil,线距也大于8mil(因为大部分线距为6mil),过孔大小大于8mil就好了,这三个条件其实我不用怎么调整对于我这样的工程完全没问题。 另外第一次打样我就被坑了,人家说50块(打印10片)我就给了,记住啊,普通10cm*10cm的板子1-10片都是30块(普通价格,绿油的)。所以直接一次打印10片就好了。 工程打样由于我第一次画板子所以直接翻车,下面是图:
我主要说我第一次板子的问题: 1. 布线问题 有 注意到的是晶振和背面的信号干扰的问题所以这里直接无法驱动,要不是晶振干扰到了信号线或者反之,怎么说吧,画图之前确实考虑的好好的检查完的时候真是觉 得这第一次打样就这样(而且还被坑了20块,8cm*5cm居然问我要了50,第二次打样花了30),还有就是Uart串口布线反了(Rx,Tx反了)这 不是太大的问题改一下布线就行。 2. LCD接口: 本着把所有的原件检查了一遍的原则,还是没有防止自己犯这种错误简直了,把封装的尺寸画错了,管脚间距直接扩大了一倍多,当时拿回来整个心情就不好了,但 是为了检验线路正确还是焊上去了原件。 3. 晶振布局问题(重要) 这个地方是很容易犯的,没做过电路,还没人带过很容易犯这种错误,在高速电路中要避免晶振下面过线,而且尽量顶层与底层走线靠近时不要平行,这些都是一般 的规则,此次的布线本着的原则是很简单的直接将所有的器件连接到位能工作就万事大吉。 重画PCB再次打样 更改晶振的背部干扰的问题 实物图如下: 更改驱动(出现的问题): 这里主要是LCD的驱动,顺便说一下驱动LCD的步骤: 1. 初始化驱动管脚如:CS RESET,D/C之类的,SPI或者FMSC。 2. 向LCD写驱动代码 3. 你可以写一个设置背景色为白色(用以验证) 集成文件系统1. MicroSD卡的准备 2. 更改diskio的底层驱动 3. 加入内存管理代码(这里直接使用正点原子的代码) 播放效果:这里没有写什么复杂的界面(关键是下一步的考虑用不到)
工程文件已经通过附件的形式上传内容包括如下:
工程所有的代码可以通过我个人的博客找到链接
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
PCB工程文件51hei下载地址:
MP3_Player.zip
(9.73 MB, 下载次数: 29)
|