历史上的今天
返回首页

历史上的今天

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

正在发生

2018年09月22日 | stm32标准库dma初始化详解

2018-09-22 来源:eefocus

 STM32的DMA有三种类型的传输

1.M-M(内存到内存) 

2.M-P(内存到外设)

3.P-M(外设到内存)

   STM32的标准库函数提供了一个STM32的初始化结构体如下;

typedef struct

{

  uint32_t DMA_PeripheralBaseAddr;//外设地址

  uint32_t DMA_MemoryBaseAddr; //内存地址

  uint32_t DMA_DIR;                       //传输方向

  uint32_t DMA_BufferSize;           //传输的数据多少

  uint32_t DMA_PeripheralInc;     //外设地址是否递增

  uint32_t DMA_MemoryInc;       //内存地址是否递增

  uint32_t DMA_PeripheralDataSize;   //外设数据宽度

  uint32_t DMA_MemoryDataSize;     //内存数据宽度

  uint32_t DMA_Mode;                        //模式 

  uint32_t DMA_Priority;                    //优先级

  uint32_t DMA_M2M;                       //是否是内存到内存的方式

}DMA_InitTypeDef;

上述结构体是STM32的初始化结构体,从上面的结构体变量定义,我们初始化DMA的时候可以分三步走:

第一步:从哪里来到那里去:这句话说明的是上述的第1-3条

  uint32_t DMA_PeripheralBaseAddr;//外设地址

  uint32_t DMA_MemoryBaseAddr; //内存地址

  uint32_t DMA_DIR;                       //传输方向

第二步:数据要传输多少,传的单位是多少:这句话说明的是上述的第4-8条

  uint32_t DMA_BufferSize;           //传输的数据多少

  uint32_t DMA_PeripheralInc;     //外设地址是否递增

  uint32_t DMA_MemoryInc;       //内存地址是否递增

  uint32_t DMA_PeripheralDataSize;   //外设数据宽度

  uint32_t DMA_MemoryDataSize;     //内存数据宽度

第三步:啥时候传输结束; 这句话说明的是传输的模式

  uint32_t DMA_Mode;                        //模式 


DMA的初始化步骤

1、打开DMA时钟

2、写入DMA初始化结构体数据

3,调用DMA_Init函数将结构体数据写入寄存器

4,清空DMA发送/接收完成标志位

5,调用DMA_Cmd函数开启DMA通道

如果是M-P则需要通过使能DMA请求例如:

USART_DMACmd(使能DMA串口请求)

如果是M-M则不需要使能DMA请求。

当打开DMA通道时直接就开始数据传输了。


推荐阅读

史海拾趣

BALLUFF公司的发展小趣事

随着自动化技术的不断进步,传感器技术的需求也日益增长。BALLUFF公司紧跟时代潮流,不断推出创新的传感器产品。从1968年开始生产感应式接近开关BES,到1978年光学开关BOS的面世,再到后来由微型处理器控制的转换机构与角度编码器的加入,BALLUFF在传感器领域的技术实力不断增强。此外,公司还陆续推出了旋转传感器BRG、识别系统BIS和超声波位移传感器BTL等产品,进一步丰富了其传感器产品线,满足了不同行业的需求。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

Comclok Inc创立之初,便专注于高精度时钟芯片的研发与生产。在电子设备的智能化和精准化趋势日益明显的背景下,高精度时钟芯片成为了市场的热门需求。Comclok Inc凭借出色的技术实力和敏锐的市场洞察力,成功开发出一系列性能卓越的时钟芯片,并迅速占领市场份额。公司不仅在国内市场取得了成功,还积极拓展海外市场,与多家国际知名企业建立了长期合作关系。

FRONTIER公司的发展小趣事

背景:假设FRONTIER公司也涉足绿色能源领域。

