李 良,王德生,王小康,姜小存
(火箭軍士官學(xué)校,山東 青州 262500)
LCD液晶顯示屏與主芯片之間有多種接口形式,比較常見的接口有 UART、SPI、FSMC、LTDC、HDMI、MIPI等。FSMC也即是靈活的靜態(tài)存儲器控制器,是用來驅(qū)動外部總線,在一些TFT液晶的操作用經(jīng)常用到。單片機訪問內(nèi)存是通過三總線形式進(jìn)行訪問的,即地址總線、數(shù)據(jù)總線和控制總線,只是對于不同的控制芯片總線寬度不一樣而已。STM32的FSMC[1]就像51系列單片機的外部總線一樣,只不過性能更好,速度更快。本文主要分析基于STM32芯片F(xiàn)SMC接口的ILI9341液晶顯示屏的控制過程。
本文選用ILI9341液晶屏[2]接口是16位的80并口,16位代表有16根數(shù)據(jù)線,用STM32芯片驅(qū)動一個80并口的LCD需要7個控制信號,通過SRAM控制器控制外部LCD液晶顯示屏顯示。圖1為本文中采用的TFT型LCD硬件引腳圖,共有32個功能引腳:
圖1 TFT型LCD硬件引腳
LCD_CS:Chip Select片選信號,低電平有效;
RS:Register Select寄存器選擇;
LCD_WR:Write寫信號,低電平有效;
LCD_RD:Read讀信號,低電平有效;
RESET:重啟信號,低電平有效;
DB0-DB15:數(shù)據(jù)線,與STM32相應(yīng)GPIO引腳相連;
BL:背光控制信號;
其中 MOSI、MISO、T_PEN、T_CS 及 CLK 引腳在內(nèi)存接口控制中未用,其余引腳與STM32相應(yīng)引腳相連。STM32上有FSMC接口的好處就是一旦對其設(shè)置之后,WR、RD、DB0-DB15這些控制線和數(shù)據(jù)線,都是FSMC自動控制的。
追本溯源,為何FSMC可以用來驅(qū)動LCD,原因是FSMC的讀寫時序和LCD的讀寫時序很相似,于是把LCD當(dāng)成一個外部存儲器來用。利用FSMC在相應(yīng)的地址讀或?qū)懴嚓P(guān)數(shù)值時,STM32的FSMC會在硬件上自動完成時序上的控制。所以我們只要設(shè)置好讀寫相關(guān)時序的寄存器后,F(xiàn)SMC就可以幫我們完成時序上的控制了。對于FSMC驅(qū)動LCD有一個比較難理解的地方就是當(dāng)LCD使用16位寬度的數(shù)據(jù)傳輸(也就是有16條數(shù)據(jù)線)的時,HADDR和FSMC_A這個地址塊的對應(yīng)問題 (使用8位數(shù)據(jù)則不用考慮此問題)。
FSMC_A是STM32單片機的外部硬件接口,是物理存在的。HADDR是需要轉(zhuǎn)換到外部存儲器的內(nèi)部AHB地址線,是STM32內(nèi)部總線。當(dāng)LCD的16位的80并口和STM32的FSMC接口連接好之后,我們可以進(jìn)行軟件編程控制HADDR,從而間接操作FSMC_A,STM32的FSMC接口將0x60000000-0x6FFFFFFF的地址用作NOR/PRAM(共256M地址范圍)。存儲模塊分成四部分,每部分64M地址范圍[1]。NOR和PSRAM的存儲塊選擇如表1所示。
表1 NOR和PSRAM的存儲塊選擇
本文使用NOR/SRAM的Bank1.sector4,地址位HADDR[27,26]=11,也即用FSMC_A12引腳作為數(shù)據(jù)命令區(qū)分線,0:命令,1:數(shù)據(jù)。 本文中 LCD 的 LCD_RS(命令/數(shù)據(jù)標(biāo)志線)是接在STM32的外部接口FSMC_A[12]上的。
由于STM32規(guī)定當(dāng)使用16位數(shù)據(jù)寬度的時候HADDR[25:1]與 FSMC_A[24:0]對應(yīng)相連,HADDR[0]這個地址是沒用的。外部存儲器地址如表2所示。
表2 外部存儲器地址
這就是當(dāng)使用16位數(shù)據(jù)寬度的時候,HADDR自動右移一位對其的原理因為使用的是16位的數(shù)據(jù)寬度,所以在設(shè)置時要注意STM32內(nèi)部會右移一位對齊:
在實際編程中,根據(jù)STM32與LCD之間硬件電路連接關(guān)系,主要配置四個結(jié)構(gòu)體參數(shù)[3,4]:
其中第二個結(jié)構(gòu)體FSMC_NORSRAMInitStructure是FMSC接口配置最為重要的結(jié)構(gòu)體,主要完成以下參數(shù)配置:
基于STM32的FSMC接口配置是驅(qū)動LCD正常顯示的最為關(guān)鍵的環(huán)節(jié),本文重點分析了FSMC接口的地址映射和軟件配置,經(jīng)實驗驗證,F(xiàn)SMC接口配置是可行可靠的。