欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

stm32的fsmc控制NT35310液晶顯示屏

作者:明入于地   來源:明入于地   點(diǎn)擊數(shù):  更新時(shí)間:2014年06月14日   【字體:
學(xué)了兩周的ARM9,感覺還是很難入門,再加上這個(gè)暑假找到了一個(gè)stm32的實(shí)習(xí)崗位,不得又回到了stm32的學(xué)習(xí)上,其中學(xué)習(xí)ARM9之前的STM32 FSMC部分學(xué)的很蛋疼,但學(xué)了ARM9之后搞清了SRAM SDRAM NOR NAND之間的區(qū)別,很多問題就迎刃而解了。



控制LCD由以下幾部分:
1.打開FSMC時(shí)鐘
 RCC->AHBENR|=1<<8;
2.初始化FSMC用到的IO口
 RCC->APB2ENR|=3<<5;
 GPIOD->CRL&=0xff00ff00;
 GPIOD->CRL|=0x00bb00bb; //RD=PD4 WR=PD5
 GPIOD->CRH&=0x00fff000;
 GPIOD->CRH|=0xbb000bbb;
 GPIOD->ODR|=3<<0;
 GPIOD->ODR|=7<<8;
 GPIOD->ODR|=3<<14;

 GPIOE->CRL&=0x0fffffff;
 GPIOE->CRL|=0xb0000000;
 GPIOE->CRH&=0x00000000;
 GPIOE->CRH|=0xbbbbbbbb;
 GPIOE->ODR|=1<<7;
 GPIOE->ODR|=0xff<<8;

 RCC->APB2ENR|=1<<8;
 GPIOG->CRL&=0xfffffff0;
 GPIOG->CRL|=0x0000000b;//RS=PG0

 GPIOG->CRH&=0xfff0ffff;
 GPIOG->CRH|=0x000b0000;//CS=PG12

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 
  //4個(gè)HCLK(HCLK=72M)因?yàn)橐壕?qū)動(dòng)IC的寫信號(hào)脈寬,最少也得50ns。72M/4=24M=55ns    
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)長(zhǎng)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)
{
 *(u16*)(lcd_wr_r)=command;
}
void LCD_WR_DATA(u16 data)
{
 *(u16*)(lcd_wr_d)=data;
}

void lcd_wr_cmd(u16 command,u16 data)
{
 *(u16*)(lcd_wr_r)=command;
 *(u16*)(lcd_wr_d)=data;
}

相關(guān)文章