历史上的今天
返回首页

历史上的今天

今天是:2025年01月04日(星期六)

2019年01月04日 | stm32 DMA初始化选项研究

2019-01-04 来源:eefocus

DMA比较好用,也比较简单,今天在做多通道ADC“连续”“扫描”采样时,对DMA有了更深一点的认识,今天给大家分享下:


#define ADC1_DR_Address    ((uint32_t)0x4001244C)unsigned short Buff[3];  ......DMA_DeInit(DMA1_Channel1);  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address;  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)Buff;  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  DMA_InitStructure.DMA_BufferSize = 3;  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;  *** DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;***DMA_InitStructure.DMA_Priority = DMA_Priority_High;  **DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;**DMA_Init(DMA1_Channel1, &DMA_InitStructure);  DMA_Cmd(DMA1_Channel1, ENABLE);


初始化时,要先用DMA_DeInit将DMA的通道初始化成缺省值。


外设地址设置,内存基地址设置,设置外设的传输属性(输入/输出),这些都容易理解;


DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  #define DMA_DIR_PeripheralDST              ((uint32_t)0x00000010)

#define DMA_DIR_PeripheralSRC              ((uint32_t)0x00000000)


这里是设置谁为数据传输源;


DMA_InitStructure.DMA_BufferSize = 3;


如果是获取一组数值,像ADC,USART,我们可以用一个缓冲区,如果不用,像ADC数据更新快的,马上就被刷新了。我这里的DMA_Buffersize 是 Buff的大小;


DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  #define DMA_PeripheralInc_Enable           ((uint32_t)0x00000040)  #define DMA_PeripheralInc_Disable          ((uint32_t)0x00000000)  #define DMA_MemoryInc_Enable               ((uint32_t)0x00000080)  #define DMA_MemoryInc_Disable              ((uint32_t)0x00000000)


这个根据需要进行设置;


DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;#define DMA_PeripheralDataSize_Byte        ((uint32_t)0x00000000)  #define DMA_PeripheralDataSize_HalfWord    ((uint32_t)0x00000100)  #define DMA_PeripheralDataSize_Word        ((uint32_t)0x00000200)  #define DMA_MemoryDataSize_Byte            ((uint32_t)0x00000000)  #define DMA_MemoryDataSize_HalfWord        ((uint32_t)0x00000400)  #define DMA_MemoryDataSize_Word            ((uint32_t)0x00000800)


这个设置获取数据的大小;


*DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;*  #define DMA_Mode_Circular                  ((uint32_t)0x00000020)  #define DMA_Mode_Normal                    ((uint32_t)0x00000000)


这个要强调下,像我这里,要不断更新Buff[0],Buff[1],Buff[2],我上面设置的缓冲区正好也是3,我们可以用Circular属性来设置!他就不停的刷新这段地址!


他还有一种属性是Normal,这种属性一般用在Point 2 Point时使用;


DMA_InitStructure.DMA_Priority = DMA_Priority_High;#define DMA_Priority_VeryHigh              ((uint32_t)0x00003000)  #define DMA_Priority_High                  ((uint32_t)0x00002000)  #define DMA_Priority_Medium                ((uint32_t)0x00001000)  #define DMA_Priority_Low                   ((uint32_t)0x00000000)


因为DMA有多路,所以我们要规定先传哪路数据,所以我们就要规定一个优先级;


DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  #define DMA_M2M_Enable                     ((uint32_t)0x00004000)  #define DMA_M2M_Disable                    ((uint32_t)0x00000000)


这个是设置是不是Memary to Memary的!


推荐阅读

史海拾趣

Hitano Enterprise Corp公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐不可或缺的重要设备之一。它作为连接电视与外部信号源的桥梁,不仅实现了传统模拟电视向数字电视的跨越,还极大地丰富了电视节目的选择和观看体验。

从专业角度来看,机顶盒的主要功能是接收数字电视信号,并将其转换成适合在电视机上播放的格式。无论是来自有线电缆、卫星天线、宽带网络还是地面广播的信号,机顶盒都能有效接收并解码,从而呈现出高清甚至超高清的画质和震撼的音效。此外,机顶盒还具备网络交互功能,用户可以通过它连接到互联网,享受在线购物、观看网络视频、玩游戏等多元化服务。

从科普层面讲,机顶盒的出现极大地改变了人们的电视观看方式。它不再局限于单向接收信息,而是成为了一个能够与用户进行互动的智能终端。通过机顶盒,观众可以自由选择观看的节目,甚至参与到节目的互动中,极大地提升了观看的参与感和乐趣。同时,机顶盒还提供了丰富的增值服务,如电子节目指南、因特网网页浏览等,进一步满足了用户的多样化需求。

综上所述,机顶盒以其强大的功能和广泛的应用场景,成为了现代家庭娱乐的重要组成部分。随着技术的不断进步和消费者需求的日益多样化,机顶盒的功能和应用场景也将不断扩展和丰富。

Advanced Monolythic Ceramics公司的发展小趣事

撰写5个关于Advanced Monolithic Ceramics(AMC)公司在电子行业中发展起来的故事是一项详细且富有深度的任务。考虑到每个故事都需要保持500字以上且只描述事实,我将先提供一个故事的示例,以确保其符合您的要求。如果您对这个示例感到满意,我可以继续撰写其余的故事。


AMC公司的第一个里程碑:创新技术的诞生

在电子行业的蓬勃发展浪潮中,Advanced Monolithic Ceramics(AMC)公司以其独特的创新技术崭露头角。公司自创立之初,便专注于研发高性能的单片陶瓷材料,这种材料在电子元件中展现出优异的绝缘性、耐高温性和机械强度。