发展故事:面对全球气候变化和环境问题的日益严峻,FRONTIER公司积极响应可持续发展号召,开始布局绿色能源产业。公司通过引进先进的光伏技术、储能技术和智能电网技术,成功打造了一系列绿色能源解决方案。这些解决方案不仅有效降低了企业的能耗和碳排放量,还为全球能源转型和环境保护做出了积极贡献。FRONTIER的绿色转型不仅赢得了市场的认可和支持,也为公司未来的可持续发展奠定了坚实基础。

ARCOLECTRICSWITCHES公司的发展小趣事

在电子行业的初期,ARCOLECTRIC SWITCHES公司以其卓越的技术研发能力崭露头角。公司研发团队成功开发出一种新型开关技术,具有更高的稳定性和耐用性,迅速在市场上获得了广泛认可。这一技术突破不仅为公司带来了丰厚的利润,还奠定了其在电子行业的重要地位。随着技术的不断升级和完善,ARCOLECTRIC SWITCHES公司逐渐发展成为一家技术领先、市场影响力强大的企业。

Aeroflex Metelics / Hi-Rel Components公司的发展小趣事

在市场竞争日益激烈的情况下,ARCOLECTRIC SWITCHES公司始终坚持质量至上的原则。公司建立了完善的质量管理体系,从原材料采购到生产加工、产品检验等各个环节都严格把关,确保产品质量符合客户要求。同时,公司不断创新升级产品,推出更加智能化、节能环保的新型开关产品,满足市场不断变化的需求。

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着全球对环保和可持续发展的重视,Galaxy Microelectronics也开始关注其生产过程中的环保问题。

发展:公司投入巨资建设绿色工厂,采用先进的环保技术和设备,减少生产过程中的能源消耗和废弃物排放。同时,Galaxy Microelectronics还积极推广环保理念,与供应商和客户共同构建绿色供应链。这些举措不仅提升了公司的社会形象,还为其在竞争激烈的市场中赢得了更多客户的青睐。

问答坊 | AI 解惑

(转)usb开发硬件篇

现在的USB生产厂商很多很多,几乎所有的硬件厂商都有USB的产品。我了解的公司有Intel, 国半, Cypress, AnchorChips这几家,Intel作为USB标准的制订者之一,又加上Intel的龙头老大的地位,现在的计算机主板上的HOST基本上采用的都是INTEL的芯片。而 ...…

查看全部问答>

C51入门

我就是看此资料接触的C51的…

查看全部问答>

数字系统设计实例

数字系统设计实例,包含源代码!…

查看全部问答>

菜鸟问:功耗高低如何衡量?

请问大家用fpga设计之后,小弟用xpower对其进行功耗估计,但不知道怎么来衡量,比如,我的小实验最终估计是Total estimated power consumption:56mW,这是高还是低呢?请大家指点下…

查看全部问答>

双网卡,同时上政务网与公网的解决办法

系统环境为:一台FTP SERVER 上有两块网卡,其中一块连接公网交换机,一块连接政务网交换机,要实现同时上公网与政务网的功能。其中IP地址设置分别如下: 公网网卡:          IP:192.168.122.3     NE ...…

查看全部问答>

STM32管脚设置推挽输出后管脚状态?

请教! STM32管脚复位后为高阻抗输入状态, 然后我配置该管脚为推挽输出。 但是并不赋值0或1。 请问这时候是输出的0,还是1,还是继续保持高阻抗输入状态,直到第一次赋值?、 请教大家!…

查看全部问答>

STM32的USB如何能枚举出多个设备?

各位高手:        我现在在做一个USB的读卡器,因读卡器上有三个插糟,想三个插糟对应在主机上显示出三个设备,请问该如何配置,现在只能显示一个设备, {    0x12,   /* bLength  */   ...…

查看全部问答>

STM32F103RB, USB 调不通,请教。

我买的 STM32F103RB 开发板,硬件好使,干别的都可以的。 主时钟 8M,USB D- 用跳线通过1.5k 电阻连 3.3V。 下载 STM 的 U转串 DEMO。 主程序部分:   Set_System();   Set_USBClock();   USB_Interrupts_Conf ...…

查看全部问答>

ETC编码方案

基于MSP430的ETC编码方案…

查看全部问答>