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

查看: 6770|回复: 3

STM32的关于LCD driver for AM-240320L8TNQW00H例程的一些疑惑

[复制链接]

2

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2009-1-6 11:57:00 | 显示全部楼层 |阅读模式
* Description        : This file includes the LCD driver for AM-240320L8TNQW00H
*                     (LCD_ILI9320) Liquid Crystal Display Module of STM3210E-EVAL
*                      board.
//////////////////////////////////////////////////////////////////////////////////////
/* Private typedef -----------------------------------------------------------*/
typedef struct
{
  vu16 LCD_REG;
  vu16 LCD_RAM;
} LCD_TypeDef;
/* LCD is connected to the FSMC_Bank1_NOR/SRAM4 and NE4 is used as ship select signal */
#define LCD_BASE    ((u32)(0x60000000 | 0x0C000000))
#define LCD         ((LCD_TypeDef *) LCD_BASE)
////////////////////////////////////////////////////////////////////////////////////////
 void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
  /* Write 16-bit Index, then Write Reg */
  LCD->LCD_REG = LCD_Reg;
  /* Write 16-bit Reg */
  LCD->LCD_RAM = LCD_RegValue;
}
/////////////////////////////////////////////////////////////////////////////////////////
u16 LCD_ReadReg(u8 LCD_Reg)
{
  /* Write 16-bit Index (then Read Reg) */
  LCD->LCD_REG = LCD_Reg;
  /* Read 16-bit Reg */
  return (LCD->LCD_RAM);
}
/////////////////////////////////////////////////////////////////////////////////////////
void LCD_WriteRAM_Prepare(void)
{
  LCD->LCD_REG = R34;
}
/////////////////////////////////////////////////////////////////////////////////////////
void LCD_WriteRAM(u16 RGB_Code)
{
  /* Write 16-bit GRAM Reg */
  LCD->LCD_RAM = RGB_Code;
}
 这是例程里lcd.c里的一下底层函数的实现。写LCD_ILI9320的寄存器用 LCD_WriteReg()函数,
LCD->LCD_REG = LCD_Reg;是先发送reg的编号,为什么用 LCD->LCD_RAM = LCD_RegValue; 来实现发送
reg需要修改的数据啊?
在结构体里的定义:LCD_REG地址:0x6c000000,LCD_RAM地址:0x6c000001,STM32的FSMC的地址引脚A0接
LCD_ILI9320的RS(L:访问reg;H:访问ram) ,通过给LCD_REG或LCD_RAM写数据来实现访问reg和ram,是这样理解的吗?
那么为什么 LCD_WriteReg()函数里对reg写操作,是对LCD_RAM赋值啊?不懂。还有 LCD_ReadReg(u8 LCD_Reg)的读操作,
也不大明白,怎么实现的啊?
对LCD_ILI932里的reg,ram读写操作时,要给/WR(写入),/RD(读入) 信号的,在用FSMC模块时,程序里没涉及到这些读写信号啊?
高手指点下在下啊?FSMC控制LCD_ILI9320是个什么过程啊?小弟不胜感激!

  /* Write 16-bit Reg */
  LCD->LCD_RAM = LCD_RegValue;
}
 
u16 LCD_ReadReg(u8 LCD_Reg)
{
  /* Write 16-bit Index (then Read Reg) */
  LCD->LCD_REG = LCD_Reg;
  /* Read 16-bit Reg */
  return (LCD->LCD_RAM);
}
 
void LCD_WriteRAM_Prepare(void)
{
  LCD->LCD_REG = R34;
}
 
void LCD_WriteRAM(u16 RGB_Code)
{
  /* Write 16-bit GRAM Reg */
  LCD->LCD_RAM = RGB_Code;

 
 
 
 
 
 
 
 
 
 
回复

使用道具 举报

61

主题

75

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2009-1-6 18:12:18 | 显示全部楼层

RE:STM32的关于LCD driver for AM-240320L8TNQW00H

那我觉得楼主应该对这个屏的控制 要先很熟悉才行吧
回复 支持 反对

使用道具 举报

2

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2009-1-6 20:10:52 | 显示全部楼层

回复:STM32的关于

是的,之前我用PIC单片机做过LCD屏的程序,并口线(inter8080)有:数据线D0-D15,WR(写入),RD(读入),RS(H电平时访问reg;L电平时访问RAM)。
在这个例程里,STM32的A0接LCD的RS脚信号,通过STM32地址线A0的0,1变换,来实现访问LCD_ILI9320里的reg和RAM。我想应该是这么实现的。但是,写reg的函数void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)里,怎么是 LCD->LCD_RAM = LCD_RegValue;给RAM赋值呢?
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-12-17 14:34:44 | 显示全部楼层

RE:STM32的关于LCD driver for AM-240320L8TNQW00H例程的一些疑惑


因为该RAM地址是在片外的,即是TFT挂载的片外地址,所以直接赋值即可
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版