哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/02/28/6213327.aspx
首先讨论一下s3c24440的时钟和DMA部分,也是非常重要的两个部分。
s3c2440的时钟与电源管理模块包括3个部分,时钟控制,USB控制和电源控制。时钟源如下图有两个,左边的是外部晶振提供,右边是外部时钟提供。
由这个表可以看出来时钟源的选择是在引导的时候由OM[3:2]引脚决定的。
如图,刚上电一小段时间后,FCLK=晶振时钟,等待4个时钟周期后,PLL锁存有效,自动插入一段PLL Lock Time,即PLL锁定时间,此时,FCLK停止震荡,CPU停止工作,Lock time的长短由寄存器LOCKTIME设定。PLL Lock Time之后,MPLL输出正常,CPU工作在新的FCLK下。
有两个PLL,一个是MPLL,一个是UPLL。MPLL分频得到FCLK(用于CPU),HCLK(用于AHB BUS),PCLK(用于APB BUS)。UPLL产生UCLK给USB提供48M或96M时钟。上边的是s3c2440a的体系结构图,最上边的是CPU wrapper,也就是CPU核,中间的AHB BUS相当于系统总线,APB相当于IO总线。中间的Bridge相当于康柏(Compaq)公司提出的南桥。这个Bridge的作用就是连接高速和低速总线。这种结构类似于:
通过配置MPLLCON的MDIV,PDIV,SDIV可以获得MPLL。通过公式:
Mpll = (2 * m * Fin) / (p * 2S)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
AHB BUS(advanced high-performance bus)上连接的是高速设备如LCD,USB Host,ExtMaster,SDRAM等。注意他们是通过控制器间接跟总线连接的。APB BUS(advanced peripherals bus)连接的就是低速的外围设备。
DMA对s3c2440的性能非常重要。S3c2440支持位于系统总线和外围总线之间的4个通道的控制器。每个DMA控制器通道无限地执行系统总线上的设备或外设总线上的设备之间数据搬移。
DMA有3种状态:
状态一:作为初始状态,DMA等待DMA请求,一旦请求到达,进入状态二,在此状态,DMA ACK和INT REQ都为0。
状态二:在此状态,DMA ACK变成1且计数器(CURR_TC)从DCONN[19:0]装载。注意DMA ACK直到后边被清除一直保持1。
状态三:在此状态,进行DMA原子操作的子状态机被初始化。此子状态机从源地址读取数据并写入目的地址。此操作应该考虑数据大小和传输大小(single or burst),而在全服务模式whole service mode中,次操作一直被重复直到计数器(CURR_TC)变成1;而在单服务模式single service mode中,此操作仅被执行一次。当计数器(CURR_TC)变成0且外部中断设置DCON[29]
寄存器被置1,主状态机发出中断请求信号(INT REQ)。另外,遇到以下情况,其清除DMA ACK。
(1)在全服务模式下计数器(CURR_TC)变成0
(2)在单个服务模式下计数器原子操作完成
外部DMA请求/应答模式:
有3种类型的外部DMA请求/应答协议(单服务请求,单服务握手和全服务请求模式)。
请求模式和服务模式的对比:
-如果XnXDREQ 保持有效,下个传输马上开始,否则它会一直等到XnXDREQ 有效。
握手模式
如果XnXDREQ 无效,DMA 在两个周期内将XnXDACK 设无效。否则他会一直等
XnXDREQ 无效。
当需要DDMA操作的时候,外部DMA请求引脚XnXDREQ置为低电平,此时,DMA控制器向CPU发出占用总线的请求,当总线请求成功后,XnXDACK变为低电平,表示CPU已将总线使用权交给了DMA控制器,可以进行数据传输。当数据传输完成后应答信号XnXDACK置为高电平,通知CPU完成一次数据传输。
分享到:
相关推荐
本篇应用说明介绍了R7F0C010串行阵列单元(3线串行/O)和DMA组合方式下, 进行时钟同步通信的连续发送/接收的方法。
介绍使用flash时钟的制作方法
本篇应用说明介绍了R7F0C019串行阵列单元(3线串行/O)和DMA组合方式下, 进行时钟同步通信的连续发送/接收的方法。
// 开启DMA时钟 DMA_DeInit(DMA2_Stream0); DMA_InitStructure.DMA_Channel=DMA_Channel_0; DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;// 外设基址为:ADC 数据寄存器地址 DMA_...
用SPI5与Flash芯片通信(W25Q256JV),使用了DMA进行收发数据,SPI是同步通信,同时收发数据(其实仅与发TX同步,作为主器件,Tx产生波特率时钟SCK信号) 利用可变参数宏实现printf与scanf 定义了Flash输入输出结构体,...
DMA/Bridge Subsystem for PCI Express v4.1 读书笔记 (中文) XDMA 参考文档:PG195, https://github.com/Xilinx/dma_ip_drivers, https://support.xilinx.com/s/article/65443?language=en_US XDMA IP核的中文...
基于STM32CUBE生成的HAL库驱动无FIFO无时钟的OV7670,并通过DMA传输显示在LCD屏上。用的是STM32F407,文件带有自己写的CUBE配置过程,及调试成功的图像证明。
CODECLK通过对处理器主时钟分频得到,CODECLK与采样频率的 对应关系如表1所示。串行时钟频率IISCLK可以为采样频率的16、32、48倍。 表1 音频主时钟与采样频率的对应关系 IIS总线的传输方式一般有三种:正常...
用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的...
对频率变化的信号测量频率后确定时钟触发频率,即确定了采样率,用ADC双通道测量两路信号,用DMA传输至一个数组内存中,然后显示波形、计算Vpp、并对数据进行FFT,分析频谱确定波形名称(可判断正弦波,三角波,方波...
STM32F429IGT6,用时钟来控制触发频率,然后触发ADC采样,利用DMA搬运到内存,然后进行FFT,
基于stm32系统下, 通过DMA的方式读写操作SD卡,时钟24MHZ
STM32F767 使用spi dma HAL库 高速驱动9341TFT屏 可用例程!!SPI时钟54MHZ 实测35MHZ TFT刷屏频率20HZ
说明:使用F1、F4系列需要更改定时器的输出引脚,还需要根据定时器时钟计算重装载值,使PWM频率、高低电平时间与WS2812匹配。 本文配套分享文章链接:https://blog.csdn.net/qq_30267617/article/details/109600880...
ESP32HUB75矩阵变形时钟_C++_C_下载.zip
软件驱动包括IIC、PWM、SPI、多路ADC与DMA、编码器输入捕获、外部中断、通信协议、IAP升级、PID、freertos操作系统等。代码注释清晰、代码规范好、每个函数必有输入输出范围参数解释。 1.多线程支持:STM32FreeRTos...
关于DSP的EDNA使用寄存器和相关API函数的总结资料,EDMA是在DMA上发展起来的一种传输方式,它拥有DMA传输的全部特性,除了具有DMA后台操作(即不占用CPU的时钟),高吞吐率等特点外,EDMA比DMA通道的功能 ...
Linux总线 设备 驱动模型 .
1. DMA不占用CPU, 2. DMA的控制主要在CCR1寄存器中,可设置传输模式,方向,数据大小,地址自增,... 使能相应外设和DMA的时钟 b. 初始化DMA结构体 c. 清除传输完成标志位 d. 使能DMA e. 必须将要传输的BUF定义好
模式配置为1bit,开启DMA传输,开启中断 Clock transition on which the bit capture is made (时钟跳变沿捕获数据配置):数据捕获边沿设置,可设置为上升沿/下降沿 SDIO Clock divider bypass (时钟分频器...