TFT的RS端地址偏移量请教

2019-10-14 21:11发布

战舰版里的TFT使用FSMC来显示数据,使用FSMC_A10控制RS端,
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A1作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111110=0X3E      
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)
这个使用A10的地址偏移是0x000007FE,这个是怎么算的?
加入我使用A0呢,偏移又是多少
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
正点原子
1楼-- · 2019-10-19 09:53
//寄存器清零
//bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
//这里我们使用NE1 ,也就对应BTCR[0],[1]。     
FSMC_Bank1->BTCR[0]=0X00000000;
FSMC_Bank1->BTCR[1]=0X00000000;
FSMC_Bank1E->BWTR[0]=0X00000000;
//操作BCR寄存器 使用异步模式
FSMC_Bank1->BTCR[0]|=1<<12; //存储器写使能
FSMC_Bank1->BTCR[0]|=1<<14; //读写使用不同的时序
FSMC_Bank1->BTCR[0]|=1<<4;  //存储器数据宽度为16bit      
//操作BTR寄存器
//读时序控制寄存器      
FSMC_Bank1->BTCR[1]|=0<<28; //模式A        
FSMC_Bank1->BTCR[1]|=1<<0;  //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns    
//因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。
FSMC_Bank1->BTCR[1]|=0XF<<8;   //数据保存时间为16个HCLK    
//写时序控制寄存器  
FSMC_Bank1E->BWTR[0]|=0<<28;  //模式A        
FSMC_Bank1E->BWTR[0]|=0<<0; //地址建立时间(ADDSET)为1个HCLK 
  //4个HCLK(HCLK=72M)因为液晶驱动IC的写信号脉宽,最少也得50ns。72M/4=24M=55ns    
FSMC_Bank1E->BWTR[0]|=3<<8;  //数据保存时间为4个HCLK
//使能BANK1,区域4
FSMC_Bank1->BTCR[0]|=1<<0; //使能BANK1,区域1
Tardis
2楼-- · 2019-10-19 11:40
回复【34楼】北溟鱼:
---------------------------------
兄弟,你的代码没错,请检查你的GPIO初始化序列是否正确,另外,你的FSMC_NORSRAMInit()这函数有调用不?没调用的话,你只是给结构体赋值是没用的。
北溟鱼
3楼-- · 2019-10-19 11:58
回复【39楼】Tardis:
---------------------------------
谢谢,已经做出来了哈~~~
charly
4楼-- · 2019-10-19 16:38
回复【33楼】Tardis:
---------------------------------
ox400减1   这句没理解,为什么减1啊
Tardis
5楼-- · 2019-10-19 18:40
 精彩回答 2  元偷偷看……
charly
6楼-- · 2019-10-19 21:05
回复【42楼】Tardis:
---------------------------------
我按实验做的用BANK1区域4做的,我如果想让A10输出高,不一定非要往0x6c000800写数据吧    我向0x6c001800写数据也行吧  只是A11也会变成输出高电平,是吗

一周热门 更多>