18.DMA-6410

发布者:科技革新者最新更新时间:2024-10-31 来源: cnblogs关键字:DMA 手机看文章 扫描二维码
随时随地手机看文章

对于6410的DMA控制器和2440的DMA控制器有很大不一样。

S3C6410中DMA操作步骤:

1、决定使用安全DMAC(SDMAC)还是通用DMAC(DMAC);

2、开启DMAC控制,设置DMAC_Configuration寄存器

3、清除传输结束中断寄存器和错误中断寄存器;

4、选择合适的优先级通道;

5、设置通道的源数据地址和目的数据地址(设置DMACC_SrcAddr和DMACC_DestAddr);

6、设置通道控制寄存器0(设置DMACC_Control0);

7、设置通道控制寄存器1,(传输大小,设置DMACC_Control1);

8、设置通道配置寄存器;(设置DMACC_Configuration)

9、使能相应通道(设置DMACC_Configuratoin);

 

1、决定使用安全DMAC(SDMAC)还是通用DMAC(DMAC);

在6410的DMA控制器里有四个控制器:

这里使用的是UART0的源,而该源可以还有的控制器有两个:DMA0和SMDA0:

那么到底使用的哪个寄存器呢?是通过DMA_SEL这个寄存器来进行选择的:

这里使用的是UART0,然后是通过SDMA0寄存器控制的。所以设置DMA_SEL的值为0即可:

 

2、开启DMAC控制,设置DMAC_Configuration寄存器;

第一步选择好了DMA寄存器后,接着就是使能DMA控制。使能是通过DMAC_Configuration寄存器:

由该寄存器的描述知道,要使能DMA只需将DMAC_Configuration寄存器的[0]位设置为1即可:

3、设置通道的源数据地址和目的数据地址(设置DMACC_SrcAddr和DMACC_DestAddr);

这一步跟2440是一样的,都是设置DMA的源寄存器和DMA的目的寄存器。由于我们这里是将内存里的字符串送到串口,所以源寄存器地址是在内存,目的寄存器的地址是在串口0中寄存器的地址。实现代码:

寄存器DMACC0SrcAddr参数:

 

4、设置通道控制寄存器0(设置DMACC_Control0);

[25]位中,由于我们的串口是外设,所以[25]位的值是1。然后在我们的源地址寄存器里,当输出一个字符是,是会增长里面的参数,然后继续输出的。所以[26]位的值是1。[31]位是中断的运行位,也是设置位1。最后设置的参数:

5、设置通道控制寄存器1,(传输大小,设置DMACC_Control1);

主要是设置传输数据的大小的:

实现:

6、设置通道配置寄存器;(设置DMACC_Configuration)

    

在上面的寄存器里,要考虑的位是[6]位、[11]位、[14]、[15]位。其中[6]位是选择DMA的目的地址是不是一个外设,我们这里是串口,就是一个外设,所以是1。[11]位是流控制位和tranfer type:

我们这里是从内存到串口,所以是001.

[14]位和[15]位是中断屏蔽的,设置为1.

最后实现的函数:

7、使能相应通道(设置DMACC_Configuratoin);

 

上面就设置好了使能6410的DMA通道的操作。在main.c调用:

Make编译:


关键字:DMA 引用地址:18.DMA-6410

上一篇:19.液晶屏的原理
下一篇:17.DMA-2440

推荐阅读最新更新时间:2024-11-13 06:01

