打印

DMA数据传输问题求教

[复制链接]
697|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alexz2008|  楼主 | 2022-5-16 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 alexz2008 于 2022-5-16 15:00 编辑

代码如下:
        uint16_t dma_buffer[2] = {0x1234,0x5678};
        uint16_t dma_dst_buffer[1] = {0};        
        
        dma_single_data_parameter_struct dma_init_struct;
        rcu_periph_clock_enable(RCU_DMA1);
        dma_deinit(DMA1, DMA_CH5);
        dma_init_struct.direction    = DMA_MEMORY_TO_MEMORY;
        dma_init_struct.periph_addr  = (uint32_t)dma_buffer;
        dma_init_struct.periph_inc   = DMA_PERIPH_INCREASE_ENABLE;
        dma_init_struct.circular_mode = DMA_CIRCULAR_MODE_ENABLE;
        dma_init_struct.memory0_addr  = (uint32_t)dma_dst_buffer;
        dma_init_struct.memory_inc   = DMA_MEMORY_INCREASE_DISABLE;        
        dma_init_struct.periph_memory_width = DMA_MEMORY_WIDTH_16BIT;
        dma_init_struct.number       = 2;
        dma_init_struct.priority     = DMA_PRIORITY_ULTRA_HIGH;
        dma_single_data_mode_init(DMA1, DMA_CH5, &dma_init_struct);
        dma_channel_enable(DMA1, DMA_CH5);

请教下,我想用DMA把dma_buffer中2个数据(0x1234,0x5678)依次复制到dma_dst_buffer中去,
希望dst_buffer里值依次变为0x1234, 然后0x5678,但查看内存,dma_dst_buffer里2个字节都是0x34,这是为啥呀?用的GD32F405RET6

使用特权

评论回复
沙发
alexz2008|  楼主 | 2022-5-16 15:08 | 只看该作者
改成这个就对了:
dma_init_struct.periph_memory_width = DMA_PERIPH_WIDTH_16BIT;

有点糊涂,405下的DMA和105下区别好大

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