本應用筆記討論了使用MAX6952和MAX6953 SPI和I2C 5×7矩陣LED顯示驅動器構建單色和雙色圖形留言板的軟件設計技術。
本應用筆記是討論MAX6952和MAX6953 LED驅動器應用中的軟件和處理器接口問題的兩篇應用筆記之一,用于構建用于留言板和動畫圖形顯示的點數海LED矩陣圖形面板。本說明介紹了面板設計的軟件方面。
MAX6952和MAX6953為4位陰極排5×7矩陣LED顯示驅動器,通過高速SPI控制?(MAX6952)或I2C (MAX6953) 串行接口。這些驅動程序主要用于字符顯示應用,其中單個 5×7 矩陣數字在物理上間隔開以形成一個或多個字符行(圖 1)。
圖1.使用 8×2 個矩陣字符的 5 個字符 x 7 行矩陣顯示面板的示例。
MAX6952和MAX6953將4個獨立的5×7矩陣LED處理為4位數字。用戶控制每個數字上顯示 104 個固定字符和 24 個用戶定義字符中的哪一個。如果需要,用戶可以在通電后將自定義字符加載到 24 種用戶定義的字體中。顯示使用數字寄存器控制,以從 128 個字符的字體中選擇一個字符。此方法對于字符顯示快速有效,但不適用于圖形顯示。
對于使用MAX6952或MAX6953的圖形應用,控制技術正好相反。固定字體被忽略,24 種用戶定義的字體用于直接圖形顯示控制。每個數字寄存器都設置為指向不同的用戶定義的字體位置,并且對字體本身進行操作以調整 5×7 部分中的圖形顯示。如果不需要閃爍控制,則只需要 4 個用戶定義的字體位置,每個 5×7 部分一個(表 1)。如果使用閃爍,則需要 8 個用戶定義的字體位置,每個閃爍階段(P1 和 P0)每個 5×7 部分一個(表 2)。數字寄存器只需使用適當的RAMxx字符地址寫入一次,并且字體本身作以設置圖形圖像。
數字 0 | 數字 1 | 數字 2 | 數字 3 | |
字體位置 | RAM00 | RAM01 | RAM02 | RAM03 |
數字 0 | 數字 1 | 數字 2 | 數字 3 | |||||
閃爍階段 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 |
字體位置 | RAM00 | RAM04 | RAM01 | RAM05 | RAM02 | RAM06 | RAM03 | RAM07 |
上面概述的簡單方案對于靜態顯示是足夠的,其中圖形圖像相對不經常上傳到顯示器,也許使用閃爍來提供一些動畫效果。但是,通過充分利用更多用戶定義的字體,可以獲得高度的無偽影圖像處理。有 24 個用戶定義的字體位置可用,實際上只需要 4 個(不閃爍)或 8 個(帶閃爍)字體位置來存儲顯示的圖形圖像。額外的字體位置可用于預加載圖形框架。圖形框架是存儲在顯示驅動程序中以便顯示的完整顯示圖像。24 種用戶定義的字體允許顯示驅動程序存儲 3 個完整的圖形幀(其中一個正在顯示),并在像素級別上通過閃爍控制(表 4)或 6 個沒有閃爍控制的完整幀(表 3)。預加載是在需要顯示圖像數據之前將圖像數據發送到顯示驅動程序的藝術。
數字 0 | 數字 1 | 數字 2 | 數字 3 | |
框架 1 字體位置 | RAM00 | RAM01 | RAM02 | RAM03 |
框架 2 字體位置 | RAM04 | RAM05 | RAM06 | RAM07 |
框架 3 字體位置 | RAM08 | RAM09 | RAM0A | RAM0B |
框架 4 字體位置 | RAM0C | RAM0D | RAM0E | RAM0F |
框架 5 字體位置 | RAM10 | RAM11 | RAM12 | RAM13 |
框架 6 字體位置 | RAM14 | RAM15 | RAM16 | RAM17 |
數字 0 | 數字 1 | 數字 2 | 數字 3 | |||||
閃爍階段 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 | 小一 |
框架 1 字體位置 | RAM00 | RAM04 | RAM01 | RAM05 | RAM02 | RAM06 | RAM03 | RAM07 |
框架 2 字體位置 | RAM08 | RAM0C | RAM09 | RAM0D | RAM0A | RAM0E | RAM0B | RAM0F |
框架 3 字體位置 | RAM10 | RAM14 | RAM11 | RAM00 | RAM15 | RAM12 | RAM13 | RAM17 |
顯示動態圖像的挑戰是無縫地更改圖片,而不會對觀眾造成瞬態效果(偽影)。每次更改映像時必須發送給驅動程序的數據量越小,就越容易實現。在留言板上看到的一個常見偽影是滾動波紋,因為控制器無法足夠快地移動所有顯示數據。最小化數據流可最大程度地減少處理器負載,并且接口數據速率也可以較慢。
使用幀的優點是,與更改顯示圖像本身相比,將顯示從一個預加載幀翻轉到另一個預加載幀需要向驅動程序發送更少的控制字。為了改變幀,MAX4或MAX6952的6953位寄存器用與新幀對應的用戶定義字體值寫入。這涉及對MAX4或MAX6952的每個數字寄存器進行6953次寫入(每個數字寄存器20次寫入)。直接改變顯示圖像需要對MAX5或MAX4進行6952次寫入(6953種用戶定義字體各寫入20次)。當然,幀數據仍然需要加載一些時間,因此仍然需要執行這 4 次寫入 <> 種用戶定義的字體。執行此操作的好時機是在上電初始化期間。
無縫更改圖像的推薦技術需要啟用閃爍,盡管圖像中不必有任何閃爍段。假設當前正在使用第 1 幀,因此顯示的圖像對數字 00 到數字 07 使用 RAM0 到 RAM3(表 4)。請注意,如果 RAM00 數據 = RAM04 數據、RAM01 數據 = RAM05 數據、RAM02 數據 = RAM06 數據、RAM03 數據 = RAM07 數據,則圖像不會閃爍,因為閃爍平面 P1 和 P0 中的圖像相同。然后可以將另一個完整的圖像加載到第 2 幀中,即 RAM08 到 RAM0F。上傳可以像微處理器允許的那樣慢或盡可能快地執行,因為圖像尚未顯示。將顯示器從第 1 幀無縫翻轉到第 2 幀的訣竅是在 P0 閃爍階段更改數字的 P1 數據,然后在 P1 閃爍階段更改數字的 P0 數據。電流閃爍相位可以在Blink輸出引腳上監控,也可以通過在配置寄存器中讀取P位的狀態來監控。請注意,閃爍計時現在設置更改圖像的響應時間,因為圖像更新已同步為閃爍。如果應用程序將使用段閃爍,則權衡明顯較慢的段閃爍速度與在不同圖像之間切換時相當快的響應時間的競爭要求。閃爍速度設置控制這兩個參數。
使用幀還可以使慢速動畫變得容易。MAX6952或MAX6953驅動器可存儲6幀動畫。同樣,該技術是在顯示P0相位時更改P1閃爍相位的數字數據,并在顯示P1相位時更改P0閃爍相位的數字數據(表6)。片段閃爍不用于動畫,因此閃爍速度只是設置動畫速度或幀速率。這可以設置為每秒 4 幀 (OSC = 8MHz) 到每 2 秒一幀 (OSC = 1MHz)。
表 5 中的用戶操作可確保下一個閃爍階段顯示一個新幀,圍繞六個可用幀循環。因此,該序列控制一個 6 步動畫,該動畫無限期重復。如果需要,動畫可以單步執行少于 6 幀;例如,驅動程序可以存儲兩個 3 步動畫。注意,連續幀的時間同步完全由MAX6952或MAX6953驅動器的閃爍時鐘設置。用戶的任務就是在每個閃爍階段向MAX4或MAX6952驅動器寫入6953字數字數據,以控制動畫。表5中未顯示的是將所有動畫數據幀上傳到所有MAX6952或MAX6953驅動器的用戶定義字體中的一次性任務。
數字 0 | 數字 1 | 數字 2 | 數字 3 | 閃爍階段 |
閃爍輸出引腳電平 (配置寄存器 P 位)( 在當前閃爍階段) |
當前閃爍階段的用戶 操作 |
|
初始化 | 將動畫數據寫入 RAM00 - RAM17 | ||||||
幀 1 | RAM00 | RAM01 | RAM02 | RAM03 | 小一 | 高 |
將0x04寫入地址0x40(數字 0 P1) 將0x05寫入地址0x41(數字 1 P1) 將0x06寫入地址0x42(數字 2 P1) 將0x07寫入地址0x43(數字 3 P1) |
幀 2 | RAM04 | RAM05 | RAM06 | RAM07 | 小一 | 低 |
將0x08寫入地址0x20(數字 0 P0) 將0x09寫入地址0x21(數字 1 P0) 將0x0A寫入地址0x22(數字 2 P0) 將0x0B寫入地址0x23(數字 3 P0) |
幀 3 | RAM08 | RAM09 | RAM0A | RAM0B | 小一 | 高 |
將0x0C寫入地址0x40(數字 0 P1) 將0x0D寫入地址0x41(數字 1 P1) 將0x0E寫入地址0x42(數字 2 P1) 將0x0F寫入地址0x43(數字 3 P1) |
幀 4 | RAM0C | RAM0D | RAM0E | RAM0F | 小一 | 低 |
將0x10寫入地址0x20(數字 0 P0) 將0x11寫入地址0x21(數字 1 P0) 將0x12寫入地址0x22(數字 2 P0) 將0x13寫入地址0x23(數字 3 P0) |
幀 5 | RAM10 | RAM11 | RAM12 | RAM13 | 小一 | 高 |
將0x14寫入地址0x40(數字 0 P1) 將0x15寫入地址0x41(數字 1 P1) 將0x16寫入地址0x42(數字 2 P1) 將0x17寫入地址0x43(數字 3 P1) |
幀 6 | RAM14 | RAM15 | RAM16 | RAM17 | 小一 | 低 |
將0x00寫入地址0x20(數字 0 P0) 將0x01寫入地址0x21(數字 1 P0) 將0x02寫入地址0x22(數字 2 P0) 將0x03寫入地址0x23(數字 3 P0) |
要運行不斷變化的動畫序列,系統處理器需要做更多的工作(表 6)。用戶在每一幀期間的操作現在包括更新MAX6952或MAX6953的字體RAM,因為幀數據是不斷變化的,不會像以前那樣永久(一次)存儲。但是,連續幀的時間同步仍由MAX6952或MAX6953驅動器的閃爍時鐘控制。同樣,處理器只需在每個眨眼階段的某個時間提供數據包。數據包像以前一樣包含 4 個字的數字數據,外加 20 個字的字體數據。
當受接口速度限制時,圖形顯示器的尺寸限制值得探討(表 7)。下表顯示了串行接口以最大比特率連續運行時理論最大顯示大小,運行連續動畫序列。實際限制至少會比理論限制低一點(或者可能很多),這取決于處理器必須執行的后臺處理,以及串行接口是硬件同步串行端口還是位撞擊 I/O。
數字 0 | 數字 1 | 數字 2 | 數字 3 | 閃爍階段 |
閃爍輸出引腳電平 (配置寄存器 P 位)( 在當前閃爍階段) |
當前閃爍階段的用戶 操作 |
|
初始化 | 將動畫數據寫入 RAM00 - RAM17 | ||||||
幀 1 | RAM00 | RAM01 | RAM02 | RAM03 | 小一 | 高 |
將0x04寫入地址0x40(數字 0 P1) 將0x05寫入地址0x41(數字 1 P1) 將0x06寫入地址0x42(數字 2 P1) 將0x07寫入地址0x43(數字 3 P1) 確保 RAM04-RAM07 已針對第 2 幀進行更新 如果處理器時間和幀數據可用,則可以更新 RAM08-RAM17 |
幀 2 | RAM04 | RAM05 | RAM06 | RAM07 | 小一 | 低 |
將0x08寫入地址0x20(數字 0 P0) 將0x09寫入地址0x21(數字 1 P0) 將0x0A寫入地址0x22(數字 2 P0) 將0x0B寫入地址0x23(數字 3 P0) 確保 RAM08-RAM0B 已針對第 3 幀進行更新 如果處理器時間和幀數據可用,則可以更新 RAM0C-RAM17、RAM00-RAM03 |
幀 3 | RAM08 | RAM09 | RAM0A | RAM0B | 小一 | 高 |
將0x0C寫入地址0x40(數字 0 P1) 將0x0D寫入地址0x41(數字 1 P1) 將0x0E寫入地址0x42(數字 2 P1) 將0x0F寫入地址0x43(數字 3 P1) 確保 RAM0C-RAM0F 已針對第 4 幀進行更新 可以更新 RAM10-RAM17、RAM00-RAM07如果處理器時間和幀數據可用 |
幀 4 | RAM0C | RAM0D | RAM0E | RAM0F | 小一 | 低 |
寫入0x10以地址0x20(數字 0 P0) 將0x11寫入地址0x21(數字 1 P0) 將0x12寫入地址0x22(數字 2 P0) 將0x13寫入地址0x23(數字 3 P0) 確保 RAM10-RAM13 已針對第 5 幀進行更新 可以更新 RAM14-RAM17,RAM00-RAM0Bif 處理器時間和幀數據可用 |
幀 5 | RAM10 | RAM11 | RAM12 | RAM13 | 小一 | 高 |
寫入0x14以地址0x40(數字 0 P1) 將0x15寫入地址0x41(數字 1 P1) 將0x16寫入地址0x42(數字 2 P1) 將0x17寫入地址0x43(數字 3 P1) 確保 RAM14-RAM17 已針對第 6 幀進行更新 如果處理器時間和幀數據可用,則可以更新 RAM00-RAM0F |
幀 6 | RAM14 | RAM15 | RAM16 | RAM17 | 小一 | 低 |
寫入0x00以地址0x20(數字 0 P0) 將0x01寫入地址0x21(數字 1 P0) 將0x02寫入地址0x22(數字 2 P0) 將0x03寫入地址0x23(數字 3 P0) 確保 RAM00-RAM03 已針對第 1 幀進行更新 如果處理器時間和幀數據可用,則可以更新 RAM04-RAM13 |
單色40x56像素子模塊 (16個MAX6952/3驅動器) |
雙色40x56像素子模塊 (32個MAX6952/3驅動器) |
|||
簡單動畫 每個驅動程序每幀 4 個單詞 |
完整動畫 每個驅動程序每幀 24 個單詞 |
簡單動畫 每個驅動程序每幀 4 個單詞 |
完整動畫 每個驅動程序每幀 24 個單詞 |
|
我2C 接口位/幀 | 18 × 4 × 16 = 1152 位 | 18 × 24 × 16 = 6912 位 | 18 × 4 × 32 = 1304 位 | 18 × 24 × 32 = 13824 位 |
SPI 接口位/幀 | 16 × 4 × 16 = 1024 位 | 16 × 24 × 16 = 6144 位 | 16 × 4 × 32 = 2048 位 | 16 × 24 × 32 = 12288 位 |
400k 位-1我2C 接口最大顯示尺寸 | 342 個子塊 | 57 個子塊 | 171 個子塊 | 28 個子塊 |
26M 位-1SPI 接口最大顯示尺寸 | 25200 個子塊 | 4200 個子塊 | 12600 個子塊 | 2100 個子塊 |
SPI接口可能是除最小顯示器尺寸之外的所有接口的首選接口。每個我2C MAX6953可設置為16 I之一2C 地址。這意味著每個包含16個MAX6953的單色子模塊必須獨立運行I2C總線以避免解決沖突。例如,具有 224 × 80 像素的中等大小圖形顯示器將使用 6 個單色子塊,需要 12 個處理器 I/O 線來處理 6 I2C 總線。如果SPI MAX2采用菊花鏈(級聯SPI接口),則同一面板可以由6952條處理器I/O線驅動。
使用MAX6952時,具有完整動畫的雙色面板的限值顯示尺寸為2100個子塊。一個實際的設計示例可能有一個處理器,它可以將其四分之一的時間用于接口,以 10 Mb 的速度運行。-1(通過 RS-485 鏈路)。因此,此應用程序的顯示大小限制降至 (2100 × 10/26 × 1/4) = 200 個子塊。因此,可以驅動的最大雙色面板是 10 個子塊乘以 20 個子塊,可能排列為 1120 × 400 個雙色像素。可以驅動兩倍于此尺寸的單色面板。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19259瀏覽量
229655 -
led
+關注
關注
242文章
23252瀏覽量
660594 -
led驅動器
+關注
關注
12文章
1128瀏覽量
72808
發布評論請先 登錄
相關推薦
評論