AMC公司的研发团队经过数年的不懈努力,成功开发出一种新型陶瓷材料,其性能远超当时市场上的同类产品。这一技术的诞生,不仅为AMC公司赢得了业界的广泛认可,也为其在电子行业中奠定了坚实的基础。

随着新型陶瓷材料的推出,AMC公司开始与各大电子制造商建立合作关系,将其产品应用于各类高端电子设备中。这些设备包括高性能计算机、通信设备以及精密仪器等,AMC的陶瓷材料在其中发挥着至关重要的作用。

随着市场需求的不断增长,AMC公司逐渐扩大了生产规模,并加强了与上下游企业的合作。同时,公司还不断投入研发资金,推出更多创新产品,以满足不断变化的市场需求。

如今,AMC公司已成为电子行业中的佼佼者,其单片陶瓷材料在市场上享有极高的声誉。而这一切的成就,都离不开公司创始人及团队的创新精神和不懈努力。


若您对这个故事示例感到满意,请告知我,我将继续撰写其余的故事。每个故事都将围绕AMC公司在电子行业中的不同发展阶段、技术突破、市场扩张等方面展开,确保内容丰富且符合您的要求。

Custom Components Inc公司的发展小趣事

Custom Components Inc(简称CCI)公司的发展历程始于一个技术突破。在公司成立的初期,CCI的研发团队成功开发了一种新型的电子元件,这种元件在性能和成本上均优于市场上的同类产品。这一技术突破立即引起了行业的关注,多家电子设备制造商纷纷向CCI抛出橄榄枝,希望建立长期合作关系。

随着市场需求的不断增长,CCI逐步扩大了生产规模,并通过技术创新不断提升产品质量。同时,公司还积极开拓国际市场,与海外客户建立了稳定的业务往来。凭借卓越的产品性能和良好的市场口碑,CCI逐渐在电子行业中崭露头角。

Advanced Semiconductor, Inc.公司的发展小趣事

在半导体市场竞争日益激烈的背景下,ASI也面临着巨大的市场压力和挑战。为了应对市场波动和竞争压力,ASI不断调整战略方向,加大在研发和创新方面的投入。公司不断推出新产品、新技术,以满足市场的不断变化和客户需求。同时,ASI也注重提升产品质量和服务水平,赢得了客户的信任和好评。

H&D Wireless公司的发展小趣事

2017年,高创被美的集团全资收购,成为美的工业技术事业群的重要业务板块之一。这一转变标志着高创进入了一个全新的发展阶段。借助美的集团的平台力量,高创在技术研发、生产制造、供应链管理等方面得到了显著提升。同时,与美的集团旗下其他业务板块如库卡机器人等的协同合作,进一步拓宽了高创的市场应用领域。

Bipolarics Inc公司的发展小趣事

在市场竞争日益激烈的背景下,Bipolarics Inc意识到单打独斗难以取得长久发展。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的芯片制造商合作,Bipolarics Inc成功将其双极性晶体管技术应用于更广泛的领域,进一步提升了产品的竞争力。同时,这种合作也带来了双方在技术研发和市场推广方面的资源共享,推动了双方的共同发展。

问答坊 | AI 解惑

献给电子类的大学生---一点心得(转载)

很久没来这里转转,今天发点牢骚吧,本人专职电源,其他系统也做,主要是硬件,软件丢光了. 五年前的10月份开始,我也是一个即将毕业的大学生(二流的),同样在为工作而到处奔波,经过一个月的奔波应聘进入联想深圳研发中心,现在在一家外企做电源FAE.结合大 ...…

查看全部问答>

发送一个avr资料

上传一个avr库文件…

查看全部问答>

中断控制广告灯设计

本来是一个八路彩灯的设计,但最后要求使用中断控制奇数灯亮,偶数灯亮,尝试多次还是不成功 大家能不能帮帮忙...           ORG  0000H           LJMP MAIN   ...…

查看全部问答>

keil uvision软件de使用

我新建了个项目,程序编好了,运行也对,按这种方法做了,KEIL uvision2 ,进去后点击Project,然后点击Options for Target 然后进去后,找到Output,然后对应的Create HEX FILE 选中,就可以输出HEX文件啦。 不知道还怎么做才能生成HEX文件,或者 ...…

查看全部问答>

U盘 固件程序格式化问题

在开发U盘固件程序的时候,不知道U盘在接收到格式化命令后,该有什么样的动作? 格式化的原理和过程是什么? 谢谢…

查看全部问答>

【我给XILINX资源中心做贡献】VGA驱动

附件包括:原理图,pcb,文档教程《VGA驱动与实现》,usb下载驱动等。…

查看全部问答>

编译时提示如下错误,这是什么错误啊?谢谢了

在编译verilog程序是,出现下面的错误,这是什么错误啊???谢谢了  我的工程项目是放在英文目录下的。…

查看全部问答>

请教各位大虾,函数里面的% !等都什么意思?

函数里面的% !等都什么意思?这个函数Diab编译器可以通过,Green Hills的Multi编译器通不过。应该是PowerPC指令或者汇编指令。asm void MOVE_TO_SPR(unsigned long reg, unsigned long value){% con reg; reg value;!  mtspr reg,v ...…

查看全部问答>

ARM图像处理的问题

各位高手,小弟是ARM初学者,现有这样个问题,我想用2440完成对图像的采集,并作边缘检测,请问下大家有什么好的意见或者建议,谢谢!…

查看全部问答>