斷碼屏驅(qū)動補充
已經(jīng)有大神寫過較詳細的教程:https://blog.csdn.net/CSDN_Gao_16/article/details/115463499,但這篇博文仍然比較抽象,我看了好多遍才看明白-_-||,為了節(jié)省和我一樣看的云里霧里的小白的寶貴的時間,這里是對原文的一些難以理解地方的解釋:
-
DISP_NUM[3] = {2, 5, 7}
這里應(yīng)該結(jié)合原文使用的函數(shù)一起看:
16相當于基地址
,2,5,7就相當于偏移地址
,傳入?yún)?shù)c
就相當于指定了顯示的是哪個位置的數(shù)字, 四個COM口分四次寫入。文章來源:http://www.zghlxwxcb.cn/news/detail-607786.html- 當然,看懂這里仍然要先明白顯存和seg、com的對應(yīng)關(guān)系,這個看了手冊LCD寄存器部分應(yīng)該就清楚了,配合真值表容易理解
-
權(quán)值
最容易迷惑人的就是這個,搞得很抽象,其實道理很簡單,觀察真值表可以發(fā)現(xiàn)每位數(shù)字都是都兩個SEG組成,且都是相鄰的:
因為上面有左移(基地址+偏移地址),已經(jīng)可以偏移到了對應(yīng)的7,10,12的SEG上面了,接下來就是寫寄存器,也就是平時的先&0再|(zhì)1,所以四個COM端掩碼部分要清空的就分別是(第0、1位)、(第0、1位)、(第0、1位)、(第1位),而第0位對應(yīng)二進制是1,第1位對應(yīng)二進制是2,所以這個權(quán)值(也就是對應(yīng)要操作的顯存位置)就是3、3、3、2,這里會把對應(yīng)的顯存清掉,寫的顯存內(nèi)容就是DISP_NUM_TAB[10][4]中的對應(yīng)值,比如數(shù)字0,DISP_NUM_TAB[0]是{3,2,3,2}。文章來源地址http://www.zghlxwxcb.cn/news/detail-607786.html- 這里也還是需要知道
HAL_LCD_Write()
中的形參是什么意思才行,需要關(guān)注寄存器號、掩碼、數(shù)據(jù)。掩碼就是為0的部分會清掉,數(shù)據(jù)就是再或運算寫上去,就完成了顯存的操作,然后調(diào)用HAL_LCD_UpdateDisplayRequest()
就會刷新上去
- 這里也還是需要知道
MX_LCD_Init()驅(qū)動初始化失敗
- 另外,關(guān)于LCD初始化失敗,可能是配置或電路原因,如果
V
l
c
d
V_{lcd}
Vlcd?連接了
V
c
c
V_{cc}
Vcc?, 使用外部電源(External),如果
V
l
c
d
V_{lcd}
Vlcd?通過電容連接到
V
s
s
V_{ss}
Vss?,則嘗試設(shè)置內(nèi)部電源:
- 我沒用內(nèi)部電源測試,只是在參考手冊上看到這個,有興趣的可以試試:
- 我沒用內(nèi)部電源測試,只是在參考手冊上看到這個,有興趣的可以試試:
- 另外,LCD模塊是可以在停機模式運行的:
從時鐘可以看到和RTC共用時鐘源:
規(guī)格書也提到可以在部分低功耗場景下使用:
到了這里,關(guān)于【stm32L152】段碼屏驅(qū)動注解、MX_LCD_Init()初始化失敗的解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!