STM32MP157資源擴(kuò)展板驅(qū)動(dòng)移植篇3:擴(kuò)展板數(shù)碼管控制

寫在前面:
本文章為《STM32MP157資源擴(kuò)展板驅(qū)動(dòng)移植篇》系列中的一篇,筆者使用的開發(fā)平臺(tái)為華清遠(yuǎn)見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。資源擴(kuò)展板是FS-MP1A開發(fā)板的擴(kuò)展模塊,主要包含了10余種主流傳感器、執(zhí)行器件、總線控制器件,非常方便項(xiàng)目擴(kuò)展用。可拓展開發(fā)智慧家庭、智能醫(yī)療、智能安防、工業(yè)控制、圖像識(shí)別、環(huán)境檢測等方向的10個(gè)左右綜合項(xiàng)目,華清遠(yuǎn)見開發(fā)板也將配套提供所有項(xiàng)目的說明文檔、實(shí)驗(yàn)源碼、應(yīng)用程序等資料。
針對(duì)FS-MP1A開發(fā)板,除了資源擴(kuò)展板驅(qū)動(dòng)移植篇外,還包括其他多系列教程,包括Cortex-A7開發(fā)篇、Cortex-M4開發(fā)篇、FreeRTOS篇、Linux應(yīng)用開發(fā)篇、Linux系統(tǒng)移植篇、Linux驅(qū)動(dòng)開發(fā)篇、硬件設(shè)計(jì)篇、人工智能機(jī)器視覺篇、Qt應(yīng)用編程篇、Qt綜合項(xiàng)目實(shí)戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。
FS-MP1A開發(fā)板詳情介紹:
https://item.taobao.com/item.htm?id=622457259672
資源擴(kuò)展板介紹
硬件介紹

資源擴(kuò)展板可開發(fā)項(xiàng)目

2. 擴(kuò)展板數(shù)碼管控制
2.1.實(shí)驗(yàn)原理
打開擴(kuò)展板原理圖對(duì)照擴(kuò)展板可以看到擴(kuò)展板上四位數(shù)碼管原理圖如下:

由圖中可以確定數(shù)碼管為共陰極數(shù)碼管,DS_A、DS_B、DS_C、DS_D、DS_E、DS_F、DS_G、DS_DP分別對(duì)應(yīng)數(shù)碼管的每個(gè)段,對(duì)應(yīng)管腳為高電平時(shí)對(duì)應(yīng)的部位會(huì)被電量,因?yàn)橹挥幸唤M數(shù)據(jù)信號(hào),但是有四個(gè)數(shù)碼管,所以需要通過控制DS_G1、DS_G2、DS_G3和DS_G4選擇某個(gè)數(shù)碼管顯示內(nèi)容,然后通過輪詢刷新讓四個(gè)數(shù)碼管正常顯示。


M74HC595是一個(gè)傳入并出的移位寄存器,如果有多個(gè)芯片級(jí)聯(lián)也可串行輸出控制下一級(jí)芯片,QA~QH為并行輸出,QH’為串行輸出;如果本例四個(gè)LED數(shù)碼管由兩個(gè)M74HC595控制,第一級(jí)控制數(shù)碼管顯示什么,第二級(jí)控制哪個(gè)數(shù)碼管顯示。

根據(jù)上述描述在編寫驅(qū)動(dòng)是可以通過GPIO模擬74HC595的時(shí)鐘完成控制,因?yàn)?4H595時(shí)序和SPI時(shí)序兼容,所以也可通過SPI控制器控制74HC595。

74H595部分時(shí)序

SPI時(shí)序(CPHA=0 CPOL=0)

擴(kuò)展板與底板接口對(duì)照?qǐng)D
查看芯片手冊(cè),管腳對(duì)應(yīng)關(guān)系如下:

2.2. 實(shí)驗(yàn)?zāi)康?/p>
了解M74HC595移位寄存器
學(xué)習(xí)SPI協(xié)議的使用方法,掌握如何利用STM32MP157A芯片控制顯示數(shù)碼管
2.3. 實(shí)驗(yàn)環(huán)境
FS-MP1A開發(fā)平臺(tái)
ST-Link仿真器
STM32CubeIDE開發(fā)軟件
PC機(jī) XP、Window7/10 (32/64bit)
2.4. 實(shí)驗(yàn)步驟
打開STM32CubeIDE,配置CubeMX。
根據(jù)21.1節(jié),使用的是SPI默認(rèn)引腳,分別對(duì)PE11、PE12、PE13和PE14配置為SPI_NSS、SPI_SCK、SPI_MISO和SPI_MOSI。切換到SPI4標(biāo)簽,勾選為“M4”,“Mode”選擇“Full-Duplex-Master”,使用硬件片選,選擇“Hardware NSS Output Signal”,其配置如下圖所示。

上述為新建工程配置過程,可參考12.3.2章節(jié)進(jìn)行導(dǎo)入已有工程,工程存放路徑【華清遠(yuǎn)見-FS-MP1A開發(fā)資料\02-程序源碼\ARM體系結(jié)構(gòu)與接口技術(shù)\Cortex-M4\9_EX_SPI_NUMBER】
代碼設(shè)計(jì)
本次使用的是硬件SPI,就不需要自己寫程序?qū)崿F(xiàn)SPI時(shí)序,需要做的僅僅是調(diào)用HAL提供的SPI硬件操作函數(shù),其中,調(diào)用“HAL_SPI_Transmit”函數(shù)實(shí)現(xiàn)主機(jī)向從機(jī)發(fā)送數(shù)據(jù),創(chuàng)建driver_sm74hc.c文件,在文件中實(shí)現(xiàn)數(shù)碼管的控制代碼如下。
void?M74HC595_ReadDataTest(void)
{
rw_595_Register(0X02,0X66);
HAL_Delay(1);
rw_595_Register(0X04,0X07);
HAL_Delay(1);
}
uint8_t?rw_595_Register(uint8_t?reg,uint8_t?data)
{
uint8_t?txdata[2] = {reg, data};
if(HAL_SPI_Transmit(&hspi4, txdata ,2,300) !=?HAL_OK)
{
Error_Handler();
}
return?0;
}
其中,參數(shù)“reg”表示第幾個(gè)數(shù)碼管顯示,參數(shù)“data”表示數(shù)碼管顯示的內(nèi)容。
在主函數(shù)中循環(huán)調(diào)用“rw_595_Register”函數(shù)即可以實(shí)現(xiàn)在數(shù)碼管上顯示特定內(nèi)容,實(shí)驗(yàn)結(jié)果如圖所示。
