控制LCD由以下幾部分:
1.打開FSMC時(shí)鐘
2.初始化FSMC用到的IO口
3.FSMC初始化
//寄存器清零
//bank1有NE1~4,每一個(gè)有一個(gè)BCR+TCR,所以總共八個(gè)寄存器。
//這里我們使用NE4 ,也就對(duì)應(yīng)BTCR[6],[7]。
FSMC_Bank1->BTCR[6]=0X00000000;
FSMC_Bank1->BTCR[7]=0X00000000;
FSMC_Bank1E->BWTR[6]=0X00000000;
//操作BCR寄存器 使用異步模式
FSMC_Bank1->BTCR[6]|=1<<12; //存儲(chǔ)器寫使能
FSMC_Bank1->BTCR[6]|=1<<14; //讀寫使用不同的時(shí)序
FSMC_Bank1->BTCR[6]|=1<<4; //存儲(chǔ)器數(shù)據(jù)寬度為16bit
//操作BTR寄存器
//讀時(shí)序控制寄存器
FSMC_Bank1->BTCR[7]|=0<<28; //模式A
FSMC_Bank1->BTCR[7]|=1<<0; //地址建立時(shí)間(ADDSET)為2個(gè)HCLK
1/36M=27ns
//因?yàn)橐壕?qū)動(dòng)IC的讀數(shù)據(jù)的時(shí)候,速度不能太快,尤其對(duì)1289這個(gè)IC。
FSMC_Bank1->BTCR[7]|=0XF<<8;
//數(shù)據(jù)保存時(shí)間為16個(gè)HCLK
//寫時(shí)序控制寄存器
FSMC_Bank1E->BWTR[6]|=0<<28; //模式A
FSMC_Bank1E->BWTR[6]|=0<<0;
//地址建立時(shí)間(ADDSET)為1個(gè)HCLK
FSMC_Bank1E->BWTR[6]|=3<<8; //數(shù)據(jù)保存時(shí)間為4個(gè)HCLK
//使能BANK1,區(qū)域4
FSMC_Bank1->BTCR[6]|=1<<0; //使能BANK1,區(qū)域4
4.調(diào)用NT35310的初始化函數(shù)(代碼量太大就不粘貼了)
然后就是根據(jù)數(shù)據(jù)手冊(cè)進(jìn)行LCD的操作了,因?yàn)長CD是16位的所以內(nèi)部的第11位連接外面的PA10,所以
#define lcd_wr_r 0x6c000000 //寫命令
第11位為0
#define lcd_wr_d 0x6c000800 //寫數(shù)據(jù) 第11位為1
void LCD_WR_REG(u16 command)
{
}
void LCD_WR_DATA(u16 data)
{
}
void lcd_wr_cmd(u16 command,u16 data)
{
}