焦江麗 李鳳蓮
【摘要】Cortex-M3A是ARM推出了新的產(chǎn)品,其在低成本、低功耗上具有很高的優(yōu)勢(shì)。本文對(duì)ARM Cotex-M3和STM32微控制器進(jìn)行了研究,通過(guò)選擇意法半導(dǎo)體STM32F開(kāi)發(fā)板,對(duì)STM32的基本模塊GPIO、RTC、USART、TFTLCD等的研究完成了相關(guān)設(shè)計(jì),從而實(shí)現(xiàn)了萬(wàn)年歷在液晶屏和PC端的顯示,同時(shí)在液晶屏上實(shí)現(xiàn)了小容量的數(shù)碼相冊(cè)及圖片的循環(huán)播放。
【關(guān)鍵詞】STM32ARM Cortex-M3TFTLCD通用同步異步收發(fā)器萬(wàn)年歷
一、引言
意法半導(dǎo)體(ST Microelectronics,簡(jiǎn)稱ST)推出的STM32微控制器,是ST第一個(gè)基于ARM Cortex-M3內(nèi)核的控制器。STM32的出現(xiàn)將當(dāng)前微控制器的性價(jià)比水平提升到了新的高度,同時(shí)它在低功耗場(chǎng)合和硬實(shí)時(shí)控制場(chǎng)合中亦能游刃有余[1],考慮到用戶應(yīng)用的多樣性和大跨度的需要,STM32很好的在整個(gè)系列保持了引腳的兼容性及外設(shè)的配置的兼容性[2]。
2008年5月ST推出擴(kuò)展升級(jí)的STM32些列產(chǎn)品線,新系列配備最高達(dá)512KB的片上閃存、存儲(chǔ)空間更大的SRAM和更多的外設(shè)功能,以用于顯示、聲音、存儲(chǔ)和高級(jí)控制。STM32系列給MCU用戶帶來(lái)了前所未有的自由空間,提供了全新的32位產(chǎn)品選項(xiàng),結(jié)合了高性能、實(shí)時(shí)、低功耗、低電壓等特性,同時(shí)保持了高集成度和易于開(kāi)發(fā)的優(yōu)勢(shì)[3]。
ARM在1990年成立,當(dāng)初的名字是“Advanced RISC Machines Ltd.,”,當(dāng)時(shí)它是三家公司的合資———它們分別是蘋果電腦,Acorn電腦公司,以及VLSI技術(shù)(公司)。
基于ARM Cortex-M3的STM32的優(yōu)勢(shì)有:(1)可以選擇采用固件庫(kù)開(kāi)發(fā),不必接觸底層寄存器,大大縮短開(kāi)發(fā)周期,降低上手難度;(2)性價(jià)比高,32位的控制器有著接近于16位甚至高端8位控制器的價(jià)格;(3)功能豐富,從工控、小嵌入式均能勝任。STM32已經(jīng)廣泛應(yīng)用在工業(yè)控制、建筑與安防、低功耗、家用電器及計(jì)算機(jī)網(wǎng)絡(luò)和通信等領(lǐng)域。STM32最多5個(gè)串口,外圍通訊方便自由,如對(duì)講機(jī)、空中鼠標(biāo)、游戲手柄、電話POS等[4]。
本文旨在對(duì)STM32微控制器的深入研究,對(duì)意法半導(dǎo)體開(kāi)發(fā)板STM32F(100腳)進(jìn)行調(diào)試與開(kāi)發(fā)。對(duì)此開(kāi)發(fā)板中的各個(gè)模塊如GPIO、定時(shí)器、USART、中斷、BKP(備份寄存器)、PWR(電源控制)、RCC(復(fù)位和時(shí)鐘控制)、 FSMC、TFTLCD等進(jìn)行研究。在此基礎(chǔ)上,實(shí)現(xiàn)功能:將圖片顯示到TFTLCD上,萬(wàn)年歷通過(guò)串口在PC上顯示,并且可以在TFTLCD上顯示。
一、系統(tǒng)模塊與開(kāi)發(fā)平臺(tái)
1.1STM32開(kāi)發(fā)板
RealView MDK的突出特性:(1)啟動(dòng)代碼生成向?qū)?,自?dòng)引導(dǎo);(2)軟件模擬器,完全脫離硬件的軟件開(kāi)發(fā)過(guò)程;(3)性能分析器,看得更遠(yuǎn)、更細(xì)、更清;(4)Cortex-M3支持;(5)RealView編譯器,代碼更小,性能更高。
1.3軟件系統(tǒng)的設(shè)計(jì)流程
在實(shí)際開(kāi)發(fā)中,需要使用外設(shè)的時(shí)候一般有三個(gè)步驟,這里以GPIO外設(shè)為例簡(jiǎn)單介紹一下開(kāi)發(fā)流程:
(1)修改配置文件stm32f10x_conf.h。
將配置文件gpio的宏打開(kāi),如圖4。
(2)加載stm32f10x_gpio.c文件
stm32f10x_gpio.c是GPIO對(duì)應(yīng)的庫(kù)文件,對(duì)GPIO的一系列操作都是封裝完成并存放在這類文件里。加載過(guò)程如圖5所示。
(3)參數(shù)設(shè)置。
包括配置使用管腳、輸入或輸出模式、選中管腳的速率,開(kāi)發(fā)人員只需根據(jù)所需要求在對(duì)應(yīng)的參數(shù)位置進(jìn)行設(shè)置即可。一個(gè)簡(jiǎn)單的實(shí)例如下:
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
//D1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);}
其它模塊的應(yīng)用也類似于此,這樣就屏蔽了寄存器配置細(xì)節(jié),同時(shí)加快了開(kāi)發(fā)速度。
二、TFTLCD顯示圖片的實(shí)現(xiàn)
此設(shè)計(jì)中實(shí)現(xiàn)了兩幅圖片的循環(huán)播放,為實(shí)現(xiàn)數(shù)碼相框奠定一定的基礎(chǔ)。圖片每循環(huán)一次,D1、D2、D3和D4循環(huán)閃爍一次。第一幅圖片顯示結(jié)果以及第二幅圖片顯示結(jié)果如圖6和圖7所示。
三、萬(wàn)年歷設(shè)計(jì)實(shí)現(xiàn)
3.1設(shè)計(jì)原理
實(shí)時(shí)時(shí)鐘(Real Time Clock,RTC)是一種能提供日歷/時(shí)鐘及數(shù)據(jù)存儲(chǔ)等功能專用集成電路,常用作各種計(jì)算機(jī)和嵌入式系統(tǒng)的時(shí)鐘信號(hào)源和參數(shù)設(shè)置存儲(chǔ)電路。特別是在各種嵌入式系統(tǒng)中用于記錄事件發(fā)生的時(shí)間和相關(guān)信息,如通信工程、電氣自動(dòng)化、工業(yè)控制等自動(dòng)化程度高的領(lǐng)域中的無(wú)人值守環(huán)境。
3.2設(shè)計(jì)步驟
①上電后初始化系統(tǒng)時(shí)鐘。
②設(shè)置GPIO引腳。
③初始化FSMC以及LCD。
④配置RTC:使能PWR和BKP模塊的時(shí)鐘;使能對(duì)備份區(qū)域的訪問(wèn)。
⑤檢查預(yù)定義的標(biāo)記判斷RTC是否曾經(jīng)設(shè)置過(guò):預(yù)定義的標(biāo)記設(shè)置在備份區(qū)域的備份寄存器,不受系統(tǒng)掉電的影響。
⑥如果RTC未曾設(shè)置過(guò),則初始化RTC模塊:時(shí)鐘源LSE.和.秒中斷的產(chǎn)生。
⑦設(shè)置RTC計(jì)數(shù)器:以一個(gè)基準(zhǔn)作為時(shí)間原點(diǎn)。例如RTC計(jì)數(shù)值為0時(shí)表示:2008年1月1日0:0:0。輸入當(dāng)前年/月/日/時(shí)/分/秒,計(jì)算離時(shí)間原點(diǎn)的秒數(shù)。
⑧顯示時(shí)間:根據(jù)當(dāng)前RTC計(jì)數(shù)器的值,得到現(xiàn)在距時(shí)間原點(diǎn)的秒數(shù),反算出當(dāng)前的年/月/日/時(shí)/分/秒。
圖8為設(shè)計(jì)流程圖。
3.3TFTLCD顯示成果
將程序編譯完后,通過(guò)JTAG接口下載到開(kāi)發(fā)板,顯示結(jié)果如圖9所示。
四、總結(jié)
STM32微控制器是近年來(lái)迅速興起的基于ARM Cortex-M3內(nèi)核的高端32位微控制器的代表,本問(wèn)對(duì)意法半導(dǎo)體STM32F103VEBT6(100腳)微控制器進(jìn)行了研究探討,分析了開(kāi)發(fā)板的各個(gè)模塊功能,并實(shí)現(xiàn)了兩個(gè)主要功能:萬(wàn)年歷顯示和圖片顯示。最后,設(shè)計(jì)中的萬(wàn)年歷實(shí)現(xiàn)及圖片顯示是擁有現(xiàn)實(shí)意義的,其可以逐步的擴(kuò)展到其它模塊,并實(shí)現(xiàn)各個(gè)模塊的結(jié)合。隨著進(jìn)一步的應(yīng)用,其最終可實(shí)現(xiàn)STM32微控制器在各應(yīng)用領(lǐng)域的應(yīng)用,如工業(yè)縫紉機(jī),游戲手柄,汽車音響等,實(shí)現(xiàn)低功耗且高性能的結(jié)合。
參考文獻(xiàn)
[1] Zhao Yu-mei; CHEN Fu-rong. The S2- Chemical Sensor for Ocean Monitoring[J].Ocean Technology, 2005,24(4) :57-59.
[2] Zhao Yu-mei; CHEN Fu-rong. Research on Key Technique of Lower Concentration S2- Sensor In Situ Measurement [J]. Ocean Technology, 2008,27 (4) :33-35.
[3] Yan Jingdong.An Improved Intelligence Sensor Data fusion Method[J].Microcomputer Information,2009,01:149~151
[4] Joseph Yiu著,宋巖譯.ARM Cortex-M3權(quán)威指南.北京:北京航空航天大學(xué)出版社,2009.
[5]彭剛,秦志強(qiáng).基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐.北京:電子工業(yè)出版社,2011.1.