打印

stm32f103 DMA usart外设传输到内存问题求助

[复制链接]
1150|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
10点不打烊|  楼主 | 2020-1-30 18:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 10点不打烊 于 2020-1-30 18:12 编辑

芯片是stm32f103c8t6,设置从usart2到内存DMA传输,空闲中断后取数据,设置是外设和内存都是8位数据宽度,外设地址不变,内存地址自增,内存设置32位数组Buf保存数据,结果中断后得到的数据有两个疑问:
1.假如发送数据 A1B2C3,空闲中断后内存得到数据是Buf【1】=C3B2A1,疑问是既然设置8位数据宽度,结果不应该是Buf【1】=A1,Buf【2】=B2,Buf【3】=C3吗?为何会内存地址要一直写满才会地址自增?写到8个Byte后才会开始写入Buf【2】;尝试设置内存地址Buf为8位数组,结果是得不到数据,按照说明好像也必须外设和内存数据位宽一样。
2.如果按照上面却是如此,如果发现只发送一个Byte数据,Usart不会进入空闲中断,既也得不到数据。
DMA配置如下:
        //DMA1通道6配置
        DMA_DeInit(DMA1_Channel6);   //将DMA的通道6寄存器重设为缺省值  USART2 RX对应的是DMA1通道6
        DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&USART2->DR;  //DMA外设ADC基地址
        DMA_InitStructure.DMA_MemoryBaseAddr = (vu32)usart2DmaRecFifoBuf;  //DMA内存基地址
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //数据传输方向,从外设读取发送到内存
        DMA_InitStructure.DMA_BufferSize = USART2_DMA_REC_FIFO_MAX_LEN;  //DMA通道的DMA缓存的大小
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //外设地址寄存器不变
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //内存地址寄存器递增
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;  //数据宽度为8位
        DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_Byte; //数据宽度为8位
        DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;  //工作在正常模式
        DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA通道x没有设置为内存到内存传输
        DMA_Init(DMA1_Channel6, &DMA_InitStructure);  //根据DMA_InitStruct中指定的参数初始化DMA的通道
        
//         DMA1_Channel6->CCR |= 0x40;
        
        USART_DMACmd(USART2,USART_DMAReq_Rx,ENABLE);

        DMA_Cmd(DMA1_Channel6, ENABLE);

使用特权

评论回复

相关帖子

沙发
tyw| | 2020-1-30 19:46 | 只看该作者
stm32F103 完整版 463页 4.2M 超清书签版.pdf (4.19 MB)
稀里煳涂学习STM32 63页 4.0M 超清版.pdf (3.93 MB)
零死角玩转STM32 初级篇 131页 4.3M 超清书签版.pdf (4.28 MB)
零死角玩转STM32 高级篇 152页 6.9M 超清书签版.pdf (6.83 MB)
零死角玩转STM32 系统篇 76页 2.0M 超清书签版.pdf (1.99 MB)
零死角玩转STM32 中级篇 127页 5.1M 超清书签版.pdf (5.04 MB)

使用特权

评论回复
板凳
10点不打烊|  楼主 | 2020-1-30 20:26 | 只看该作者
非常感谢楼上的资料,下载也会有目标性的去找资料,但是这个问题我找了两三天资料还是没有能找到原因、希望有知道的人再指教下。

使用特权

评论回复
地板
xch| | 2020-2-2 10:16 | 只看该作者
DMA 设置8位传输模式,每传输一次内存地址是加1. 32位数组指针加一地址是加4。你的ST mcu DMA目标地址能够设置成每次自动加4吗?

使用特权

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

本版积分规则

2

主题

10

帖子

0

粉丝