历史上的今天
返回首页

历史上的今天

今天是:2024年12月10日(星期二)

正在发生

2018年12月10日 | STM32_DMA 标准初始化设置解释

2018-12-10 来源:eefocus

DMA 全称是:Direct Memory Access;根据 ST 公司提供的相关信息,DMA是STM32中一个独立于 Cortex-M3 内核的模块,有点类似于 ADC、PWM、TIMER 等模块;主要功能是起通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速访问各寄存器,其传输不受 CPU 的支配,传输还是双向的;例如,从“表面”上看,它可以将 flash 中的数据与储存器中变量建立通讯,还可以将某一个外设的寄存器或缓冲器与另一个外设的寄存器或缓冲器建立双向通讯,有点像把外设硬件之间用“导线”连接在一起了。其间的通讯不占 CPU 资源,访问速度快,对于实时性强的应用将是一个很好的选择。下面代码是一个标准 DMA 设置,当然实际应用中可根据实际情况进行裁减:


//开启时钟,否则初始化无效。


RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);


DMA_DeInit(DMA_Channel1);


上面这句是给 DMA 配置通道,根据 ST 提供的资料,STM3210Fx 中 DMA 包含 7 个通道(CH1~CH7),也就是说可以为外设或 memory 提供 7 座“桥梁”;


DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;


DMA_PeripheralBaseAddr 是 DMA_InitStructure 结构体中一个数据成员,给 DMA 一个起始地址,好比是一个 buffer 起始地址,ADC1_DR_Address 是我定义的一个地址变量;


DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;


上面这句很显然是 DMA 要连接在 Memory 中变量的地址,ADC_ConvertedValue 是我自己在memory 中定义的一个变量地址;


DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;


上面的这句是设置 DMA 的传输方向,就如前面所说的,DMA 可以双向传输,也可以单向传输,这里设置的是单向传输,如果需要双向传输:把 DMA_DIR_PeripheralSRC 改成DMA_DIR_PeripheralDST 即可。


DMA_InitStructure.DMA_BufferSize = 2;


上面的这句是设置 DMA 在传输时缓冲区的长度,前面有定义过了 buffer 的起始地址:ADC1_DR_Address ,为了安全性和可靠性,一般需要给 buffer 定义一个储存片区,这个参数的单位有三种类型:Byte、HalfWord、word,我设置的 2 个 half-word(见下面的设置);32位的 MCU 中 1 个 half-word 占 16 bits。


DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;


上面的这句是设置 DMA 的外设递增模式,如果 DMA 选用的通道(CHx)有多个外设连接,需要使用外设递增模式:DMA_PeripheralInc_Enable;我的例子里 DMA 只与 ADC1 建立了联系,所以选用 DMA_PeripheralInc_Disable。


DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;


上面的这句是设置DMA的内存递增模式,DMA 访问多个内存参数时,需要使用DMA_MemoryInc_Enable,当DMA只访问一个内存参数时可设置成 :DMA_MemoryInc_Disable。


DMA_InitStructure.DMA_PeripheralDataSize =


DMA_PeripheralDataSize_HalfWord;


上面的这句是设置 DMA 在访问时每次操作的数据长度。有三种数据长度类型,前面已经讲过了,这里不在叙述。


DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;


与上面雷同。在此不再说明。


DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;


上面的这句是设置 DMA 的传输模式:连续不断的循环模式,若只想访问一次后就不要访问了(或按指令操作来反问,也就是想要它访问的时候就访问,不要它访问的时候就停止),可以设置成通用模式:DMA_Mode_Normal。


DMA_InitStructure.DMA_Priority = DMA_Priority_High;


上面的这句是设置 DMA 的优先级别:可以分为 4 级:VeryHigh,High,Medium,Low.


DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;


上面的这句是设置 DMA 的 2 个 memory 中的变量互相访问的


DMA_Init(DMA_Channel1,&DMA_InitStructure);


前面那些都是对 DMA 结构体成员的设置,在次再统一对 DMA 整个模块做一次初始化,使得 DMA 各成员与上面的参数一致。


DMA_Cmd(DMA_Channel1,ENABLE);


使能启动。


要使 DMA 与外设建立有效连接,这不是 DMA 自身的事情,是各个外设的事情,每个外设都有 一个 xxx_DMACmd(XXXx,Enable )函数,如果使 DMA 与 ADC 建立有效联系,就使用ADC_DMACmd(ADC1,Enable); (这里我启用了 ADC 中的 ADC1 模块)。



推荐阅读

史海拾趣

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

FSP TECHNOLOGY INC. 发展故事集

故事一:创立与初期发展

