你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F103ZET6使用FSMC驱动TFT的学习 (四)

[复制链接]
EEFOCUS小白 发布时间:2015-4-1 10:12
本帖最后由 EEFOCUS小白 于 2015-4-1 10:13 编辑

现在明白了我们的bit17对应的是FSMC的bit16,也就是A16了,所以我们的硬件连线应该是PA16了,也就是说HADDR
信号线是需要转换到外部存储器的内部AHB地址线,是字节地址。
给地址、将地址映射到外存储器(由HADDR的A25--A1映射到A24---A0)
注意点就是这个地方了,其他的时序问题和前面用IO模拟是差不多的,唯一的好处就是,我们有很多控制信号就不需要管了。最后贴上代码吧

  • /*******************************************************************************
  • * Function Name  : LCD_WriteReg
  • * Description    : Writes to the selected LCD register.
  • * Input          : - LCD_Reg: address of the selected register.
  • *                  - LCD_RegValue: value to write to the selected register.
  • * Output         : None
  • * Return         : None
  • *******************************************************************************/  
  • void LCD_WriteReg(unsigned char LCD_Reg,unsigned int LCD_RegValue)  
  • {  
  •     /* Write 16-bit Index, then Write Reg */  
  •     LCD->LCD_REG = LCD_Reg;                  //这里表示写寄存器  
  •     /* Write 16-bit Reg */                    
  •     LCD->LCD_RAM = LCD_RegValue;     //这里表示写寄存器的值(也就是数据)  
  • }  
  •   
  • /*******************************************************************************
  • * Function Name  : LCD_ReadReg
  • * Description    : Reads the selected LCD Register.
  • * Input          : None
  • * Output         : None
  • * Return         : LCD Register Value.
  • *******************************************************************************/  
  • u16 LCD_ReadReg(unsigned char LCD_Reg)  
  • {  
  •     /* Write 16-bit Index (then Read Reg) */  
  •     LCD->LCD_REG = LCD_Reg;              //这里表示先写寄存器  
  •     /* Read 16-bit Reg */  
  •     return (LCD->LCD_RAM);               //读取值  
  • }  
  •   
  • /*******************************************************************************
  • * Function Name  : LCD_WriteRAM_Prepare
  • * Description    : Prepare to write to the LCD RAM.
  • * Input          : None
  • * Output         : None
  • * Return         : None
  • *******************************************************************************/  
  • void LCD_WriteRAM_Prepare(void)  
  • {  
  •     LCD->LCD_REG = R34;  
  • }  
  •   
  • /*******************************************************************************
  • * Function Name  : LCD_WriteRAM
  • * Description    : Writes to the LCD RAM.
  • * Input          : - RGB_Code: the pixel color in RGB mode (5-6-5).
  • * Output         : None
  • * Return         : None
  • *******************************************************************************/  
  • void LCD_WriteRAM(u16 RGB_Code)                    
  • {  
  •     /* Write 16-bit GRAM Reg */  
  •     LCD->LCD_RAM = RGB_Code;  
  • }  
  •   
  • /*******************************************************************************
  • * Function Name  : LCD_ReadRAM
  • * Description    : Reads the LCD RAM.
  • * Input          : None
  • * Output         : None
  • * Return         : LCD RAM Value.
  • *******************************************************************************/  
  • unsigned int LCD_ReadRAM(void)  
  • {  
  •     unsigned int dummy;  
  •     /* Write 16-bit Index (then Read Reg) */  
  •     LCD->LCD_REG = R34; /* Select GRAM Reg */  
  •     /* Read 16-bit Reg */  
  •     dummy = LCD->LCD_RAM;   
  •     return dummy;  
  • }  
  •   
  • /*******************************************************************************
  • * Function Name  : LCD_SetCursor
  • * Description    : Sets the cursor position.
  • * Input          : - Xpos: specifies the X position.
  • *                  - Ypos: specifies the Y position.  
  • * Output         : None
  • * Return         : None
  • *******************************************************************************/  
  •   
  •   
  • void LCD_SetCursor(unsigned int Xpos, unsigned int Ypos)  
  • {  
  •     LCD_WriteReg(0x06,Ypos>>8);  
  •     LCD_WriteReg(0x07,Ypos);  
  •       
  •     LCD_WriteReg(0x02,Xpos>>8);  
  •     LCD_WriteReg(0x03,Xpos);   
  • }              
/******************************************************************************** Function Name  : LCD_WriteReg* Description    : Writes to the selected LCD register.* Input          : - LCD_Reg: address of the selected register.*                  - LCD_RegValue: value to write to the selected register.* Output         : None* Return         : None*******************************************************************************/void LCD_WriteReg(unsigned char LCD_Reg,unsigned int LCD_RegValue){        /* Write 16-bit Index, then Write Reg */        LCD->LCD_REG = LCD_Reg;                                        //这里表示写寄存器        /* Write 16-bit Reg */                                                LCD->LCD_RAM = LCD_RegValue;                //这里表示写寄存器的值(也就是数据)}/******************************************************************************** Function Name  : LCD_ReadReg* Description    : Reads the selected LCD Register.* Input          : None* Output         : None* Return         : LCD Register Value.*******************************************************************************/u16 LCD_ReadReg(unsigned char LCD_Reg){        /* Write 16-bit Index (then Read Reg) */        LCD->LCD_REG = LCD_Reg;                                //这里表示先写寄存器        /* Read 16-bit Reg */        return (LCD->LCD_RAM);                                //读取值}/******************************************************************************** Function Name  : LCD_WriteRAM_Prepare* Description    : Prepare to write to the LCD RAM.* Input          : None* Output         : None* Return         : None*******************************************************************************/void LCD_WriteRAM_Prepare(void){        LCD->LCD_REG = R34;}/******************************************************************************** Function Name  : LCD_WriteRAM* Description    : Writes to the LCD RAM.* Input          : - RGB_Code: the pixel color in RGB mode (5-6-5).* Output         : None* Return         : None*******************************************************************************/void LCD_WriteRAM(u16 RGB_Code)                                         {        /* Write 16-bit GRAM Reg */        LCD->LCD_RAM = RGB_Code;}/******************************************************************************** Function Name  : LCD_ReadRAM* Description    : Reads the LCD RAM.* Input          : None* Output         : None* Return         : LCD RAM Value.*******************************************************************************/unsigned int LCD_ReadRAM(void){        unsigned int dummy;        /* Write 16-bit Index (then Read Reg) */        LCD->LCD_REG = R34; /* Select GRAM Reg */        /* Read 16-bit Reg */        dummy = LCD->LCD_RAM;         return dummy;}/******************************************************************************** Function Name  : LCD_SetCursor* Description    : Sets the cursor position.* Input          : - Xpos: specifies the X position.*                  - Ypos: specifies the Y position. * Output         : None* Return         : None*******************************************************************************/void LCD_SetCursor(unsigned int Xpos, unsigned int Ypos){        LCD_WriteReg(0x06,Ypos>>8);        LCD_WriteReg(0x07,Ypos);                LCD_WriteReg(0x02,Xpos>>8);        LCD_WriteReg(0x03,Xpos);  }                        

对比下之前的用IO驱动的方式,确实是少了一些控制信号!

收藏 评论2 发布时间:2015-4-1 10:12

举报

2个回答
stary666 回答时间:2015-4-1 11:07:04
楼主乃绝对强人
为什么是EEFOCUS小白 回答时间:2015-4-3 12:15:20
谢谢支持

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版