一直以來都想玩一玩嵌入式開發,苦於沒有任何硬件基礎 ,學校里學的一點入門級的電子信息基礎也都忘記的差不多了。很久以前就關注了MF,優勢我就不多說了,但是入手門檻還是很高。直到看到大石頭的文章。 http://www.cnblogs.com/nnhy/archive/2012/09/25/MFCategory.html ,發現是時候入手了,我買了一塊 雅典娜4的開發板, http://www.newlifex.com/showtopic-58.aspx,價格比價便宜,也能滿足MF的學習。
現在談談MF如何驅動Nokia 5110 LCD。
很久以前打算發一個SPI通訊的DEMO,但是苦於時間太少,今天決定無論如何要寫一下,順便幫大石頭驗證SPI通訊是可用的。
申明一下,我是個菜鳥,平時做軟,硬件不通。。。MF純屬業務愛好。
手頭恰巧有個一塊5110液晶屏(當年想學51,一起買的,沒學會。。。)
5110是個不錯的屏幕,字符多,價格便宜,SPI通訊,IO占用少。
說實話,驅動這屏幕花了好多天,各地找資料,終於在東拼西湊勉強驅動了它,由於對5110液晶的協議沒有深入了解,目前只能顯示簡單的英文字符,論壇里的高手們有興趣可能提供中文顯示方案。
首先先了解一下5110LCD
模塊接口
- 1. RST ——復位
- 2. CE —— 片選
- 3. DC —— 數據/指令選擇
- 4. DIN —— 串行數據線
- 5. CLK —— 串行時鍾線
- 6. VCC —— 電源輸入(3.3v和5v均可,經過實驗驗證,沒有問題)
- 7. BL —— 背光控制端
- 8. GND —— 地線
接口為串行SPI接口。
雅典娜4的開發板帶2個SPI接口,這取決於 STM32F103VET6 支持的SPI 接口個數。
SPI接口使用核心代碼
SPI.Configuration spiConfiguration = new SPI.Configuration(
cs, // 片選接口
false, // IC is accessed when chip select is low
0, // setup time 1 ms
0, // hold chip select 1 ms after transfer
false, // clock line is low if device is not selected
true, // 上升沿觸發
4000, // 設置時鍾速率
SPI.SPI_module.SPI1 // 設置SPI通道
);
spi = new SPI(spiConfiguration);
不太好理解的地方還是用英文翻譯。
例程中用的是SPI接口,並且由於不需要讀取數據,所以只需要用到 PA7(M0SI)、PA5(SCK)。
開發板與LCD的接線是
- 1. RST ——PD7
- 2. CE —— PD10
- 3. DC ——PD8
- 4. DIN ——PA7
- 5. CLK —— PA5
- 6. VCC ——3.3v 串一個4.7K電阻,否則屏幕顏色過深
- 7. BL —— 3.3V
- 8. GND —— 地線
網上有關於5110的資料,非常完整,大家有興趣可以研究一下 http://wenku.baidu.com/view/56527c084a7302768e9939af.html
我精力有限,發這文章主要目的就是讓大家了解一下SPI的用法,以及證實下雅典娜4 SPI可用。
再次感謝下 大石頭 辛勤付出,為 STM32F103VET6 移植MF固件。
對MF有興趣的朋友可以加入 QQ群 1600838
