OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10314|回复: 5

STM32F4 FSMC驱动RA8875 读DDRAM问题 求指教!!!!!!!!!!!!!!!!!!!

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-1
在线时间
0 小时
发表于 2013-9-4 15:46:45 | 显示全部楼层 |阅读模式
FSMC驱动RA8875,基本屏幕所有代码都已调通,触摸屏也好了,现在就一个问题:

读内存时,比如BTE读取,连续读取数据,只有第一个点的数据是正确的,后面点的数据都是重复第一个点的数据,也就是说单独读一个点没问题,连续读就出错了。


其他 指令读写,内存写都没问题,相关代码后面贴上,望大神指点下……     








正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-1
在线时间
0 小时
 楼主| 发表于 2013-9-4 16:27:39 | 显示全部楼层
typedef struct
{
  __IO uint16_t LCD_RAM;
__IO uint16_t LCD_REG;
} LCD_TypeDef;
     
#define Bank1_SRAM1_ADDR  ((uint32_t)0x60000000)
#define Bank1_SRAM2_ADDR  ((uint32_t)0x64000000) 
#define Bank1_SRAM3_ADDR  ((uint32_t)0x68000000)
#define Bank1_SRAM4_ADDR  ((uint32_t)0x6C000000)

#define LCD_BASE           Bank1_SRAM3_ADDR
#define LCD                ((LCD_TypeDef *) LCD_BASE)


void BTE_Read(u16 width, u16 height, u16 SX, u16 SY, u8 SL)
{
u16 data[100] = {0},i=0;

  BTE_Size(width,height);
BTE_Source_Destination(SX,SY,SL,0,0,0);//BTE起始位置设置   
LCD_DataWrite(0x51,0x01);//光栅设定
LCD_DataWrite(0x50,0x80);//BTE开启 
LCD_RegWrite(0x02);
data[0] = LCD->LCD_RAM;
Chk_Busy();
while(i < 100)
{
data[i++] = LCD->LCD_RAM;
Chk_Busy();

Chk_BTE_Busy();

i = 0;
  BTE_Size(width,height);
BTE_Source_Destination(0,0,0,100,0,0);//BTE起始位置设置   
LCD_DataWrite(0x51,0xc0);//光栅设定
LCD_DataWrite(0x50,0x80);
LCD_RegWrite(0x02);
while(i < width*height)
{
LCD_RamWrite(data[i++]);
Chk_Busy();

Chk_BTE_Busy();
LCD_DataWrite(0x50,0x00);//BTE关闭
}
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-1
在线时间
0 小时
 楼主| 发表于 2013-9-4 16:30:27 | 显示全部楼层

void BTE_Read(u16 width, u16 height, u16 SX, u16 SY, u8 SL)
{
 u16 data[100] = {0},i=0;

  BTE_Size(width,height);
 BTE_Source_Destination(SX,SY,SL,0,0,0);//BTE起始位置设置    
 LCD_DataWrite(0x51,0x01);//光栅设定
 LCD_DataWrite(0x50,0x80);//BTE开启 

 LCD_RegWrite(0x02);//发送指令 0x02
 data[0] = LCD->LCD_RAM;
 Chk_Busy();
 while(i < 100)
 {
  data[i++] = LCD->LCD_RAM;
  Chk_Busy();
 }
 //Chk_BTE_Busy();
 
 i = 0;
  BTE_Size(width,height);
 BTE_Source_Destination(0,0,0,100,0,0);//BTE起始位置设置    
 LCD_DataWrite(0x51,0xc0);//光栅设定
 LCD_DataWrite(0x50,0x80);
 LCD_RegWrite(0x02);
 while(i < width*height)
 {
  LCD_RamWrite(data[i++]);
  Chk_Busy();
 }
 Chk_BTE_Busy();
 LCD_DataWrite(0x50,0x00);//BTE关闭


读数据主要在写红色部分,下面是把读的数据显示出来

回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2612
金钱
2612
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-9-4 16:39:55 | 显示全部楼层
单独读我可以,连续读也是不行。同求答案。
一直努力就很好。
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-1
在线时间
0 小时
 楼主| 发表于 2013-9-4 16:52:48 | 显示全部楼层
回复【4楼】qq942266575:
---------------------------------

希望有大神调出来的,给贴下代码参考下……
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-1
在线时间
0 小时
 楼主| 发表于 2013-9-5 12:30:22 | 显示全部楼层
回复【4楼】qq942266575:
---------------------------------
回复【4楼】qq942266575:
---------------------------------
结贴吧      CS线 直接IO控制拉低就可以了  其他用FSMC控制  ,CS时序的问题不满足8875
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表