STM32F103系列是沒有內置LCD控制器接口的,如果要驅動LCD,需要一顆LCD圖形驅動IC。STM32和LCD驅動IC的接口在STM32端是FSMC,FSMC接口提供各種存儲器驅動信號也提供了驅動LCD驅動IC的各種信號。
一、FSMC簡介
FSMC概覽
如下圖可以看到FSMC支持的存儲器類型及提供的各種讀寫控制信號。
圖1
2.FSMC 框圖
圖2
3.FSMC 內存地址空間分配
圖3
二、LCD 接口
1.8080和6800接口
這兩種接口類型是典型的LCD并行接口。接口信號分為:數據信號和控制信號。
數據信號支持8,9,16,18,24位等。
控制信號用來區分讀、寫及區分是向LCD尋址命令寄存器還是寫LCD RAM數據。
控制信號定義如下:
圖4
8080接口:
6800接口:
2.FSMC的LCD接口信號
圖5
通過圖5,可以看到FSMC提供了LCD驅動所需的全部信號。
片選有專門的硬件信號,也可以使用地址信號Ax,即空閑的地址信號任選一根使用。而LCD的RS信號也可以連接到一根地址線。
3.FSMC 和LCD 連接框圖
8080類型接口
6800類型接口
4.驅動程序
以STM32F103VCT6為例,關于103VCT6的信息如下:
只能使用BANK1且Ax推薦使用16-23,STM32原理圖接口連線如下:
如上圖,RS接A16,CS接A17。
如圖3,BANK1的基地址是0x60000000,
關于LCD驅動IC的訪問模式有4種:
所有對LCD圖形界面的操作都是基于這四個函數,所以實現4個函數很重要。
#define LCD_COMM_ADD ((vu16 )0X60020000)
#define LCD_DATA_ADD *((vu16 *)0X60000000)
#define WriteCommand(cmd) {LCD_COMM_ADD = cmd;}
#define WriteData(data) {LCD_DATA_ADD = data;}
inline u8 ReadData(void)
{
return LCD_DATA_ADD;
}
inline u8 ReadCOMM(void)
{
return LCD_COMM_ADD;
}
以上代碼中RS和標準接口定義是反的,是因為LCD驅動IC對RS的定義和標準就是反的。LCD驅動IC的SPEC:
另一個問題,硬件使用A16連接RS,為什么代碼里體現是的0X60020000(A17)?為什么左移一位,原因在STM32中文手冊有說明:
-
控制器
+關注
關注
112文章
16376瀏覽量
178194 -
STM32
+關注
關注
2270文章
10901瀏覽量
356195 -
LCD屏
+關注
關注
0文章
122瀏覽量
15433 -
驅動IC
+關注
關注
9文章
304瀏覽量
33822 -
STM32F103
+關注
關注
33文章
477瀏覽量
63675
發布評論請先 登錄
相關推薦
評論