OpenEdv-开源电子网

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

SRAM和TFT使用FSMC和DMA的问题

[复制链接]

9

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-6-10
在线时间
0 小时
发表于 2015-6-10 11:22:05 | 显示全部楼层 |阅读模式
5金钱
STM32如何通过DMA自动传输外部SRAM的数据显示到TFT上,使用FMSC来控制?哪位大侠给发个电路图和配套程序让小弟参考学习一下,谢谢!

最佳答案

查看完整内容[请看2#楼]

参考我们的战舰V3/探索者F4综合实验的主界面实现方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-10 11:22:06 | 显示全部楼层
参考我们的战舰V3/探索者F4综合实验的主界面实现方式。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-10 12:59:53 | 显示全部楼层
大家给指导一下 谢谢!我来顶一下
回复

使用道具 举报

9

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-11 08:49:53 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
void LCD_DMA_Coinfig(void)
{     

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); //使能DMA传输

    DMA_DeInit(DMA2_Channel5);   //将DMA的通道1寄存器重设为缺省值
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)LCD_GRAM_BUF;  //DMA外设ADC基地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)0X6C000800;  //DMA内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //数据传输方向,从内存读取发送到外设
DMA_InitStructure.DMA_BufferSize = DMA2_MEM_LEN;  //DMA通道的DMA缓存的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;  //外设地址寄存器不变
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;  //内存地址寄存器递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  //数据宽度为8位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //数据宽度为8位
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;  //工作在正常缓存模式
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级 
DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;  //DMA通道x没有设置为内存到内存传输
DMA_Init(DMA2_Channel5, &DMA_InitStructure);  //根据DMA_InitStruct中指定的参数初始化DMA的通道USART1_Tx_DMA_Channel所标识的寄存器   
 
}

老大 这段怎么外设地址和内存地址的递增我看的很迷糊,外设地址和内存地址为啥是这样子?位宽为啥不是16位?上面说是8位
回复

使用道具 举报

9

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-11 11:39:59 | 显示全部楼层
还得补充一个问题
//开启一次LCD DMA传输
//x:其实传输地址编号(0~240)
void LCD_DMA_Enable(u16 x)
{
//因为DMA每次传输数据有限,故分两次传输.
//第一次传输        
  DMA_Cmd(DMA2_Channel5,DISABLE); //关闭DMA传输
  DMA_ClearFlag(DMA2_FLAG_TC5); //清除上次的传输完成标记 
LCD_CUR_LINE=x;
DMA2_Channel5->CNDTR=DMA2_MEM_LEN; 
DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE]; //DMA2,改变存储器地址
DMA_Cmd(DMA2_Channel5, ENABLE);//开启DMA传输
    while(DMA_GetFlagStatus(DMA2_FLAG_TC5)==RESET); //等待
//第二次传输
DMA_ClearFlag(DMA2_FLAG_TC5); //清除上次的传输完成标记
DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE+120]; //DMA1,改变存储器地址

DMA_Cmd(DMA2_Channel5,DISABLE); //关闭DMA传输
DMA2_Channel5->CNDTR=DMA2_MEM_LEN; 
DMA_Cmd(DMA2_Channel5, ENABLE);//开启DMA传输
while(DMA_GetFlagStatus(DMA2_FLAG_TC5)==RESET); //等待


}
这个x是什么作用?为啥第二次传输DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE+120]; 其中LCD_CUR_LINE+120又是什么原因这么变化?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-11 22:27:06 | 显示全部楼层
回复【4楼】sudingkun:
---------------------------------
注释有误,是16位的。 



回复【5楼】sudingkun:
---------------------------------
屏幕宽度为240,一次传输一半,你说是多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-12 09:20:26 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
谢谢老大 有些明白了!
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2019-9-9
在线时间
20 小时
发表于 2021-10-18 10:21:22 | 显示全部楼层
正点原子 发表于 2015-6-10 11:22
参考我们的战舰V3/探索者F4综合实验的主界面实现方式。

原子哥现在还有这个例程吗?我找了战舰和探索者还有阿波罗的资料都没找到这个例程了
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2019-9-9
在线时间
20 小时
发表于 2021-10-18 10:57:45 | 显示全部楼层
正点原子 发表于 2015-6-10 11:22
参考我们的战舰V3/探索者F4综合实验的主界面实现方式。

综合实验中我只看到LCD 采用SRAM的方案加速,没有DMA的部分
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 08:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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