FSP Technology Inc.(全汉企业股份有限公司)成立于1993年,总部位于台湾。在创立之初,公司便专注于电源供应器的研发与生产,凭借其专业的技术团队和敏锐的市场洞察力,迅速在行业中崭露头角。当时,随着计算机技术的飞速发展,对稳定、高效的电源需求日益增长,FSP抓住了这一机遇,专注于提供高品质的电源产品,赢得了市场的初步认可。公司通过不断优化产品设计和提升生产效率,逐渐建立起一定的市场份额和品牌影响力。

故事二:技术创新与品牌拓展

进入21世纪后,FSP Technology加大了技术创新的投入,致力于研发更加高效、环保的电源解决方案。公司先后推出了多款符合国际能效标准的产品,如80 PLUS认证系列电源,这些产品凭借其出色的性能和稳定的品质,在市场上获得了广泛好评。同时,FSP也积极拓展国际市场,通过参加国际展会、建立海外销售网络等方式,将品牌和产品推向全球。这一时期,FSP的品牌知名度和市场占有率均实现了显著提升。

故事三:ODM/OEM业务的蓬勃发展

随着全球电子产业链的分工日益细化,FSP Technology积极调整业务结构,大力发展ODM/OEM业务。公司凭借强大的研发实力和灵活的生产能力,为众多国际知名品牌提供定制化的电源解决方案。这些合作不仅丰富了FSP的产品线,也进一步提升了公司的技术水平和市场竞争力。同时,通过与国际品牌的深度合作,FSP的品牌影响力也得到了进一步扩大。

故事四:绿色能源解决方案的推广

近年来,随着全球对环保和可持续发展的重视,FSP Technology积极响应时代号召,致力于推广绿色能源解决方案。公司结合自身的技术优势,开发了一系列高效、节能的电源产品,广泛应用于数据中心、通信基站、智能家居等领域。这些产品不仅降低了客户的运营成本,也为全球节能减排事业做出了积极贡献。FSP的绿色能源解决方案得到了市场的广泛认可,进一步巩固了其在行业中的领先地位。

故事五:持续研发与未来展望

面对日益激烈的市场竞争和不断变化的客户需求,FSP Technology始终保持对技术创新的热情与追求。公司不断加大研发投入,积极探索新的技术和应用领域,如边缘计算、5G通信、工业互联网等。同时,FSP也密切关注行业动态和市场趋势,灵活调整战略方向,确保在未来的发展中始终保持领先地位。展望未来,FSP将继续秉承“服务、专业、创新”的经营理念,为全球客户提供更加优质、高效的电源解决方案。

飞翼科技(FEIYI)公司的发展小趣事

在电子行业中,艾迪沃德公司(Beijing IDworld Science & Technology Development Co., Ltd.)的发展历程充满了技术创新与市场拓展的亮点。以下是五个关于艾迪沃德公司发展起来的相关故事,每个故事均基于事实描述,旨在展现其成长轨迹。

1. 创立与技术创新起点

艾迪沃德公司成立于2004年6月,自创立之初便确立了以研究、开发国际先进指纹识别技术为基本战略的发展方向。在那个指纹识别技术刚刚兴起的时代,艾迪沃德凭借其前瞻性的视野,迅速投入到这一领域的探索中。公司自主研发的指纹识别技术,经过不断迭代与优化,逐渐成为了业界公认的优秀指纹识别核心算法之一。这一技术突破不仅为公司赢得了市场的初步认可,更为后续的产品开发奠定了坚实的基础。

2. 产品多元化与市场拓展

随着技术的不断成熟,艾迪沃德开始将指纹识别技术应用于更多领域,推出了包括指纹考勤机、指纹门禁系统、指纹保险柜在内的多元化产品系列。这些产品凭借其高安全性、便捷性和稳定性,迅速在市场中占据了一席之地。特别是在安防、金融、教育等行业,艾迪沃德的产品得到了广泛应用,进一步巩固了其在指纹识别领域的市场地位。

3. OEM与ODM业务的发展

为了满足不同客户的定制化需求,艾迪沃德积极拓展OEM(原始设备制造商)和ODM(原始设计制造商)业务。公司凭借其强大的研发能力和生产能力,为众多合作伙伴提供从产品设计、生产到售后的全方位服务。这一业务模式不仅为公司带来了稳定的收入来源,还进一步提升了艾迪沃德在电子行业中的知名度和影响力。

4. 技术支持与解决方案提供

