91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

STM32驅動LCD怎么用

發布時間:2021-12-27 11:24:52 來源:億速云 閱讀:190 作者:小新 欄目:互聯網科技

這篇文章將為大家詳細講解有關STM32驅動LCD怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

01 驅動時序

我們通常說的MCU-LCD接口,就是8080接口,8080接口的詳細介紹請看《STM32驅動LCD原理》。

下面是LMT028DN給出的8080模式總線時序

STM32驅動LCD怎么用

下面是總線時序中的參數

STM32驅動LCD怎么用

時序參數

  • Tast->地址設置時間

  • Taht->地址保持時間(寫)

  • Tchw->芯片選擇高脈沖寬度

  • Tcs->芯片選擇設置時間(寫)

  • Tcsf->芯片選擇等待時間(寫)

  • Twc->寫入周期

  • Twrh->控制脈沖高電平時間

  • Twrl->控制脈沖低電平時間

  • Tdst->數據設置時間

  • Tdht->數據保持時間

根據FSMC的配置和時序圖,我們需要的3個時序參數是

3個重要參數

1、地址建立時間:5ns

2、地址保持時間:13ns

3、數據建立時間:13ns

以上數據均是滿足時序圖的最小時間,實際應用中,不能設置成最小值,也不能大于最大值(如果有的話),以實際應用為主,如果設置時間太快,反而不穩定。

因為我們把LCD使用8080接口驅動SRAM的方式,所以可以選擇FSMC的模式1和模式A,但是/RD的切換,也就是FSMC的NOE的切換,所以只能選擇模式A,觀察時序圖,讀寫時序一致,所以可以選擇讀寫一致的配置。

02 FSMC外設配置

FSMC外設配置代碼,具體FSMC外設解析請看《STM32的FSMC外設簡介》

readWriteTiming.FSMC_AddressSetupTime = 0x02;   //地址建立時間(ADDSET)為2個HCLK 2*1/120M=16ns
readWriteTiming.FSMC_AddressHoldTime = 0x02;   //地址保持時間(ADDHLD),16ns  
readWriteTiming.FSMC_DataSetupTime = 0x06;     //數據建立時間,50ns
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;//總線恢復時間
readWriteTiming.FSMC_CLKDivision = 0x00;// 時鐘分頻因子 
readWriteTiming.FSMC_DataLatency = 0x00;//數據產生時間
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;   //模式A
 
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;//  這里我們使用NE1 ,也就對應BTCR[6],[7]。
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;// 不復用數據地址
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM; 
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;//存儲器數據寬度為8bit   
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;  
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;//  存儲器寫使能
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;// 讀寫使用相同的時序
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;//讀寫時序
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming;//寫時序

讀寫接口代碼:

結構體定義,這里利用了結構體地址遞增特性

typedef struct
{
  uint8_t LCD_CMD;//用于LCD命令操作
  uint8_t LCD_DATA;//用于LCD數據操作
} LCD_TypeDef;
#define LCD_BASE        ((uint32_t)(0x60000000 | 0x0000FFFF))
#define LCD             ((LCD_TypeDef *) LCD_BAS

讀寫接口

void LMT028_Write_Cmd ( uint8_t usCmd )
{
  LCD->LCD_CMD=usCmd;  
}
void LMT028_Write_Data ( uint8_t usData )
{
  LCD->LCD_DATA = usData;
}

也可以簡單明了的如下寫法

#define      FSMC_Addr_LMT028_CMD         ( ( uint32_t ) 0x60000000 )      
#define      FSMC_Addr_LMT028_DATA        ( ( uint32_t ) 0x60010000 )
 
void LMT028_Write_Cmd ( uint8_t usCmd )
{
 *( (uint32_t  * )FSMC_Addr_LMT028_CMD)=usCmd;  
}
void LMT028_Write_Data ( uint8_t usData )
{
  *( (uint32_t  * )FSMC_Addr_LMT028_DATA) = usData;
}

03 背光驅動

LED背光驅動,根據高電平的占空比決定的,共有32個亮度等級,使用PWM驅動最為合適,通過調節占空比,調節亮度。

STM32驅動LCD怎么用

04 復位驅動

復位腳大于10ms的低電平,然后最大170ms的高電平

STM32驅動LCD怎么用

關于“STM32驅動LCD怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑川县| 定结县| 绵阳市| 临江市| 枣庄市| 霍山县| 蓬莱市| 香河县| 博白县| 万荣县| 苏尼特左旗| 盐亭县| 新兴县| 辉南县| 苏尼特右旗| 松江区| 松原市| 邢台市| 洪湖市| 青州市| 太康县| 上杭县| 高碑店市| 小金县| 牟定县| 吴忠市| 炉霍县| 清水县| 四子王旗| 宾阳县| 廉江市| 慈利县| 永州市| 察隅县| 广西| 云南省| 思南县| 雅安市| 鄂尔多斯市| 新竹市| 屯留县|