历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月11日 | STM32Cube-直接存储器访问(DMA)

2019-09-11 来源:eefocus

在USART章节讲解了串口的轮询和中断模式,这一章介绍一下通过DMA模式控制串口传输。


直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。说白了DMA就是一个搬运工,将数据从一个地方搬到另一个地方而不需要CPU处理。


作为一个搬运工,要他正常工作必须要确定几个重要的参数。


1.传输模式:数据从哪里搬到哪里。三种可能的传输方向:存储器到外设、外设到存储器或存储器到存储器。


2.通道选择:就是数据传输的是走那条道路


3.仲裁器:多个DMA传输是优先级高的优先传输。


4.数据长度:每次传输的数据长度,可以一个字节,两个字节(半字),四个字节(字)


5.指针递增:如果使能了递增模式,则下一次传输的地址将是前一次传输的地址递增 1(对于字节)、2(对于半字)或4(对于字)。


打开STM32CubeMX重新建工程,配置和上一章配置一样。只是这个工程中,在DMA设置栏添加UASART发送TX和接收RX的DMA。发送选择 DMA1 Channel 4通道,方向从存储器到外设。优先级为低。接收选择DMA1 Channel 5通道,方向外设到存储器,优先级为低。Mode为Normal,Data Width选择Byte。

其中mode设置可以选择Normal表单次传输,传输一次后终止传输,Circular表示循环传输,传输完成后又重新开始继续传输,不断循环永不停止。此处选择单次传输。

Increment Address表示地址指针递增。串口发送数据是将数据不断存进串口的发送数据寄存器(USARTx_TDR)。所以外接的地址是不递增。而内存储器存储的是要发送的数据,所以地址指针要递增才能将所以的数据发送出去。

串口数据发送寄存器只能存储8bit,每次发送一个字节,所以数据长度选择Byte。


另外要注意的一点,必须要开启串口中断。DMA1中断已默认开启。

生成报告以及代码,编译程序。在usart.c文件中,可以找到刚才的DMA设置。

在main函数前面添加发送的数据。


在main()函数的while(1)循环中添加应用程序,通过DMA将数据发送出去。


这是只测试发送,至于接收可以看USART章节后面有讲解

编译程序并下载到开发板。用USB线连接开发板到电脑,在电脑上打开串口调试助手。选择对应的串口号,设置波特率为115200,接收到如图信息。

这章文档总结:https://download.csdn.net/download/zdw6868/10655284


注意:如果不开启串口中断,则程序只能发送一次数据,程序不能判断DMA传输是否完成,USART一直处于busy状态。


上一篇:STM32CubeMx-ADC

下一篇:STM32Cube-EXTI

推荐阅读

史海拾趣

FerriShield公司的发展小趣事

在国内市场取得一定成绩后,FerriShield开始将目光投向国际市场。公司积极参加国际电子展,展示其先进的技术和产品。同时,FerriShield还与国际知名电子品牌建立了合作关系,为其提供定制化的电磁屏蔽解决方案。通过这些努力,FerriShield的产品逐渐打入国际市场,并赢得了良好的口碑。

广东爱晟电子(exsense)公司的发展小趣事

2020年新冠疫情期间,爱晟电子积极响应政府号召,全力支持抗疫工作。公司不仅向抗疫一线捐赠了防疫物资,还组织员工参与志愿服务。同时,公司还利用自身的技术优势,研发出适用于医疗设备的NTC热敏电阻,为抗击疫情提供了有力支持。这些行动彰显了爱晟电子的社会责任感和担当精神。

Cybernetic Micro Systems公司的发展小趣事

在竞争激烈的电子行业中,CMS始终保持着持续创新的态势。他们不断投入研发资源,推出了一系列具有创新性的产品。例如,他们开发了一款基于人工智能技术的智能家居控制系统,该系统能够通过语音控制实现家电设备的智能化管理。这一产品的推出进一步巩固了CMS在智能家居领域的领先地位。

GC Electronics公司的发展小趣事
电路中的连接不良、短路或断路等问题,也可能导致报警电路误报。
Anixter Inc公司的发展小趣事
按照电路图将传感器、报警装置和电源等部件连接起来,确保电路连接正确无误。
BAHCO公司的发展小趣事

随着全球化趋势的加速推进,BAHCO也在积极拓展全球市场。目前,公司已在多个国家和地区设立了分支机构或销售网络,实现了全球范围内的业务覆盖。未来,BAHCO将继续加大在研发、生产、销售等方面的投入力度,不断提升产品质量和服务水平。同时,公司还将积极探索新的商业模式和合作方式,以适应不断变化的市场环境并实现可持续发展。

这些故事虽然不直接涉及BAHCO在电子行业的发展,但它们展示了BAHCO在工具制造领域的辉煌历程和不断进取的精神。作为一家拥有百年历史的知名企业,BAHCO凭借其卓越的品质、创新精神和全球市场布局,成功地在工具制造业中占据了重要地位。未来,随着技术的不断进步和市场需求的不断变化,相信BAHCO将继续保持其领先地位并迎来更加美好的发展前景。

问答坊 | AI 解惑

简易抢答器

简易抢答器 简易抢答器 简易抢答器…

查看全部问答>

实时时钟电路设计

1 RTC结构特点   实时时钟的基本功能是保持跟踪时间和日期等信息,但许多RTC还提供有多种附加功能,如:看门狗定时器、系统复位、非易失存储器(NV RAM)、序列号、方波输出、涓流充电等。因此,在进行电路设计时,选择RTC芯片出了需要考虑其时 ...…

查看全部问答>

89c51的资料

本帖最后由 paulhyde 于 2014-9-15 09:16 编辑 89c51的资料  …

查看全部问答>

新旧电源管理IC 大PK,大家有什么问题可以写下来

应该说从2003年以来,电源控制IC展示出了全新的面貌.新的隔离控制IC达100余款,非隔离DC/DC达几百款.但是看看我们国内杂志介绍的技术还是老面孔.工程师选用的还是二十年前的老式IC,各位看看你们的手机换了几代了! 我在这里给出几个对比的例子,看看 ...…

查看全部问答>

时钟发生器的频率问题

pc主板上广泛使用的ICS9250 CY28339等时钟发生器的源频率是石英晶体提供的吧? 如果是的话石英晶体的频率是14.31818Mhz,那么时钟发生器输出给cpu的133Mhz外频是怎么生成的? 频率产生电路是什么?…

查看全部问答>

决战2011全国大学生电子设计竞赛——寒假篇(上)

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 …

查看全部问答>

MDK4.14 UART3仿真不能用求帮助

芯片是带3个UART的,用MDK仿真时UART1和UART2都没有问题,UART3就不行了。排除代码原因,在Debug模式下,不能往UART3对话框输入,输入东西win7就响,好像是mdk的问题。不知道大家是否遇过?…

查看全部问答>

对于工资总有点心理不平衡

从去年毕业,刚工作开始,我工资就是同一起毕业的同学中较低的,当然这有我个人的原因,面试的时候没把工资说高点,毕竟当时我认为学习才是最重要的。可逐渐熟悉工作后就觉得不是这样了,特别是在小的创业公司中,你的努力不会得到更好的回报,不 ...…

查看全部问答>

0.1微安左右电流怎么放大检测?

如题,0.1微安左右电流怎么放大检测?…

查看全部问答>