上一篇帖子地址:
https://www.hellocq.net/forum/read.php?tid=376181這一篇帖子繼續學習寶峰UV-5RH的部分外設及驅動編寫。
一、LED燈:
背光:PA4,H點亮L熄滅。
紅燈:PA13,H點亮L熄滅。
綠燈:PA14,H點亮L熄滅。
手電筒:PF7,H點亮L熄滅。
二、LCD屏(型號ST7735):
SCL:PB13,時鐘綫。
SDA:PB15,數據綫。
RESX:PB12,復位信號。
CS:PB2,片選信號。
DCX:PB14,數據與命令信號。
三、Flash存儲(型號XMC 25QH16CJIG,16Mbit,即2M Byte,即 2 *1024 * 1024 字節)
SF_CLK :PA5
SF_MISO :PA6 //主機輸入,從機輸出
SF_MOSI:PA7 //主機輸出,從機輸入
SF_CS:PA8
根據分析,Flash中包含 信道、各種圖標、開機畫面、各種參數配置、貌似還有漢字字庫文件,大家可以一起來分析解析出來。
讀取到的Flash文件:
四、射頻芯片(型號BK4819)
BK4819_SCL:PA2
BK4819_SDA:PA3
BK4819_CS:PC13
五、收音機芯片(型號RDA5807)
RDA5807_SDA :PA3
RDA5807_SCL:PC15
六、矩陣鍵盤
KEY_PTT:PA10(這個與串口RXD共用)
SIDE下:PA15
行綫:PB11、PB8、PB9、PB10
列綫:PB3、PB4、PB5、PB6
思路一:行列扫描法
列线(PB3、PB4、PB5、PB6)为上拉输入口,行线(PB11、PB8、PB9、PB10)为输出口(默认H电平)。
行线PB11(H电平)、PB8(H电平)、PB9(H电平)、PB10(H电平)时
如果PB3检测到低电平,那么【A/B】按键按下了。
如果PB4检测到低电平,那么【V/M】按键按下了。
如果PB5检测到低电平,那么【扫频】按键按下了。
如果PB6检测到低电平,那么【SIDE上】按键按下了。
行线PB11(L电平)、PB8(H电平)、PB9(H电平)、PB10(H电平)时
如果PB3检测到低电平,那么【A/B】按键按下了,或【上】按键按下了。
如果PB4检测到低电平,那么【V/M】按键按下了,或【下】按键按下了。
如果PB5检测到低电平,那么【扫频】按键按下了,或【菜单】按键按下了。
如果PB6检测到低电平,那么【SIDE上】按键按下了,或【取消】按键按下了。
行线PB11(H电平)、PB8(L电平)、PB9(H电平)、PB10(H电平)时
如果PB3检测到低电平,那么【A/B】按键按下了,或【数字1】按键按下了。
如果PB4检测到低电平,那么【V/M】按键按下了,或【数字2】按键按下了。
如果PB5检测到低电平,那么【扫频】按键按下了,或【数字3】按键按下了。
如果PB6检测到低电平,那么【SIDE上】按键按下了,或【星号】按键按下了。
行线PB11(H电平)、PB8(H电平)、PB9(L电平)、PB10(H电平)时
如果PB3检测到低电平,那么【A/B】按键按下了,或【数字4】按键按下了。
如果PB4检测到低电平,那么【V/M】按键按下了,或【数字5】按键按下了。
如果PB5检测到低电平,那么【扫频】按键按下了,或【数字6】按键按下了。
如果PB6检测到低电平,那么【SIDE上】按键按下了,或【数字0】按键按下了。
行线PB11(H电平)、PB8(H电平)、PB9(H电平)、PB10(L电平)时
如果PB3检测到低电平,那么【A/B】按键按下了,或【数字7】按键按下了。
如果PB4检测到低电平,那么【V/M】按键按下了,或【数字8】按键按下了。
如果PB5检测到低电平,那么【扫频】按键按下了,或【数字9】按键按下了。
如果PB6检测到低电平,那么【SIDE上】按键按下了,或【井号】按键按下了。
结论:传统的行列扫描法,解决不了列线冲突问题。
這裏需要大家發揮聰明才智,想一個最佳的矩陣鍵盤解析算法。
七、串口
TXD:PA9
RXD:PA10(這個與PTT按鍵共用了)
八、各種外部中斷(這個尚未調試,未完待續)
目前調試的源程序: