基于STM32的多路電壓測量設計方案
3.3 LCD控制電路
本設計所使用的LCD為2.4寸,320×240分辨率。LCD模塊使用STM32的FSMC接口控制。
FSMC(Flexible Static Memory Controller)即可變靜態存儲控制器,是STM32系列中內部集成256KB以上Flash,后綴為xC、xD和xE的高存儲密度微控制器特有的存儲控制機制。通過對特殊功能寄存器的設置,FSMC能夠根據不同的外部存儲器類型,發出相應的數據/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類型、不同速度的外部靜態存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態存儲器,滿足系統設計對存儲容量、產品體積以及成本的綜合要求。
在STM32內部,FSMC的一端通過內部高速總線AHB連接到內核Cortex-M3,另一端則是面向擴展存儲器的外部總線。內核對外部存儲器的訪問信號發送到AHB總線后,經過FSMC轉換為符合外部存儲器通信規約的信號,送到外部存儲器的相應引腳,實現內核與外部存儲器之間的數據交互。F S M C起到橋梁作用,既能夠進行信號類型的轉換,又能夠進行信號寬度和時序的調整,屏蔽掉不同存儲類型的差異,使之對內核而言沒有區別。
FSMC可以連接NOR/PSRAM/NAND/PC卡等設備,并且擁有FSMC_A[25:0]共26條地址總線,FSMC[15:0]共16條數據總線。另外,FSMC擴展的存儲空間被分成8個塊。通過地址線選擇操作的塊。這樣,LCD將被看作一個擁有一塊地址空間的存儲器進行操作。
3.4 SD卡驅動電路
本設計中使用的SD卡為MicroSD,也稱TF卡。MicroSD卡是一種極細小的快閃存儲器卡,主要應用于移動電話,但因它的體積微小和儲存容量的不斷提升,現在已經使用于GPS設備、便攜式音樂播放器、數碼相機和一些快閃存儲器盤中。MicroSD卡引腳圖如圖9所示。
MicroSD卡與SD卡一樣,有SPI和SDIO兩種操作時總線。SPI總線相對于SDIO總線接口簡單,但速度較慢。我們使用SDIO模式。
MicroSD卡在SDIO模式時有4條數據線。
其實,MicroSD在SDIO模式時有1線模式和4線模式,也就是分別使用1根或4根數據線。當然,4線模式的速度要快于1線模式,但操作卻較復雜。本設計中使用的是SDIO的4線模式。MicroSD卡的硬件連接圖如圖3所示。

3.5 觸摸屏電路
本設計在測量的通道和顯示設置上,除了使用按鍵設置,還使用觸摸屏進行設置。
觸摸屏使用芯片TSC2046控制,其硬件連接圖如圖4所示。

在圖4中,TSC2046可以采集觸摸屏的點坐標,從而確定觸摸的位置,進行人機交互。
STM32單片機通過SPI總線與TSC2046通信,可以得到觸摸信息。本設計使用觸摸屏進行測量通道數的設置和測量速度的設置。
4.系統軟件設計
4.1 軟件流程
系統軟件部分使用C語言編程,同時使用STM32官方提供的固件庫,使用的版本為3.5版。STM32固件庫也稱固件函數庫或標準外設庫,是一個固件函數包,它由程序、數據結構和宏組成,包括了微控制器所有外設的性能特征。該函數庫還包括每一個外設的驅動描述和應用實例,為開發者訪問底層硬件提供了一個中間API,通過使用固件函數庫,無需深入掌握底層硬件細節,開發者就可以輕松應用每一個外設。因此,使用固態函數庫可以大大減少用戶的程序編寫時間,進而降低開發成本。每個外設驅動都由一組函數組成,這組函數覆蓋了該外設所有功能。簡單的說,使用標準外設庫進行開發最大的優勢就在于可以使開發者不用深入了解底層硬件細節就可以靈活規范的使用每一個外設。
軟件部分為了方便存儲數據的查看和讀取,在MicroSD卡部分使用了fatfs文件系統。
FAFFS是面向小型嵌入式系統的一種通用的FAT文件系統。FATFS完全是由AISI C語言編寫并且完全獨立于底層的I/O介質。因此它可以很容易地不加修改地移植到其他的處理器當中,如8051、PIC、AVR、SH、Z80、H8、ARM等。
FATFS支持FAT12、FAT16、FAT32等格式,所以我們利用前面寫好的SDIO驅動,把FATFS文件系統代碼移植到工程之中,就可以利用文件系統的各種函數,對已格式化的SD卡進行讀寫文件了。
以上是系統軟件設計的兩個主要部分,其他還有LCD驅動程序,ADC和DMA驅動程序,按鍵中斷程序等。
4.2 軟件文件結構
文件main.c是整個程序的入口文件,也是主要文件。global.c和global.h主要是共用的函數和全局性的宏定義。LCD_Disp.c和LCD_Disp.h是基于STM32固件庫的對LCD的底層驅動函數。Lcdfunc.c和lcdfunc.h是為了主程序更方便的操作LCD而編寫的一些常用的復雜的對LCD底層函數的封裝函數。sdio_sdcard.c和sdio_sdcard.h是基于STM32固件庫的對MicroSD卡的底層驅動函數。fat文件系統在STM32上的使用需要針對具體類型的硬件進行配置,所以它是基于MicroSD卡的底層驅動程序的。fatfunc.c和fatfunc.h是對fat文件操作接口的一些封裝,是針對本設計中對文件的操作編寫的。其余的按鍵中斷和ADC等操作的函數是直接基于STM32固件庫的,并直接被主程序調用。
5.總結
STM32在速度、功耗方面性能都更加優越,其豐富的外設也更加方便設計。另外,STM32價格較低,在成本上也有優勢。STM32適合于控制電子設備的設計。設計中使用的ADC是STM32上的12位ADC,能夠滿足一定的測量精度,對于較高的測量要求,則需要使用更高精確度的ADC.但是使用高精度ADC和DSP芯片,將很大的增加開發成本。本設計方案完成了多路電壓測量的各項功能,但是還需要在使用中檢測其穩定可靠性,以使設計更加完善。
接地電阻相關文章:接地電阻測試方法
adc相關文章:adc是什么
接地電阻測試儀相關文章:接地電阻測試儀原理
評論