不管是做單片機還是做嵌入式的,要對一塊陌生芯片編程是不可避免的工作, 那首先要做的第一步必然是閱讀其datasheet,然而時序?qū)τ谖覀兪亲畛R姷牧?,只有針對時序編程,才有可能確實某些硬件工作。今天我們就來講講怎么來編寫一個特定的時序來驅(qū)動硬件,我們就以STM32的載體了。 這里我們選用了一款基于 ST7567 驅(qū)動芯片的 128*64 像素 FSTN(格式化超扭曲向列型) 液晶, 當(dāng)中不集成任何字庫, 集成了可獨立控制的琥珀色背光板。之所以選擇這樣的液晶, 是因為其與目前可穿戴設(shè)備廣泛使用的 OLED(有機發(fā)光二極管) 具有相似的控制原理, 并且價格還比 OLED 便宜很多。 我們的引腳控制對應(yīng)關(guān)系是:
SPI 可以有效地減少數(shù)據(jù)端口的連接, 便于布板和節(jié)約端口資源, 因此我們優(yōu)先推薦。 接下來我們研究一下 LCD 的驅(qū)動程序 時序圖要研究 LCD 的驅(qū)動程序, 首先必須了解其控制芯片的時序 每次需要發(fā)出的時候, 先要拉低 CS, 然后 SDA 發(fā)出字節(jié)中的最高位的bit,接著 SCLK 進行一次上升沿的變化, 然后按照上述內(nèi)容依次發(fā)送其余各位。 在最后全部發(fā)送完成數(shù)據(jù)后, A0 需要根據(jù)當(dāng)前發(fā)送的是命令還是數(shù)據(jù), 進行變化。發(fā)送完成之后, CS 需要拉高, 準(zhǔn)備下一次字節(jié)的發(fā)送。 程序?qū)崿F(xiàn)步驟
程序的具體實施
在定義了以上的初始化程序之后, 為了便于后續(xù)的操作方便, 我們可以采用宏定義的方式來定義每個引腳的高低電平輸入輸出
好了,有這么多,基本上就能跑起來了。 |
|