S3C2440 - DMA传输(以字符传输为例)

发布者:花开堂前最新更新时间:2020-06-09 来源: eefocus关键字:S3C2440  DMA传输  字符传输 手机看文章 扫描二维码
随时随地手机看文章

一、使用DMA的优点及DMA支持的请求源


1、DMA优点是其进行数据传输时不需要CPU的干涉,可以大大提高CPU的工作效率。


2、DMA在大容量数据传输中非常重要,比如图像数据传输,SD卡数据传输,USB数据传输等。

3、S3C2440有四个DMA,每个DMA支持的工作方式基本相同,但支持的DMA请求源可能略有不同。如下为四个DMA通道分别支持的DMA请求源:


Ch0:    nXDREQ0,      UART0,      SDI,            Timer,         USB EP1


Ch1:    nXDREQ1,      UART1,      I2SSDI,       SPI0,          USB EP2


Ch2:    I2SSDO,          I2SSDI,      SDI,            Timer,         USB EP3


Ch3:    UART1,           SDI,            SPI1,          Timer,         USB EP4


那么怎么使用DMA呢,S3C2440内部集成了DMA控制器,我们只需要简单的配置一下寄存器就可以实现DMA的传输了。


二、DMA配置步骤及要点: (参考点击打开链接)


1. 数据从哪里来,到哪里去?

使用DMA首先我们要知道数据的流向,DISRCx寄存器是DMA初始源寄存器,存放了数据的源地址。DIDSTx是DMA的初始目的寄存器,存放数据的目的地址。


2. 数据走的什么总线?地址是否是固定的?

我们还要知道源与目的数据存储设备在什么总线上(AHB系统总线,一般是高速的比如内存,APB外围总线,低速的比如SD,UART;具体走什么总线可以在datasheet上查到);以及数据传输结束以后起始地址还原到发送前的起始地址呢,还是在现在的末尾+1做为新的起始地址。这些设置在DISRCCx与DIDSTCx两个寄存器里面配置。

3. 数据以什么方式传输?源与目的是什么设备?要不要自动重载?

需要确定数据的传输方式有请求还是握手,根据上面的总线确定与什么时钟同步(HCLK,PCLK),是单元传输还是突发传输,是以字节传输还是字传输,是否重载。是单服务(只发送一次)还是多服务(不停循环发送),以及数据的传送大小。选择源与目的设备。最后还要确定中断是不是传输结束发生(CURR_TC记数是不是0)。这些都在DCONx中设置。

4. 怎么开始传输DMA和停止DMA,这些在DMASKTRIG中设置。




三、操作实例(以DMA传输一段字符到控制台为例)


/*

*版权所有(C)2015,ZJU

*

*文件名称:dma.c

*内容摘要:关于DMA的配置

*其它说明:开发板型号: TX2440

*    注意Uart_Init中,设置UCON0寄存器时TX的方式要设置为DMA模式

*当前版本:V1.0

*作    者:Frank

*完成日期:2015.12.19

*

*/

 

#define  DISRC0 (*(volatile unsigned long *)0x4B000000) //DMA 0 initial source register

#define  DISRCC0 (*(volatile unsigned long *)0x4B000004) //DMA 0 initial source control register

#define  DIDST0 (*(volatile unsigned long *)0x4B000008) //DMA 0 initial destination register

#define  DIDSTC0 (*(volatile unsigned long *)0x4B00000C) //DMA 0 initial destination control register

#define  DCON0 (*(volatile unsigned long *)0x4B000010) //DMA 0 control register

#define  DMASKTRIG0 (*(volatile unsigned long *)0x4B000020) //DMA 0 mask trigger register

#define  UTXH0   (volatile unsigned long *)0x50000020 //UART channel 0 transmit buffer register

 

char *buf = "Hello World!";

 

 

/*******************************************************************

*函数名称:Dma_Init()

*功能描述:DMA初始化函数

*其他说明:

*创建日期:2015.12.19

*******************************************************************/

void Dma_Init(void)

{

//初始化源地址

DISRC0 = (unsigned int)buf;

DISRCC0 = (0 << 1) | (0 << 0); //DMA起始地址在AHB总线(Memory), 地址递增

//初始化目的地址

DIDST0 = (unsigned int)UTXH0; //目的地址为 UTXH0

DIDSTC0 = (1 << 1) | (1 << 0); /*DMA目的地址在APB总线(UART0), 地址不

变(因为要发送的字符总是传到UTXH0)*/

DCON0 = (1 << 24) | (1 << 23) | (1 << 22) | (12 << 0); //设置DMA请求源及工作模式

}

 

 

/*******************************************************************

*函数名称:Dma_Start()

*功能描述:DMA启动函数

*其他说明:

*创建日期:2015.12.19

*******************************************************************/

void Dma_Start(void)

{

DMASKTRIG0 = (1 << 1); //启动DMA通道

}

 

需要注意的几点是:


①没有使用DMA中断;


②使用的是Demand模式,实测发现Handshake模式也是可以的(推荐);


③在Uart_Init中,要将UCON0寄存器设置为发送采用DMA模式(开始就是没有设置,所以一直无法看到实验现象);


④源地址和目的地址要使用unsigned int强制转换为整数放进寄存器中;

关键字:S3C2440  DMA传输  字符传输 引用地址:S3C2440 - DMA传输(以字符传输为例)

上一篇:记录2--s3c2440 DMA的操作
下一篇:学习笔记 --- S3C2440 DMA操作原理

推荐阅读最新更新时间:2024-11-17 00:39

