嵌入式軟體 - ccy.dd.ncu.edu.tw
TRANSCRIPT
![Page 1: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/1.jpg)
嵌入式軟體
期中作業
OLED Driver
系級: 資工碩一 李怡臻
學號: 995202078
授課教授: 陳慶翰 教授
中 華 民 國 一百 年 五 月 二十七 日
![Page 2: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/2.jpg)
1.硬體週邊原理(或規格、或相關技術說明)介紹
OLED說明:
SSD1331 是一顆COMS OLED/PLED 晶片,具備 288segment(RGB三色,
一個顏色[95:0])與 64 個 Command 輸出,支援 96RGB * 64 點矩陣顯示,
SSD1331內嵌Graphic Display Data RAM (GDDRAM) ,支援8、9、16bit 8080
/ 6800 interface。
SSD1331 特色:
Resolution: 96RGB x 64 dot matrix panel
65k color depth support by embedded 96x64x16 bit GDDRAM display buffer
Power supply:
VDD = 2.4V to 3.5V for IC logic
VCC = 8.0V to 18.0V for Panel driving
VDDIO = 1.6V to VDD for MCU interface
256 step contrast control for the each color component plus 16 step master
current contro
Pin selectable MCU interface
8/9/16 bits 6800-series parallel Interface
8/9/16 bits 8080-series Parallel Interface
Serial Peripheral Interface (此 Driver 採用)
Color swapping function (RGB <-> BGR)
Graphic Accelerating Command (GAC) set with Continuous Horizontal,
Vertical and Diagonal Scrolling
Programmable Frame Rate
Wide range of operating temperature: -40 to 85 °C
![Page 3: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/3.jpg)
Pin Description
Pin Nmae Pin Type Description
VDD Power 核心電源供應
D0-D7 IO 8 bit的雙向資料匯流排,連接到 MCU 的資料匯流
排,在 SPI協定中,D0 為 SCLK,D1 為 SDIN
BS1,BS2 I 透過邏輯設定 MCU interface,使用者可以透過調
整 Jump(J2,J3)來設定 pin 腳,或是可以用程式來設
定,設定的規定如下表所示。
DC I 此接腳用來控制 Data/Command,當 Pin 腳為高
電位時,D7-D0 觸發為顯示資料;當 Pin 腳為低電
位時,D7-D0 觸發為指令暫存器
CS I 晶片的選擇輸入,只有當 CS 腳位為低電位時,此晶
片才能和 MCU 通訊
RESET I 此 pin 腳用來 reset 訊號輸入,當 pin 腳為低電位
時,執行晶片的初始化動作
![Page 4: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/4.jpg)
MCU Interface Selection:
SSD1331 MCU interface 由 16 隻資料 pin 腳和 5 隻控制 pin 腳組成,pin 腳
在不同的模式下有不同的功用,如下表所示,而我們所使用的是 SPI 介面。
Serial Interface:
SPI包含 serial data SDIN(D0)、serial clock SCLK(D1)、CS、DC 以及 RES,
在每個 SCLK 提升邊緣時,D7,D6…D0 資料會依照順序的 shift 到暫存器
(Display Data RAM 或 Command register)中。
在 SPI模式下,只有允許寫入指令,如下表所示:
在 SPI模式中,寫入程序如下圖所示:
![Page 5: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/5.jpg)
Graphic Display Data RAM (GDDRAM)
GDDRAM 的大小為 96× 64 × 16bit,軟體可以選擇性的 re-mapping
Segment and Common outputs ,每個像素有 16 位數據。三個子像素的色彩
A,B和 C 分別為 6bit,5bit和 6bit,這些資料 pixle 在圖形顯示資料 RAM 中
的排列如下所示:
資料匯流排在不同匯流排長度以及 color depth 模式下的情況:
![Page 6: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/6.jpg)
Command Table
![Page 7: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/7.jpg)
![Page 8: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/8.jpg)
![Page 9: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/9.jpg)
![Page 10: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/10.jpg)
![Page 11: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/11.jpg)
![Page 12: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/12.jpg)
2.SIOC 的 Driver 設計及主要程式說明
寫入暫存器的程式碼主要分成兩個部分,依照規則將 CS 與 DC 線輸出高電位或
是低電位來控制寫入 Command 或 Data 暫存器,用軟體模擬 SPI 傳輸模式,
由於 SIOC 的速度很快,因此在軟體產生 SCLK 的時候需要用軟體延遲一小段時
間。
1.
2.
![Page 13: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/13.jpg)
所使用到的控制訊號線都是由 GPIO控制,將其對應至 PAx,其中 GPIO 的速度
選擇最低的 2MHz,如下所示:
利用上面寫好的 Write_Command()與 Write_Data(),依照 Command table 規
定寫入的位址方式再寫成 command function,例如控制螢幕的方式就是輸入
Command 0xAF 代表顯示螢幕,如下所示:
主要測試成功的函式有下列幾項:
Set_Display_On_Off(); 設定螢幕開關
Up_Scroll();Down_Scroll();上下滾動畫面
Fill_RAM();利用寫入資料的方式寫入值,將畫面填滿白色
Checkerboard();確認是否有寫入 data,穿插黑白點顯示
![Page 14: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/14.jpg)
Rainbow();利用 command 畫出方框來顯示彩虹的區段色塊
Show Pattern - Frame (Test Pattern) 利用方框來顯示漸進的畫框色彩
Show String 利用寫入資料來顯示字串
3.SIOC 與週邊的接線圖
由於我們使用的是 SPI介面,因此在 OLED 上 將 J2 與 J3短路,始
之接地。
由於 OLED是接 3.3V,因此將 OLED的電源接到 VDD1,SPI協定
的格式是將 OLED的 DO作為 SCLK、D1 作為 SDIN,其他接腳如下
表所示。
![Page 15: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/15.jpg)
SIOC OLED SIOC OLED
SCLK(D0) PA1 CS PA4
SDIN(D1) PA2 DC PA5
RES PA3
![Page 16: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/16.jpg)
4.SIOC 驗證(使用 VCP 或使用其他周邊顯示結果)將螢幕 hardcopy
或照片貼至報告中
Show Pattern – Format ,初始畫面
![Page 17: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/17.jpg)
All Pixels On,利用寫入資料的方式寫入值,將畫面填滿白色
![Page 18: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/18.jpg)
Checkerboard,確認是否有寫入 data,穿插黑白點顯示
![Page 19: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/19.jpg)
Rainbow,利用 command 畫出方框來顯示彩虹的區段色塊
![Page 20: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/20.jpg)
Show Pattern – Frame,利用方框來顯示漸進的畫框色彩
![Page 21: 嵌入式軟體 - ccy.dd.ncu.edu.tw](https://reader031.vdocuments.us/reader031/viewer/2022012117/61dd302c921e1569023b57c3/html5/thumbnails/21.jpg)
Show String,利用寫入資料來顯示字串