STM32的DMA串口直通

发布者:行者无疆1978最新更新时间:2021-11-03 来源: eefocus关键字:STM32  DMA 手机看文章 扫描二维码
随时随地手机看文章

搞这个,起因呢,公司产品里ZigBee模块固件版本不对,一大批产品需要二次升级。

需要升级的ZigBee模块是直接与stm32相连的,没有引出升级口,所以得搞个串口直通程序,通过232转MCU再转ZigBee,来进行升级。


一开始直接中断互通,结果呢,通倒是可以通,一升级固件就不行了,大概是因为数据量较大吧。


所以用了DMA,之前也没用过DMA,就慢慢学慢慢模仿着改呗。


这里要涉及到一个点,DMA的外设到外设,经常写的是,DMA只有外设到内存、内存到外设、内存到内存三种模式。


实际上,DMA是可以外设直接到外设的,而且用法非常非常简单,直接设置成外设到内存或内存到外设模式,然后把内存直接改成外设的地址,就可以了。


下面是我的程序,单片机是STM32F407,usart3和usart6 互通。


https://download.csdn.net/download/qq_36192233/11983754


说是互通,其实只有一路是DMA外设到外设。


一方面,只有下载一向有大量数据;一方面,usart3返回usart6,DMA外设到外设行不通。


这一点卡了我很久,一路我没多久就调好了,但返回的那一路我懵了几天。


我就搞不懂,凭啥数据进的来回不去,明明是几乎一模一样的配置。


我以为是配置问题,各种在网上找DMA配置的程序,然后对比参照着改配置,无果。


最后才发现,这一路就是通不了的。

在这里插入图片描述

注意图片下那一行,简单地说,所有的用DMA1的外设,都搞不通,人家DMA1外设端口压根不在总线矩阵


所以,用外设到外设之前,必须得先考虑一下这一点,不行的话,还是老老实实配两次DMA加好中断吧。


特别是stm32F4系列,据说f1系列都是可以的

关键字:STM32  DMA 引用地址:STM32的DMA串口直通

上一篇:stm32实用篇6:HAL库 DS18B20 驱动
下一篇:STM32直接存储器访问DMA

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved