這個工程準確的時間是從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. 加入內存管理代碼(這里直接使用正點原子的代碼) 播放效果:這里沒有寫什么復雜的界面(關鍵是下一步的考慮用不到)
工程文件已經通過附件的形式上傳內容包括如下:
0.png (38.3 KB, 下載次數: 85)
下載附件
2020-7-15 03:09 上傳
工程所有的代碼可以通過我個人的博客找到鏈接
游客,本帖隱藏的內容需要積分高于 1 才可瀏覽,您當前積分為 0
PCB工程文件51hei下載地址:
MP3_Player.zip
(9.73 MB, 下載次數: 29)
2020-7-14 17:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|