DMA理解
来源:互联网 发布:三位水仙花数c语言程序 编辑:程序博客网 时间:2024/06/06 01:17
单片机的DMA使用心得
本人也是最近才深入了解一下DMA,前期使用单片机的时候基本上没有用到。一是不需要用到,二是心理上觉得DMA比较困难,所以不使用。在学习的过程中有一些心得体会,与大家分享一下。
首先介绍一下啥子是DMA,说的通俗易懂一点就是一个搬运工。既然是搬运工,就有几个需要注意的问题。
1. 从哪里搬运到哪里 一般是特殊寄存器到RAM(我们自己定义的数组里面),或者相反。
2. 一次搬运多少 一般是一个字节或者两个字节。
3. 搬多少的东西。
4. 什么时候开始搬 即DMA的中断源,简单的就是说别人有东西来了,你才能搬。在单片机里面可以表现为,串口接收到数据了,就开始搬到RAM,或者AD采样结束了,就开始搬运。当然这里需要提前配置好对应模块的寄存器。
5. 搬运结束了,DMA产生中断。就是搬运工把东西都搬完了,来找CPU结账来了,这时候CPU就要告诉他,要么你重新继续搬运,要么停止工作,等待新指令。
DMA基本上就这些
这里以AD采样,然后利用DMA把数据传输到指定的数组里面为例作个简单的说明
1. 初始化DMA,说明从搬运从AD采样结果的寄存器开始,搬到我们自己定义的数组里面,每次搬一个字节的数据,每次搬完了目标地址+1,搬512次,在AD采样结束后才开始搬运。
2. 初始化AD,这里不做介绍,和配置普通AD一样,采用软件触发方式,连续采样。
3. 配置完了就在主函数里面开始了,先初始化DMA,在初始化AD,打开DMA,然后打开AD采样。这时候AD就开不断在采集数据。每次采样完成后,就会有一次AD中断,AD中断每次产生,DMA就会把数据搬到我们制定的数组里面。
4. 当DMA搬了我们那么多的,这里是512个数据的时候,就会产生中断,我们在中断里面就要告诉DMA,搬的目标地址又变回去,搬的数目又变成512,然后又打开DMA,让他再次为我们工作。
本人也是最近才深入了解一下DMA,前期使用单片机的时候基本上没有用到。一是不需要用到,二是心理上觉得DMA比较困难,所以不使用。在学习的过程中有一些心得体会,与大家分享一下。
首先介绍一下啥子是DMA,说的通俗易懂一点就是一个搬运工。既然是搬运工,就有几个需要注意的问题。
1. 从哪里搬运到哪里 一般是特殊寄存器到RAM(我们自己定义的数组里面),或者相反。
2. 一次搬运多少 一般是一个字节或者两个字节。
3. 搬多少的东西。
4. 什么时候开始搬 即DMA的中断源,简单的就是说别人有东西来了,你才能搬。在单片机里面可以表现为,串口接收到数据了,就开始搬到RAM,或者AD采样结束了,就开始搬运。当然这里需要提前配置好对应模块的寄存器。
5. 搬运结束了,DMA产生中断。就是搬运工把东西都搬完了,来找CPU结账来了,这时候CPU就要告诉他,要么你重新继续搬运,要么停止工作,等待新指令。
DMA基本上就这些
这里以AD采样,然后利用DMA把数据传输到指定的数组里面为例作个简单的说明
1. 初始化DMA,说明从搬运从AD采样结果的寄存器开始,搬到我们自己定义的数组里面,每次搬一个字节的数据,每次搬完了目标地址+1,搬512次,在AD采样结束后才开始搬运。
2. 初始化AD,这里不做介绍,和配置普通AD一样,采用软件触发方式,连续采样。
3. 配置完了就在主函数里面开始了,先初始化DMA,在初始化AD,打开DMA,然后打开AD采样。这时候AD就开不断在采集数据。每次采样完成后,就会有一次AD中断,AD中断每次产生,DMA就会把数据搬到我们制定的数组里面。
4. 当DMA搬了我们那么多的,这里是512个数据的时候,就会产生中断,我们在中断里面就要告诉DMA,搬的目标地址又变回去,搬的数目又变成512,然后又打开DMA,让他再次为我们工作。
0 0
- DMA理解
- DMA理解
- DMA的理解
- STM32 DMA buffersize理解
- DMA中tile的理解
- STM32F207 USART+DMA代码+个人理解
- 对于stm32中dma的理解
- DMA
- DMA
- DMA
- DMA
- DMA
- DMA
- DMA
- DMA
- DMA
- DMA
- dma
- Mysql安装总结
- java 实现RSA 加密解密工具类及其内部简单流程
- Qt中QScrollArea的滚动条自动下拉
- linux 进程状态
- 利用notepad++提取邮件地址的方法
- DMA理解
- python多线程实现局域网活跃IP扫描
- 打完10.2.0.5之后,检查crs版本还是10.2.0.1
- 集合的同步包装器类
- PCB布局-图文说明
- Python中module 'urllib' has no attribute 'openurl'问题
- 面向对象的三大特性五项原则
- bzoj 1632: [Usaco2007 Feb]Lilypad Pond (spfa)
- eclipse maven 报错日志