STM32F767ZIT- 整合LCD12864 (UC1701) 液晶模塊

開發環境:MDK uVision V5.24.2.0
晶片廠商:ST (http://www.st.com)
晶片型號:STM32F767ZIT
相關文件:https://goo.gl/QL7tXR
UC1701 datasheet: http://www.hpinfotech.ro/UC1701.pdf

前言:

論壇裡很多人在問,什麼樣的學習方法才是正確的,以及什麼樣的資料才可以讓你學的更扎實?坦白說,這個問題沒有人可以回答,唯有捫心自問,你缺了什麼,還有你究竟想得到些什麼,做事情都要有所目的,沒有目的的做,幹不久,到最後只是白搭。

所有事情都一樣,沒有捷徑,當然學習也不例外,唯有穩扎穩打才能奠定扎實的底子,就如同笑傲江湖裡的東方不敗曾說:⌜欲練神功必先自宮⌟,但他卻忘了告訴你,即使自宮也未必能練成神功,還得靠持續不斷的努力。

因為之前有碰過TI CC2541的開發板,但目前轉戰到STM32,手邊有一片之前開發板附贈的12864 LCD,最近手頭有點緊,加上想要挑戰自己的緣故,所以很鳥毛的突發奇想,如果把12864整到STM32的開發平台上,這豈不是一箭雙鵰的方案嗎?就這麼幹吧!

過程:

在過程中其實遇到蠻多問題的,一開始我想直接從正點原子例程去做修改,很單純的以為把header file內的配置跟我板子上對應起來就可以動作,所以我就照著下面的定義去將12864的接線設定到這幾根Pin上(在右上Female connector的旁邊有文字面的說明,包含CS、RST、RS、SDA、SCK、VDD、VSS、LEDA),仔細看還真的能夠對應得起來,碰碰運氣。



//-----------------OLED端口定义----------------  #define OLED_CS(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET))
#define OLED_RST(n) (n?HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15,GPIO_PIN_RESET))
#define OLED_RS(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET)) 
#define OLED_SCLK(n) (n?HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET))
#define OLED_SDIN(n) (n?HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_RESET))
接好線後,問題來了,只有背光點亮了,其他什麼東西都沒有,問題在哪?線不是接了嗎?

首先懷疑的就是Driver IC不同,去查了下,果然~正點原子的12864所使用的IC 是SSD1306,壓根與我手邊這塊的IC不同,我這塊的IC是UC1701。IC不同,驅動方式跟Power-up sequence應該會有所差異。

我手邊還留著CC2541當時的sample code,去與正點的比較,果然在lcd initial的部分有差異,這下好了,好像看出一些端倪,現在只有兩個方法,第一個方法就是自己重新寫power-up sequence的部分,不過我才剛入門,現在正是一頭霧水的時候,如果要靠自己寫,可能又是十天半個月的時間了,用第二個方法好了,改code,改誰的code?

好問題,兩個方式,第一就是直接把正點原子的code裡面的sequence改成cc2541裡面的,這樣或許就可以動了,直接著手進行,結果改完還是不行,沒辦法了,現在完全不知道問題出在哪裡,矇了!真的是矇了!

最後一個方式,直接拿cc2541的sample code來改,從硬體配置(SPI、GPIO),回調函數全都得重寫,沒辦法,對於初學者來說只剩下這條路了,走吧!

這時面對的問題就是得把8051的code轉換到STM32平台上,老實說,差異還不是很大,沒有花太多時間,改完之後,終於有訊息顯示了,這一秒的感動,真的無法言語,終於了解什麼是硬體移植,雖然只有一小塊液晶模組,也算是有所進步。

文章沒花太多時間寫,因為要接著下一個Task所以敬請見諒。








留言