OK6410A 开发板 (九) 4 buildroot-2021.02 OK6410A rootfs 中的动态链接库
rootfs中动态链接库的来源 来自于 交叉编译链 rootfs 中 libc.so.6 来源猜想 suws@ubuntu:~/ok6410/system-new/buildroot/output$ sudo find . -name libc.so.6 | xargs ls -l lrwxrwxrwx 1 suws suws 12 May 30 2014 ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc.so.6 - libc-2.18.so lrwxrwxrwx 1 root root 12 Apr 15 15:21 ./images/rootfs/lib/libc.
[单片机]
OK<font color='red'>6410</font>A 开发板 (九) 4 buildroot-2021.02 OK<font color='red'>6410</font>A rootfs 中的动态链接库
基于MPC5634的汽车控制器多路AD采样的设计
随着汽车对控制系统的要求和依赖性提高,AD采样的设计模块成为汽车控制器中重要的组成部分。AD采样的结果是汽车控制器控制执行器的依据,它的速率和精度在汽车控制中起着重要的作用。 本文主要介绍一种基于MPC5634的多路模拟信号采集方法,通过增强型直接内存访问(DMA)方式,自动在RAM和增强型队列式模数转换器eQADC模块之间转移数据,能高效和准确地完成对模拟信号的采集。 1增强型队列式模数转换器eQADC模块 1.1 eQADC模块的结构 MPC5634的eQADC模块有两个可独立工作的ADC转换单元(ADC0和ADC1),40路模拟通道(可扩展),0~5V的转换范围,转换精度有8位、10位、12位三种精度可选,具有软件和硬件
[电源管理]
基于MPC5634的汽车控制器多路AD采样的设计
OK6410裸机学习之C语言调用汇编函数
start.S源码: .globl _start .globl delay //用globl声明,外部函数就可以调用delay函数 _start: // 硬件相关的设置 // Peri port setup ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff) // 关看门狗 // 往WTCON(0x7E004000)写0 ldr r0, =0x7E004000 mov r1, #0 str r1, // 设置栈 ldr sp, =8*1
[单片机]
三星6410裸机程序开发5:使用三星官方6410_Test工程开发裸机程序
在 三星6410裸机程序开发1 文章中,说到的是采用eclipse + windows安装版的专为ARM嵌入式处理器预编译的GNU工具组合来开发6410的裸机程序。由于遇到了中断问题,所以不得不切换开发环境。 幸运地是,不仅顺利切换到RVDS环境,而且还发现了三星官方6410_Test工程。这个工程提供了芯片大部分功能模块的裸机程序实现和测试用例程序。 1. RVDS环境安装 RVDS(RealView® Development Suite)是ARM公司继SDT与ADS1.2之后主推的新一代开发工具,向下兼容以前的版本(ADS v1.2.1、1.1、1.0.1)。由于6410_Test工程采用的是RVDS2.2,所以当然是
[单片机]
三星<font color='red'>6410</font>裸机程序开发5:使用三星官方<font color='red'>6410</font>_Test工程开发裸机程序
基于DMA的大批量数据快速传输模块设计
DMA控制器作为SOPC设计中使用频率较高的IP核,可用于存储器或外设间进行批量数据传输,以提高系统数据吞吐量。然而,由于DMA控制器只支持对基于Avalon总线流传输模式的外设进行数据传输操作,对用户自定义外设不予支持。文中提出了一种基于Avalon总线流传输模式的通用DMA接口控制器设计,实现了NiosⅡ与FPGA的大批量数据快速传输,显著提高了系统的数据吞吐量。 1 Avalon—MM总线规范 Avalon总线规范是为开发SOPC环境下外设而设计的,为SOPC设计者描述这些外设的端口提供了基础。Avalon总线有多种传输模式,其中,流传输模式为从端口提供了一种机制,用于控制来自主端口的传输,流传输模式的这些特点使其特
[单片机]
基于<font color='red'>DMA</font>的大批量数据快速传输模块设计
ADC,DMA,多路,单次/连续转换
今天回答一个朋友的问题吧,ADC如何使用DMA采集多通道模拟电压。 1写在前面 这个问题其实之前写过一些相关文章,原理我之前也有相关描述。如果想要彻底弄明白其原理,建议阅读《参考手册》、结合标准外设库来理解。 现在很多人习惯使用STM32CubeMX来直接生成初始化代码,如果没有掌握STM32CubeMX、HAL库,使用STM32CubeMX生成的代码,或许就不能满足你的应用。 同时,STM32CubeMX生成的代码,想要根据代码进一步了解其原理,其实很难 ADC转换一些基础原理,我这里就不过多描述了,请直接看下面标准外设库源码、及后面给的注释。 下面写2点:ADC软件单次触发转换,和连续转换。 2ADC,
[单片机]
ADC,<font color='red'>DMA</font>,多路,单次/连续转换
STM32CUBEIDE(10)----ADC在DMA模式下扫描多个通道
概述 本章 STM32 CUBEMX配置STM32F103的 ADC 在 DMA 模式扫描多个通道,通过串口进行打印。 需要GD样片的可以加Q_QUN申请:6_15061293。 代码 下载 https://download.csdn.net/download/qq_24312945/86395148 生成例程 使用STM32CUBEMX生成例程,这里使用NUCLEO-F103RB开发板 查看原理图,PA2和PA3设置为开发板的串口。 配置串口。 开启中断。 查看原理图, Arduino 的 接口 A0-A5都是 AD 口。 ADC通道配置 ADC1配置。 ADCs_Common_Set ti n
[单片机]
STM32CUBEIDE(10)----ADC在<font color='red'>DMA</font>模式下扫描多个通道
6410 声卡wm9713 驱动分析
1. S3C6410与WM9713的I2S,AC97,PCM相比较: 1.I2S,AC97,PCM是不同的,各是各的,三者时序不同,要双方通信,必须要是 同一种时序,要么均是I2S,要么均是AC97,要么均是PCM 2.S3C6410的I2S,AC97,PCM复用同一组Pin脚,但同一时间只能用一种类型, 要么是I2S,要么是AC97,要么是PCM 3.WM9713有两大接口,一是AC97,另一是PCM/I2S PCM/I2S是并非指两者相同,而是WM9713芯片设计时将PCM/I2S的格式兼容,硬件设计到同一个电路中去,可选配置该电路模块为PCM或是I2S WM9713 的AC97模块只接受对方以AC97 Timing发过
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved