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

[复制链接]
1360|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 | 显示全部楼层







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 10点不打烊 发表于 2020-1-30 20:26 | 显示全部楼层
非常感谢楼上的资料,下载也会有目标性的去找资料,但是这个问题我找了两三天资料还是没有能找到原因、希望有知道的人再指教下。
xch 发表于 2020-2-2 10:16 | 显示全部楼层
DMA 设置8位传输模式,每传输一次内存地址是加1. 32位数组指针加一地址是加4。你的ST mcu DMA目标地址能够设置成每次自动加4吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部