## RW007 藍牙游戲手柄
- 聽說RW007支持BLE啦,于是想制作一個藍牙游戲手柄,玩一下游戲模擬器,找回童年的樂趣!
- 設計雛形,一塊開發板,然后杜邦線連接,發現問題,有點費手!插針扎手啦。
- 果斷放棄,免費PCB打樣中,重新設計一款。
- PCB到了,還沒來及焊接,先上個諜照吧!
- 主控芯片信息
| 參數 | 敘述 |
| ------ | ------ |
| 型號 | FR8012乞丐版 |
| 版本 | 藍牙5.1 |
| 內核 | cortex-m3 |
| 時鐘頻率 | 48Mhz |
| RAM | 48K |
| FLASH | 256KB |
| 封裝 | SOP-16 |
| 系統 | rt-thread 民間移植版 |
- 技術難題
這個藍牙游戲手柄,其實藍牙通訊,如何匹配倒沒有花費很多的精力,或許因為通訊那部分比較成熟,拿過來使用就可以了。另外得到了大佬的指導,順利的調通了無線通訊協議部分。主要遇到的難點是引腳不夠,比較緊張。如圖:
1 PA2,PA3燒寫調試,無法做按鍵輸入使用。PASS。
2 采用ADCKEY方式,分析因為手柄支持組合按鍵,該方案pass。
3 剩下5個引腳,其中PD4,PD5做搖桿ADC通道采集使用,只剩下3個GPIO了,PC6,PC7,PD5.如果對地設計按鍵,只能設計3個了.
4 游戲手柄除去4個方向鍵,目測還有select,start,A,B,AA(連發),BB(連發)6個鍵值。
4 有點腦瓜疼!誰讓我們用的是SOP-16封裝呢?想辦法,辦法總比困難多。這3個GPIO分別ADC0,ADC1做矩陣,時分復用能否可行?
5 細思量后發現一個極其恐怖的問題,手柄是支持組合按鍵的,如果玩家方向鍵與A鍵同時按下,會發生很嚴重的過流問題。是堅決不能允許的。
6 串聯過流電阻,解決了問題。
- 工作原理
1 先將5個引腳關閉上拉,配置輸入方向,配置ADC0,ADC1,獲取4個方向數值。adc關閉轉換結束。
2 將5個引腳配置GPIO,并且上拉有效。
2.1 配置PD4方向為輸出,并且輸出0.
2.2 分別讀取PC6,PC7引腳電平值,作為SELECT,START鍵值.
2.3 配置PD4方向輸入,上拉有效,配置PD5方向輸出,并且輸出0
2.4 分別讀取PC6,PC7引腳電平值,作為AA(連發),BB(連發)鍵值.
2.6 配置PD5方向輸入,上拉有效,配置PD6方向輸出,并且輸出0
2.7 分別讀取PC6,PC7引腳電平值,作為A,B鍵值.
2.8 配置PD6方向輸入,上拉有效。J結束。
- 焊接成品
[視頻:]oss-club.rt-thread.org/uploads/20210724/7b92d8479847445e46886d6b3ece25a6.mp4
|