1.8.2_S3C2440_使用调色板_P
当设置BPP为8位时,会使用调色板来配置LCD,8位共256个选项,所以调色板最多可以设置256种颜色(0~255)。 调色板的每一项存放16位的BPP数据,当使用调色板时,LCD控制器会根据FrameBuffer中的值去调色板中取出对应项的16位数据。16位数据有565和5551两种格式,使用565格式(RGB=565)。 在设置调色板之前,先不使能LCD,之后再使能。 使用调色板的步骤: 初始化调色板(填入调色板数据); 使用8BPP模式; 调整lcd测试函数(测试函数添加8BPP测试)。 程序更改后载入开发板,结果和预期相同,由于画线和画圆,文字的低8位都为0,所以没有显示,这里也不做调整了,因为后
[单片机]
1.8.2_S3C2440_使用调色板_P
S3C2440定时器的使用
#include mytimer.h #include lhg_def.h #include uart.h #include lhg_def.h #include 2440addr.h //Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value} //PCLK=50Mhz //prescaler : 0~255 #define prescaler234 99 //divider : 1/2,1/4,1/8,1/16 选择为(0,1,2,3) #define divider4 2 //定时器设置为62500HZ void __irq ti
[单片机]
基于S3C2440 处理器的支持IPv6协议防火墙设计实现
1 引言 在众多的网络安全设施中,防火墙是行之有效的重要网络安全设备,通过对网络通信进行筛选屏蔽以防未经授权的访问进出计算机网络。防火墙是位于可信网络和不可信网络之间的一道安全屏障,其最核心的任务就是管理和控制进出网络的通信量,它可以截获中途传输的数据包并进行处理,然后与事先定义好的安全策略规则相比较,并最终决定转发或丢弃该数据包。传统的防火墙通常位于一段网络的边界,它可以很好的过滤外界用户对内部网络的访问,但对内部网络的攻击却无能为力。针对此问题近年来关于新型防火墙的研究有很多,如分布式防火墙系统,嵌入式防火墙系统等。这些系统的目的是将防火墙的边界延伸,使其能够遍布网络的每一个终端设备,构建全方位的安全防护网络。 现有防火墙
[单片机]
基于<font color='red'>S3C2440</font> 处理器的支持IPv6协议防火墙设计实现
S3C2440裸机------LCD_添加除法
我们前面s3c2440_lcd_controller.c里面的 int clkval = (float)HCLK/plcdparams- time_seq.vclk/2-1+0.5; //int clkval = 5; 编译时报错, 这是因为我们没有实现除法,对这种函数没有实现的一般用如下方法解决: 去uboot中找; 去内核源码中查找; 去库函数中查找(一般来说编译器自带有很多库) 我们去uboot和内核源码里面搜索floatsisf都没有搜到,所以我们去编译器自带的库中找, echo $PATH 看一下我们的编译器路径,然后去路径下 进入工具链的目录: grep __floatsisf * -nR
[单片机]
<font color='red'>S3C2440</font>裸机------LCD_添加除法
S3C2440之看门狗
看门狗定时器的主要作用当程序因为干扰而跑飞后,能够使系统复位。从而防止系统跑飞,提高系统稳定性。 先来说说看门狗的工作原理: 设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 看门狗设计步骤: 1,设置看门狗中断操作,包括全局中断操作和看门狗中断的使能,看门狗中断向量的定义。 #define rINTMSK (*(volatile unsigned *)0x4a000008) //Interrupt mask contro
[单片机]
<font color='red'>S3C2440</font>之看门狗
十二、S3C2440 裸机 — SDRAM
12.1 SDRAM 介绍 12.1.1 SDRAM 定义 SDRAM(Synchronous Dynamic Random Access Memory):同步动态随机存储器-内存条 同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准; 动态是指存储阵列需要不断的刷新来保证数据不丢失; 对比:SRAM(静态的-触发器) 随机是指数据不是线性依次存储,而是自由指定地址进行数据读写 对比:Flash(块) DDR:DDR就是DDR SDRAM,是SDRAM的升级版。(DDR:double data rate,双倍速度的SDRAM) SDRAM经历了几代:SDR DDR1 DDR2 DDR3 DDR
[单片机]
十二、<font color='red'>S3C2440</font> 裸机 — SDRAM
S3C2440内存初始化
分三部分说明: ①2440地址空间 ②内存与芯片硬件连接 ③存储控制器寄存器 S3C2440地址空间 S3C2440对外提供27根地址线,单靠芯片上的27根引脚,它只能访问128M的外设空间。 为了扩大外设的访问范围,S3c2440芯片又提供了8个片选信号nGCS0~nGCS7,对应Bank0-Bank7。当某个片选信号nGCSx有效时,则可以通过27根地址线去访问对应这个片选的128MB空间。当访问BANKx的地址空间时,nGCSx引脚输出低电平来选中外接设备。由于有8个片选,所以2440芯片能访问的外设空间总为8*128MB=1GB.而1G(0x40000000)以上的空间,则安排给了2440内部的寄存器,访问这些内部的寄存
[单片机]
S3C2440裸机实验(7)----LCD驱动
lcd只要搞清楚了时序其实还是比较简单的,现在LINUX下的LCD驱动如果是像三星的处理器都有很好的支持,只需要修改一些参数就OK了,如果是芯片级的驱动那是比较复杂的,主要是涉及到Framebuffer会让人很抓狂,等完成了裸机的驱动我将会开始写linux的驱动程序编写的文章,请各位网友关注并提出宝贵意见!!! 先来看一下s3c2440中LCD控制器的结构: 从上面结构图可以看出:整个lcd控制器大致可以由REGBANK、LCDCDMA、TIMEGEN、VIDPRCS寄存器几个部分组成。 1。REGBANK由17个可编程的寄存器组和一块256*16的调色板内存组成,它们用来配置LCD控制器的 2。LCDCDM
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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