历史上的今天
返回首页

历史上的今天

今天是:2024年11月03日(星期日)

2021年11月03日 | STM32的DMA串口直通

2021-11-03 来源:eefocus

搞这个,起因呢,公司产品里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系列都是可以的

推荐阅读

史海拾趣

Artesyn Embedded Technologies公司的发展小趣事

Artesyn Embedded Technologies自1981年成立以来,一直致力于电源产品的研发与创新。在20世纪90年代,公司推出了一款具有突破性的精密电源产品,该产品以其高效能、低能耗的特点迅速在市场中获得了认可。这一成功不仅使公司获得了更多的市场份额,也为后续产品的研发奠定了坚实的基础。

Digital Core Design公司的发展小趣事

随着《古墓丽影》系列游戏的成功,Core Design的团队迅速扩张。当PS2主机即将推出时,索尼和Core Design都对这款新主机充满期待。为了抓住这一机遇,Core Design将“古墓丽影”的制作团队从最初的12人增加到60人,随后又增加到了100人。这一举措展示了Core Design对市场和技术的敏锐洞察力和决心。

CDE [ CORNELL DUBILIER ELECTRONICS ]公司的发展小趣事

在电子行业的早期,创始人William Dubilier凭借其敏锐的洞察力和创新精神,于1909年创立了CDE公司。Dubilier首次使用一种名为云母的玻璃状矿物,开发出一种新型电容器,这一创新为CDE公司的诞生奠定了基石。自那时起,CDE便以电容器为专业方向,不断追求技术突破和产品创新。

B&F;公司的发展小趣事

随着FK系列飞机在全球范围内的知名度不断提升,B&F公司意识到,要想进一步拓展市场,必须建立完善的全球分销网络。于是,公司开始积极寻找合作伙伴,并在全球范围内建立分销点。通过这一举措,B&F公司的产品得以迅速进入更多国家,进一步提升了公司的市场份额和影响力。

德芯半导体(Doeshare)公司的发展小趣事

德芯半导体深知人才是企业发展的核心。因此,公司注重人才队伍的建设,吸引了一批具有丰富经验和专业知识的资深工程师和管理人员。这些人才不仅为公司带来了先进的技术和管理经验,还为公司的发展提供了源源不断的动力。公司设立技术委员会,布局先进封装项目,推动公司在高端封装技术上的突破。

Acme Electric Corporation公司的发展小趣事

德芯半导体在成立之初就明确了其市场定位:以高性价比的特色传感器系列产品为目标市场。公司秉承“以德治企,创造精品”的经营理念,通过深入了解市场需求,不断推出符合市场需求的创新产品。在智能家居、智能制造等领域,德芯半导体的产品凭借其高性能、高品质和低价格,赢得了国内外知名公司的认证和合作。

问答坊 | AI 解惑

学51时做的小东西(一) -- 电子定时器

学51时做过很多东西,但是很多都没有留下完整的资料。这里把一个我做的有完整资料的东西发上来,以后整理好东西也陆续发上来。 虽然这些东西都很过时了,不过有兴趣的朋友不妨做一个试。 电子定时器: 最初的是为了电池充电器而设计的 ...…

查看全部问答>

关于上传附件的建议

建议大家在附件后面多贴点信息,比如将文档的前言、目录贴上来。这样方便大家选择是否需要下载。…

查看全部问答>

ZigBee和Wi-Fi合作发展智能电网无线网络

ZigBee® Alliance和Wi-Fi Alliance®今天宣布双方达成一项协议,双方将在针对智能电网应用的无线家庭局域网络(HAN)领域开展合作。合作最初的重点将是ZigBee Smart Energy 2.0,即面向智能电网家庭的新一代能源管理协议,其基础则是当今颇为 ...…

查看全部问答>

请教工程师:集成24位ADC的CPU

现在想用一款集成24位AD的CPU,做一个高精度的电子秤,工业测量用的。准备做成亚当模块的样子。   我上ADI官方网站查过好像7060还可以,但是好像国内不好买不到片子,而且价钱很贵。51内核的倒是有24位的,只是好久不用51了,不知道开发起来 ...…

查看全部问答>

关于摄像头的两个缓冲区

在三星6410BSP中,有个OV9650的摄像头模组驱动代码,在s3c6410_camera.h中有对于两个缓冲区的定义:一个是用来捕捉静态及动态视频的,一个是用于预览的。 #define MAX_HW_FRAMES               &nbs ...…

查看全部问答>

UseEnterEsc的问题?请大家帮忙看看。

在WINCE下的触摸屏的校正程序中,我是直接调用的这个系统函数TouchCalibrate,呵呵……自己还没有想到写的方法。但是没有这个的源码,在TouchCalibrateUI_DrawMainScreen打印校准操作说明信息中,UseEnterEsc这个函数是怎么操作的?在屏幕我要显示 ...…

查看全部问答>

ARM高手请进。。

我在ARM中移植一段代码,因为程序比较复杂,调用层次较深,在进入某些函数语句后,函数参数丢失。 用的是瑞星微的多任务系统,谁知道这是什么问题,怎么解决。我用J-TAG调试。…

查看全部问答>

测量摆的倾斜角度

  希望大家多给建议:        我想测量一个垂直的摆的倾斜角度,倾斜到一定角度就报警。该怎么设计呢?…

查看全部问答>

初学的疑惑:windows xp embedded 开发

请问,通过VS2005怎样开发基于特定设备(windows xp embedded)的应用? 这两天刚开始了解嵌入式开发,初步印象是,windows embedded 包括windows ce和windows xp embedded两种操作系统;而VS2005中的Mobille和phone是基于windows ce系统的集成开发 ...…

查看全部问答>

为什么产生错误Fixing up unaligned userspace access

要把很多.ko文件加载到目标板上,用一个loadmod.sh文件来实现,里面包括了insmod、mknod等必要的命令等等,但每次source loadmod.sh之后,大多会出现如下错误提示 Fixing up unaligned userspace access in \"sh\" pid=25 pc=0x0042ee94 ins=0x624 ...…

查看全部问答>