艾迪沃德深知技术支持对于客户的重要性,因此公司组建了一支专业的技术支持团队,为客户提供包括技术咨询、方案设计、系统集成在内的全方位服务。无论是大型项目还是小型应用,艾迪沃德都能根据客户的具体需求,提供量身定制的解决方案。这种以客户为中心的服务理念,赢得了客户的广泛赞誉和信赖。

5. 国际合作与品牌建设

在国际化战略的推动下,艾迪沃德积极参与国际交流与合作,与多家国际知名企业建立了良好的合作关系。通过引进国外先进技术和管理经验,艾迪沃德不断提升自身的竞争力和创新能力。同时,公司还加大了品牌建设的力度,通过参加国际展会、发布新品等方式,提升品牌知名度和美誉度。这些努力不仅为公司带来了更多的国际合作机会,也为艾迪沃德在全球电子行业中树立了良好的品牌形象。

格瑞宝(GP)公司的发展小趣事

为了更好地服务客户和市场,格瑞宝在深圳、南京等地设立了分公司等派出机构。这些分公司的设立不仅加强了公司在华南、华东等地区的业务覆盖能力,也提高了公司的市场响应速度和客户服务水平。通过区域布局的优化,格瑞宝能够更加灵活地应对市场变化,抓住发展机遇,实现更快速的发展。

ASPEED Technology公司的发展小趣事

ASPEED与Audinate建立了合作伙伴关系,共同开发Dante AV-A。这一合作使得ASPEED的SoC能够支持Dante AV-over-IP芯片组,为专业AV行业的制造商提供了更加便捷、高效的解决方案。通过合作,ASPEED进一步巩固了其在专业AV市场的地位,并拓宽了公司的业务范围。

Fermionics Lasertech Inc公司的发展小趣事

随着技术的不断完善,Fermionics Lasertech Inc公司的产品线逐渐丰富,从单一的激光切割设备扩展到激光打标、焊接、打孔等多个领域。公司开始加大市场推广力度,积极参加国内外各类电子展会,与潜在客户建立联系。同时,公司还注重品牌建设,通过优质的产品和服务赢得了良好的口碑,逐渐在电子行业树立了品牌形象。

Delock公司的发展小趣事

为了保持技术的领先地位,Delock公司非常重视与高校、研究机构的研发合作。公司先后与多所知名大学和研究机构建立了紧密的合作关系,共同开展电子连接技术的研发和创新。这些合作不仅为Delock公司带来了源源不断的技术创新成果,也为公司培养了一批高素质的研发人才。通过与高校、研究机构的紧密合作,Delock公司在电子连接技术领域始终保持领先地位。

问答坊 | AI 解惑

便携式串口调试助手,支持高波特率921600,大小仅5KB

[url=http://www.cinzy.com/soft/COMdbg.rar]便携串口调试助手 精品[/url] 串口调试软件中的一员,不同的是此版本纯API编写,运行高效稳定,只有5K,体系非常小巧,功能强大,非常值得收藏 5-20更新到0.2RC 修改几处内部逻辑使程序运行更快重新压缩使程 ...…

查看全部问答>

DSP与慢速设备接口的实现

DSP是一种高性能的数字信号处理器。由于其具有快速的计算能力和强大的信息处理能力,因此被广泛地应用到工业自动化、国防科研等领域中。与常规单片机相比,DSP的内部结构和时序发生了很大的变化。所以单片机适用的接口芯片,DSP并不一定适用。对于非常 ...…

查看全部问答>

哈工大遥控小汽车的设计

哈工大遥控小汽车的设计…

查看全部问答>

秒表设计

完整的秒表设计!…

查看全部问答>

MPLAB ICD3问题请教

小弟又有问题了...在使用MPLAB ICD3调试的时候,会跳出此错误:查看ICD3 user‘s guide,有关提示如下:依照提示重新启动了目标板、ICD3等,还是提示错误,请各位高手指教,非常感谢!…

查看全部问答>

六路环行分配器(低速100khz以下)用哪种IC好

请问各位大侠六路环行分配器(低速100khz以下)用哪种IC好呢?…

查看全部问答>

如何避免成为职场“橡皮人”?

    “橡皮人”在都市职场逐渐走红,他们“没有神经,没有痛感,没有效率,没有反应。整个人犹如橡皮做成的,不接受任何新生事物和意见、对批评表扬无所谓、没有耻辱和荣誉感的职场人们”。     初入职场,谁都曾豪情万丈踌 ...…

查看全部问答>

DC/DC的级联应用,容性负载是否传递

紧急求助:                  设计电源转换 由27V 转换为5V, 该DC/DC模块的容性负载时1000UF, 转换成5V 后,连接 5V到3.3V 的非隔离型DC/DC,  这个DC/DC的容性负载是30 ...…

查看全部问答>