OpenEdv-开源电子网

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

miniStm32的DMA内存到内存传输如何设置啊?

[复制链接]

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-6
在线时间
1 小时
发表于 2015-4-12 18:27:23 | 显示全部楼层 |阅读模式
5金钱
内存到内存的DMA通道可以随便选择吗?我用串口传输数组只能传输第一个数据,内存和外设地址都设置为递增也不行。是波特率的问题吗?

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

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-6
在线时间
1 小时
 楼主| 发表于 2015-4-12 21:46:53 | 显示全部楼层
串口发送和DMA内存到内存已经可以了。但是DMA 内存-内存的数组里第一个数无法传送!?这要怎么解决啊???????
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-4-12 22:38:07 | 显示全部楼层
回复【2楼】广寒宫:
---------------------------------
串口发送不要有DMA的内存到内存模式,内存到内存模式没有内部触发,只要你一打开DMA,DMA就会把数据不停往串口搬,不管串口有没有把数据发送完成,串口第一个数据都还没有发送完成,DMA估计早就把你的数组的数据全搬完到串口上,
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-12 22:40:21 | 显示全部楼层
回复【2楼】广寒宫:
---------------------------------
 你地址设置的有问题吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-6
在线时间
1 小时
 楼主| 发表于 2015-4-13 09:31:20 | 显示全部楼层
回复【3楼】mzwhhwj:
---------------------------------
我是用DMA内存到内存,然后用串口发数据检测DMA传输是否正确。结果就是第一个数据没有
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-6
在线时间
1 小时
 楼主| 发表于 2015-4-13 09:51:16 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
u8 TEXT_TO_SEND[]={0x58,0xfe,0x73,0xab};
u8 ADDATA[]={0};
int main(void)
{
......
DMA_init((u32)TEXT_TO_SEND,(u32)ADDATA);//从TEXT_TO_SEND拷贝到ADDATA,数组
MYDMA_Enable();
 if(DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET)//等待通道4传输完成
       {
 DMA_ClearFlag(DMA1_FLAG_TC4);  //清除发送完成标志   
       } 
......
}
void DMA_init(u32 capr,u32 dat)//capr--外设地址;dat--DMA内存基地址

        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA传输
delay_ms(2);
DMA_DeInit(DMA1_Channel4); 
DMA_InitStructure.DMA_PeripheralBaseAddr =capr;//外设地址 
DMA_InitStructure.DMA_MemoryBaseAddr = dat;  //DMA内存基地址
DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralSRC ; //外设作为数据目的地DMA_DIR_PeripheralDST
        DMA_InitStructure.DMA_BufferSize =5200;//DMA缓存大小 
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;  
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //内存地址寄存器不递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//外设数据宽度为8位 
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;  //内存数据宽度为8位 
        DMA_InitStructure.DMA_Mode =DMA_Mode_Normal;             //工作在正常缓存模式 
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //设置DMA通道优先级为高中    
DMA_InitStructure.DMA_M2M =DMA_M2M_Enable;xn--dma-f88d44bc7ga332rba9843g21fo16avokzxbpya
DMA_Init(DMA1_Channel4, &DMA_InitStructure);
}
void MYDMA_Enable(void)

DMA_Cmd(DMA1_Channel4, DISABLE );  //关闭USART1 TX DMA1 所指示的通道       
    DMA_InitStructure.DMA_BufferSize =4;
DMA_Init(DMA1_Channel4, &DMA_InitStructure);
  DMA_Cmd(DMA1_Channel4, ENABLE);  //使能 
}
//就是这样设置的,但用串口接收数据是这样的”FE 73 AB AB FE 73 AB AB FE 73 AB AB FE 73 AB AB“,没有了第一个数据“58”
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-4-13 10:25:39 | 显示全部楼层
回复【6楼】广寒宫:
--------------------------------
 你的配置有大大的问题,我都看不出来你是想到底怎么用,是用DMA的内存到内存模式把一个数组的数据搬到另一个数组,还是用DMA把数组的数据搬到串口发送
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-6
在线时间
1 小时
 楼主| 发表于 2015-4-13 10:33:37 | 显示全部楼层
回复【7楼】mzwhhwj:
---------------------------------
是用DMA把数组拷贝到数组,DMA传输完成后,我就把拷贝得到的数组数据发送到串口助手,检测是否正确。这样
回复

使用道具 举报

11

主题

108

帖子

0

精华

高级会员

Rank: 4

积分
629
金钱
629
注册时间
2016-2-5
在线时间
100 小时
发表于 2017-8-16 00:15:03 | 显示全部楼层
DMA2通道随便选
回复

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6549
金钱
6549
注册时间
2018-6-27
在线时间
551 小时
发表于 2020-12-1 18:16:26 | 显示全部楼层
学习学习,学习学习。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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