OpenEdv-开源电子网

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

关于战舰综合实验中的刷新屏幕部分存在疑问,希望能得到回复

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-4-9
在线时间
0 小时
发表于 2013-4-19 20:32:21 | 显示全部楼层 |阅读模式
我因为没有使用过STM32,现在正在将原子哥的综合实验翻译到自己的板子上来,现在先将问题经历描述如下:
    在system_init()函数之后,应该会进入main_task(start不算),然后我将进到spb_init();此时,在我理解中是通过这个函数将开机桌面显示出来,也就是覆盖掉原来的启动界面。而在spb_init()函数中,真正用来刷新屏幕的只有一句话:“SLCD.show(SLCD.pos);//显示主界面。”现在将原子哥的void slcd_frame_show(unsigned short int x)的全部代码贴出:
//显示帧
//x:帧的x坐标.
//color:颜色.
void slcd_frame_show(u16 x)
{                              
    LCD_Scan_Dir(U2D_L2R);        //设置扫描方向
    LCD_SetCursor(0x00,0x0000);    //设置光标位置
    LCD_WriteRAM_Prepare();     //开始写入GRAM          
    LCD_DMA_Enable(x);            //启动一次DMA传输
    LCD_Scan_Dir(DFT_SCAN_DIR);    //恢复默认方向
}
经过我本人翻译后实验,发现如果我仅仅是在第四句话替换成不断地塞入数据,屏幕并不会更新,我将测试代码贴下:
LCD_Scan_Dir(U2D_L2R);        //设置扫描方向
LCD_SetCursor(0x00,0x0000);    //设置光标位置
LCD_WriteRAM_Prepare();     //开始写入GRAM
TFT_IO_DIRECTION_OUT;
 for(i = 0; i<100;i++){
    TFT_DATA->DATA = 0xffff;
}
只有当我这样写才能在屏幕上观察到变化:
LCD_Scan_Dir(U2D_L2R);        //设置扫描方向
LCD_SetCursor(0x00,0x0000);    //设置光标位置
LCD_WriteRAM_Prepare();     //开始写入GRAM
TFT_IO_DIRECTION_OUT;
for(i = 0; i<100;i++){
        TFT_RS->DATA= 1;
        TFT_CS->DATA= 0;
        TFT_DATA->DATA = 0xffff;
        TFT_RW->DATA= 0;
        TFT_RW->DATA= 1;
        TFT_CS->DATA= 1;
}
我的DMA传送数据是直接传送的(nios软核中的标配),期间貌似不能允许其他操作(也就是不能将TFT_RS之类的置高置低),现将问题描述如下:
1、请问STM32的DMA在执行数据传送的时候能够操作其他的引脚以达到屏幕刷新操作吗?、
2、如果不能,请问直接输入数据可以直接刷屏吗?
3、为什么我在这个函数中。在LCD_Scan_Dir(U2D_L2R);        //设置扫描方向之后,使用如下两个函数LCD_SetCursor(0x00,0x0000);    //设置光标位置
                                                                                                                                            LCD_Fill(0,0,240,320,BLACK);
使用这两条语句为什么不能将屏幕刷黑,而当我将扫描方向注释掉后可以刷黑了。
希望有知情者能给予帮助


若非孤在此,不知几人称王,几人称帝!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-19 23:12:35 | 显示全部楼层
回复【楼主位】暗杀烈火:
---------------------------------
1,可以.DMA是硬件操作,不需要CPU干预.
2,直接输入数据,可以刷屏.
3,这个要看屏的型号,9320,9325之类的,应该哈可以,不过9341/68042等奇葩IC,就可能有问题了,具体还要分析代码才能知道.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-4-9
在线时间
0 小时
 楼主| 发表于 2013-4-20 07:54:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
1、DMA是硬件操作,但是它传输的时候我并不能构造一个时序让它来传输吧,我的意思是 例如:
        TFT_RS->DATA= 1;
        TFT_CS->DATA= 0;
        TFT_DATA->DATA = 0xffff;
        TFT_RW->DATA= 0;
        TFT_RW->DATA= 1;
        TFT_CS->DATA= 1;
我的DMA仅仅是TFT_DATA,但是其他的引脚还是归我的CPU管的,并不能做到一个时序传送吧?
2、我的屏幕型号ID是9320,但是我现在确实碰到这个问题了(不能直接送数据刷屏),我的屏幕并不是你卖的那种,引脚也不一样,例如我现在的画点函数是:
void LCD_DrawPoint(unsigned short int x,unsigned short int y)
{
LCD_SetCursor(x,y); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
LCD_WriteRAM(POINT_COLOR);
}
void LCD_WriteRAM(unsigned short int RGB_Code)
{
LCD_WR_DATA(RGB_Code);
}
void LCD_WR_DATA(unsigned short int data)
{
TFT_RS->DATA= 1;
TFT_CS->DATA= 0;
TFT_IO_DIRECTION_OUT;
TFT_DATA->DATA = data;
TFT_RW->DATA= 0;
TFT_RW->DATA= 1;
TFT_CS->DATA= 1;
}
并不是你在综合实验示例代码里面的仅仅是一句话:
void LCD_WR_DATA(u16 data)
{         
LCD->LCD_RAM=data;  
}
是不是你用STM32生成了一个“硬件”,只需要给它送数据,它会自动将屏幕的时序给弄出来,再将数据输入进去呢?
谢谢原子哥的回复
若非孤在此,不知几人称王,几人称帝!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-20 14:35:45 | 显示全部楼层
回复【3楼】暗杀烈火:
---------------------------------
1,STM32的DMA是硬件的,不需要CPU干预.你的芯片,我就不知道了.
2,战舰板用的FSMC,只需要写地址,和数据,其时序由FSMC控制器自动管理.
如果你用的io模拟,则可以参考下我们的Mini板代码.那个是用的IO模拟的方式.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-4-9
在线时间
0 小时
 楼主| 发表于 2013-4-22 19:32:28 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
多谢,有空我再用verilog自己写一个模拟你们给TFT送数据的FSMC吧……貌似很难的样子
若非孤在此,不知几人称王,几人称帝!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 02:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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