新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 用于MAX7456隨屏顯示器SPI

用于MAX7456隨屏顯示器SPI

作者: 時間:2011-04-22 來源:網(wǎng)絡(luò) 收藏
ff>// modespiWriteReg(DM_ADDRH_WRITE,0x02); // Second, write data[2,4,6,...] // Attribute plane; MAX7456// WriteReg(0x05,0x41)// "Character Memory Address High"; // 0x02:Attribute bytes; 0x01:character memory address // msbspiWriteReg(DM_ADDRL_WRITE,0x00);spiWriteReg(DM_MODE_WRITE,0x41); // MAX7456 WriteReg(0x04,0x41) "Character Memory // Mode"; 0x40:Perform 8-bit operation; 0x01:Auto-// IncrementIndex = 0x0002;do{if (data[Index] == 0xFF)break;spiWriteRegAutoIncr(data[Index]);Index += 2;} while(Index 0x03C1);spiWriteRegAutoIncr(0xFF);}

寫字符存儲器程序

向字符存儲器寫一個字符的程序如下,每個字符占用18行,每行12像素,共216像素。由于每個字節(jié)定義4個像素,因此定義每一個字符需要54字節(jié)。字符數(shù)據(jù)位于程序入口處的data[] (與上述寫顯示存儲器的程序類似)。

寫字符存儲器時需要進行一些附加說明,存儲器為非易失,因此,寫存儲器大約需要12ms,由MAX7456執(zhí)行。只有完整的54字節(jié)字符才可以寫入字符存儲器。

該器件包含一個54字節(jié)映射存儲器。首先把需要寫入的字符數(shù)據(jù)寫入映射存儲器,然后器件將該數(shù)據(jù)裝載到NVM字符存儲器。

用來寫字符存儲器的寄存器有以下幾種:

  1. 字符存儲器模式 = 0x08。向寄存器寫0xA0,使器件把映射存儲器的內(nèi)容裝載到NVM字符存儲器。
  2. 字符存儲器地址高位 = 0x09。包括了即將寫入字符的地址。
  3. 字符存儲器地址低位 = 0x0A。
  4. 字符存儲器數(shù)據(jù)輸入 = 0x0B。
  5. Status = 0xA0,讀取該寄存器以決定何時可以寫入字符存儲器。

在程序入口處,data[1]包括即將寫入字符的地址,data[2...54]包括字符數(shù)據(jù)。

向NVM字符存儲器寫字符時,首先寫字符地址。然后將每個字節(jié)寫入映射存儲器。寫映射存儲器時沒有自動遞增模式,所以每次寫操作必須寫入映射存儲器地址。向字符存儲器模式寄存器寫0xA0,可以把映射存儲器的內(nèi)容裝載到NVM字符存儲器。然后器件將狀態(tài)寄存器第5位置高,表明不能寫入字符存儲器。完成后,器件將該位復(fù)位至低。數(shù)據(jù)從映射存儲器移向字符存儲器時不能寫映射存儲器。

為了避免出現(xiàn)顯示器閃爍,在寫字符存儲器之前程序禁止了OSD。

/*************************************************************************************** spiWriteFM** Writes to the Character Memory (54 bytes) from "data" extern**************************************************************************************/void spiWriteFM(){unsigned char Index;spiWriteReg(VIDEO_MODE_0_WRITE,spiReadReg(VIDEO_MODE_0_READ)  0xF7);                   // Clear bit 0x08 to DISABLE the OSD displayspiWriteReg(FM_ADDRH_WRITE,data[1]);                       // Write the address of the character to be written// MAX7456 glyph tile definition// length = 0x36 = 54 bytes  // MAX7456 64-byte Shadow RAM accessed // through  FM_DATA_.. FM_ADDR.. contains a single // character/glyph-tile shapefor(Index = 0x00; Index  0x36; Index++){spiWriteReg(FM_ADDRL_WRITE,Index);                    // Write the address within the shadow RAMspiWriteReg(FM_DATA_IN_WRITE,data[Index + 2]);        // Write the data to the shadow RAM}spiWriteReg(FM_MODE_WRITE, 0xA0);                          // MAX7456 "Font Memory Mode" write 0xA0 triggers// copy from 64-byte Shadow RAM to NV array.while ((spiReadReg(STATUS_READ)  0x20) != 0x00);          // Wait while NV Memory status is BUSY// MAX7456 0xA0 status bit 0x20: NV Memory Status// Busy/~Ready}

MAX7456頭文件

下面列出了MAX7456的頭文件,以下代碼決定了器件的寄存器映射。

/*************************************************************************************** spiWriteRegAutoIncr** Writes to an 8-bit register with the SPI port by using the MAX7456's autoincrement mode**************************************************************************************/// MAX7456 VIDEO_MODE_0 register#define VIDEO_MODE_0_WRITE              0x00#define VIDEO_MODE_0_READ               0x80#define VIDEO_MODE_0_40_PAL             0x40#define VIDEO_MODE_0_20_NoAutoSync      0x20#define VIDEO_MODE_0_10_SyncInt         0x10#define VIDEO_MODE_0_08_EnOSD           0x08#define VIDEO_MODE_0_04_UpdateVsync     0x04#define VIDEO_MODE_0_02_Reset           0x02#define VIDEO_MODE_0_01_EnVideo         0x01// VIDEO MODE 0 bitmap#define NTSC                            0x00#define PAL                             0x40#define AUTO_SYNC                       0x00#define EXT_SYNC                        0x20#define INT_SYNC                        0x30#define OSD_EN                          0x08#define VERT_SYNC_IMM                   0x00#define VERT_SYNC_VSYNC                 0x04#define SW_RESET                        0x02#define BUF_EN                          0x00#define BUF_DI                          0x01// MAX7456 VIDEO_MODE_1 register#define VIDEO_MODE_1_WRITE              0x01#define VIDEO_MODE_1_READ               0x81// MAX7456 DM_MODE register#define DM_MODE_WRITE                   0x04#define DM_MODE_READ                    0x84// MAX7456 DM_ADDRH register#define DM_ADDRH_WRITE                  0x05#define DM_ADDRH_READ                   0x85// MAX7456 DM_ADDRL register#define DM_ADDRL_WRITE                  0x06#define DM_ADDRL_READ                   0x87// MAX7456 DM_CODE_IN register#define DM_CODE_IN_WRITE                0x07#define DM_CODE_IN_READ                 0x87// MAX7456 DM_CODE_OUT register#define DM_CODE_OUT_READ                0xB0// MAX7456 FM_MODE register#define FM_MODE_WRITE                   0x08#define FM_MODE_READ                    
				
            
                
			
							

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