Android平臺Bootloader的刷屏功能擴(kuò)展設(shè)計(jì)
2.2 LCD控制器和LCD驅(qū)動囂的硬件連接
ILI9481是一個單芯片TFT液晶顯示驅(qū)動器,通常LCD控制器和LCD驅(qū)動器之間有并口、串口、RGB三種接口。采用RGB接口時,控制信息(行同步、場同步等)由主控制器發(fā)送;采用并口、串口時,控制信息包含在發(fā)送的圖像數(shù)據(jù)中,該項(xiàng)目采用的是C6310 LCD控制器和ILI9481驅(qū)動器,它們采用并口連接,圖2描述了LCD主控制器和ILI9481的連接。本文引用地址:http://2s4d.com/article/159564.htm
驅(qū)動中針對硬件的操作主要為主控制器寄存器的配置,命令和圖像的傳輸由LCD主控制器完成。
3 LCD控制器操作流程設(shè)計(jì)
C6310采用L3層作為背景層、L4為命令層。當(dāng)緩沖區(qū)的圖像數(shù)據(jù)準(zhǔn)備好以后,通過B_LCD_BmpOntoScreen16Bpp_ILI9481()函數(shù)啟動LCD控制器,并將圖像數(shù)據(jù)搬移到LCD驅(qū)動器。B_LCD_BmlpOntoScreen16Bpp_ILI9481()啟動控制器后,啟動一個等待隊(duì)列,等待圖像數(shù)據(jù)傳輸完畢。
圖像搬移過程中會產(chǎn)生中斷,這里用到L4_EOF、L3_EOF、和L1_EOF中斷,其中L4_EOF為命令傳輸完成中斷,L3_EOF和L1_EOF分別為L3層和L1層數(shù)據(jù)傳輸完成中斷。首先,C6310_LCDC向LCD驅(qū)動器發(fā)送一組數(shù)據(jù),命令發(fā)送完畢后產(chǎn)生L4_EOF中斷。然后,C6310_LCDC向LCD驅(qū)動器發(fā)送圖像數(shù)據(jù),發(fā)送完畢后產(chǎn)生L3_EOF和L1_EOF中斷。
在LCD進(jìn)行數(shù)據(jù)顯示前,首先要對LCD控制器的相關(guān)寄存器進(jìn)行正確的設(shè)置。表1是C6310中的主要寄存器及其說明。
連接16位RGB并行接口屏,其寄存器的操作流程如下;
①將命令index和命令數(shù)據(jù)寫入存儲器,如果命令是16位,則每一個字對應(yīng)15:0是命令。如果命令為8位,則每一個字對應(yīng)7:0是命令,通過每一個字中的第17位、WR_RD和第16位A0控制命令屬性,如果該命令是最后一個命令,命令的第19位設(shè)置為1。
②配置LCD寄存器。配置第4層的起始地址為命令存儲地址,配置LCD_PCONF控制讀寫時序,配置LCD_L1_SIZE的屏幕大小,配置LCD_PCONF控制讀寫時序,配置LCD_LCONF控制每層的開關(guān)和透明覆蓋使能等。
③使能LCD控制位LCD_SEL,LCD控制器自動讀取存儲器中數(shù)據(jù)傳輸?shù)浇涌凇?br /> ④等待L1_SOF中斷產(chǎn)生后,可以寫下一幀所需要的命令和修改其他層起始地址等。
⑤等待BOF中斷可以配置下一幀的LCD_CTRL寄存器或者每一層起始地址。
⑥如果連接的是并口或者串口LCD屏,在圖像數(shù)據(jù)寫入存儲器的同時將命令寫到第4層圖像對應(yīng)地址,LCD控制器會自動讀取這些命令輸出。LCD控制器操作流程如圖3所示。
從流程圖可以看出,當(dāng)EOF中斷產(chǎn)生之后,就可以配置LCD控制器下一幀數(shù)據(jù)的起始地址。此時,這些配置不會在當(dāng)前幀起效,而是在下一幀起效,如果需要當(dāng)前命令發(fā)送完畢之后發(fā)送圖像數(shù)據(jù),L4_WINTH需配置為大于實(shí)際命令發(fā)送個數(shù)。本驅(qū)動為了讓LCD控制器傳送一幀圖像后停止工作,當(dāng)L4_EOF中斷到來后,配置下一幀發(fā)送的命令為0x30003。
評論