dma当前组的ptr和len
PDC_RPR
PDC_RCR
dma的下一组备用ptr和len
PDC_RNPR
PDC_RNCR
设备启动时,PDC_RCR会从最大递减,直到为1时,当再收到一个数据之后,PDC_RPR将被cpu
内部自动设置为PDC_RNPR中的数值,
同时将PDC_RCR设置为PDC_RNCR,同时PDC_RNCR计数值被清0,
(所以可以通过检测PDC_RNCR为0来作很多事情)这样pnpr就又空闲出来了,
我们可以设置一个内存地址给PDC_RNPR同时设置PDC_RNCR大小
关键字:arm7 DMA PDC方式
引用地址:
arm7的DMA工作原理-PDC方式
推荐阅读最新更新时间:2024-03-16 15:00
ARM7实现指纹考勤系统硬件设计
生物识别技术依靠其鉴别的唯一性和可靠性,经过近十年的发展,应用已经越来越广泛和成熟,目前指纹识别技术已趋向民用市场普及,指纹考勤机就是其主要的应用之一。 引言 目前指纹识别技术已趋向民用市场普及,指纹考勤机就是其主要的应用之一。笔者采用功能强大的S33C44B0X处理器设计了一款指纹考勤机,在功能、接口、价格等方面都有着极大的优势。 所设计的考勤机具有指纹采集和刷卡采集两大基本功能。指纹采集部分采用CMOS光学传感器。刷卡采集相应的射频模块,它可以通过串口的方式与CPU通信。考勤机和上位机的通讯则采用通用的模拟USB接口,有效地达到了即保证低成本又方便用户使用的目的。另外还加入了USB充电,实时时钟显示,语
[单片机]
基于ARM7和CPLD的数字公交站亭系统设计
摘要:提出了一种基于ARM7 和CPLD 架构的数字公交站亭系统。系统通过GPRS 模块与公交控制中心实时通信,使用CA 认证保证通信的安全性,采用两块SRAM 组成具有“乒乓逻辑”的高速缓存确保显示数据的连续性,可实现同一站亭多条线路信息动态显示、实时车辆到站预报、公众信息发布、线路信息及时更新以及系统在线升级等功能,具有实时性好、安全性高,可扩展性强等特点。 针对现有印刷公交站亭提供信息少、无法提供车辆到站预报、增加线路或者修改线路信息麻烦等不足,本文提出了一种新数字公交站亭系统。该系统基于ARM7 和CPLD 架构,通过GPRS 与公交控制中心通信,采用CA 认证保证通信的安全性,能实现实时车辆到站预报、公众信息(
[嵌入式]
实现STM32中USART的DMA
对于没玩过DMA 的朋友,这里简单说一下DMA,用自己的语言说吧,那就是,从某个位置 传输数据到某个位置,如果不用DMA,那要CPU参与操作,一个字节一个字节地搬,效率高 点的,就一个字一个字地搬.但当你用了DMA 后,那就是只需要设置:A.从哪里开始搬; B, 搬到哪里去;C以字节方式搬还是半字还是字;D:一共搬多少个.之后,启动DMA.CPU内部 就会开始搬数据了,整个搬数据的过程都不需要指令的参与,唯一要做的,就是检测什么时 候搬完.你可以扫描寄存器,也可以用中断.这里,我使用了中断. 具体设置功能看注释就可以明白了.注意一点就是,有一个设置: DMA_InitStructure.DMA_PeripheralInc = DMA
[单片机]
STM32串口工作在DMA模式下有时接收异常
前言 客户反馈在使用STM32F205的串口工作在DMA模式时,有时能够接收数据,有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据。 一 复现现象 问题背景 与客户沟通,客户使用的是STM32F2标准库V1.1.0,串口波特率为1.408Mbps,不经过串口RS232,直接连接主CPU和从MCU(STM32F205)的串口发送和接收引脚,如下图所示: 尝试重现问题 由于客户使用的是主从架构,实验采用两块STM3220G-EVAL评估板来重现现象。一块用来不间断发送串口数据,另一块采用串口DMA进行接收,直接通过杜邦线连接串口PIN脚并共地,不使用评估板上的RS232收发器。接收端使用STM32F2xx_Std
[单片机]
WS2812灯珠(三)-- STM32 PWM+DMA方式驱动
一、理论 PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装载寄存器ARR的值决定,占空比由比较寄存器CCR的值决定。 由WS2812规格书可知: WS2812灯珠的通信速度为800Kbit/s。 数据传输时间(TH+TL=1.25us+/-600ns) 故在配置STM32定时器时可设置,预分频因子为0,自动重装载初值为90-1,则频率为72M/90 = 800K。 设值占空比为45可满足1码的时间要求,设值占空比为30可满足0码的时间要求。 二、代码实践 这里在代码中具体用到的时PA0引脚(TIM2的CH1) 头文件:通过宏配置需要控制的灯珠数目 #ifndef __BSP_W
[单片机]
MSP430fr6989的串口DMA发送实验例程(从0写起,亲测可玩)
本例子选择MSP430fr6989的P2.0与P2.1作为串口UCA0TXD UCA0RXD ;(代码不多,主要对寄存器的操作,急于求成都写在main.c文件,做工程不建议这样做) 主要用到这两个寄存器: DMACTL0用于选择DMA通道;比如ADC12,串口 ,IIC,SPI,此处多说一句:DMA是一种方式,而SPI,IIC,串口等属于外设,两者不是一类概念,嘿嘿嘿 DMAxCTL用于DMA详细设置;此为重点!!!DMAxCTL包括: DMADT:选择传输方式是一个单字节还是一个块transfer;本例子选简单的单字节transfer; DMADSTINCR:分解单词DMA dest increase 即数据传送目标地址增加
[单片机]
SPI外设与USART外设之间通过DMA直接传输初步
选取DMA1 选取通道2 SPI1 USART3 根据上面这些配置初始化,参考32例程。 下面是我配置的SPI中断,我把它直接放在SPI初始化函数后面 先中断初始化 然后建立外设之间的连接 void SPI1_IRQHandler(void) USART3- DR=SPI1- DR; 再直接进行地址映射,把SPI1外设直接映射到USART3。 使能SPI的DMA发送请求PI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Tx|SPI_I2S_DMAReq_Rx, ENABLE); 就会启动DMA 主函数
[单片机]
STM32的DMA简介
DMA是MCU一个非常重要的部分,它提供了一种直接、高效、快速的方式来传输数据,而不需要CPU的介入,大大提高了MCU的工作效率。 我们先来看一下没有DMA,数据是怎么流动的。 如图所示,红色线表示外设数据的读写,蓝色线表示内存数据的读写。数据必须要先加载到内核,然后再通过内核写入外设或内存,读写操作都需要内核做很多工作,虽然C代码可能就一行语句,但是汇编可不止一条。我们知道在程序执行的过程中这样的数据传输操作非常频繁,如果都这样处理,内核将花费太多时间在搬运数据上,无法集中精力处理更为重要的计算和中断事件,处理速度和效率就会非常的低。 使用DMA后,数据的流动变成了下图所示方式。 数据的传输工作由DMA控制器接管,假
[单片机]