概述
ADC在产品设计中是非常常用的MCU外设模块,当在某些复杂的应用下需要非常快的采样速度时,使用DMA进行数据搬运,可以更便捷的来实现对数据的高效搬运,结合本例在FSP上轻松配置您的所需,同时也让我们了解一下瑞萨RA6M4系列DMAC和ADC的详细介绍。
DMAC简介
DMAC (Direct Memory Access Controller)称为直接存储访问控制器/直接内存访问控制器, 可以在不占用 CPU 总线资源的情况下,将数据从一个内存位置传输到另一个内存位置。
1.1 DMAC特性
RA6M4包括一个8通道直接内存访问控制器(DMAC),无需CPU干预即可传输数据。当产生DMA传输请求时,DMAC将存储在传输源地址的数据传输到目标地址。
点击可查看大图
1.2 DMAC框图
点击可查看大图
1.3 DMAC激活源
● 软件触发
● 外设模块的中断请求
● 外部中断请求
DMAC激活源需在DMTMD寄存器的 DCTG[1:0] 位进行设置。
1.3.1 软件触发DMAC
可以通过软件启动DMA传输
1.3.2 来自片上外设模块或外部中断请求激活DMAC
可以将片上外设模块的中断请求或外部中断请求设置为DMAC的激活源。可以通过ICU的DELSRn寄存器的 DELS[8:0]位 (n = 0~7) 为每个通道单独选择激活源。
1.3.3 DMAC中断优先级
程序执行中存在多个DMA传输请求时,DMAC来决定每个具有DMA传输请求的通道的优先级。通道优先级固定如下:
通道 0 > 通道 1 > 通道 2 > 通道 3… > 通道 7
其中通道 0: 优先级最高
如在数据传输期间产生DMA传输请求时,在数据已传输之后再进行通道仲裁,优先级较高的通道的DMA优先传输。
1.3.4 事件链接
每个DMAC通道在每次完成数据传输或块数据传输时,都会输出一个事件链接请求信号(DMACn_INT)。
当传输目的地是外部总线时:在写入缓冲区操作被接受时会产生一个事件链接请求信号。
如果写入传输的最后数据时发生总线错误,则会发生传输结束事件和错误响应检测中断(DMA_TRANSERR)。
1.4 DMAC传输模式
正常模式 (Normal Mode):
在正常模式下,每次DMAC通道接收到配置的ELC事件时,都会传输单个数据单元。数据单元可以是1字节、2字节或4字节。源地址和目标地址可以是固定的、递增的、递减的,或者在每次传输后向下一个数据单元添加偏移量。每次传输后,16位计数器递减。当计数器达到0时,ELC事件将不再触发传输,并且可以中断CPU以指示所有传输已完成。
重复模式 (Repeat Mode):
重复模式的工作方式与普通模式相同,但长度限制为范围[1,1024] 内的整数。当传输计数器达到0时,计数器将重置为其配置的值,重复区域(源或目标地址)将重置为其起始地址,剩余的块计数将减少1。当块计数达到0时,ELC事件将不再触发传输,并且CPU可能会中断以指示所有传输已完成。
块模式 (Block Mode):
在块模式下,每个中断传输的数据单元量可以设置为范围 [1,1024] 中的整数。要传输的块数也可以配置为16位数字。每次块传输后,重复区域(源地址或目标地址)将重置为原始地址,另一个地址将递增或递减到下一个块。
重复-块模式 (Repeat-Block Mode):
1个DMA传输请求的1个块数据传输,最大可设置块大小:1024,块传输可以重复,最大可设置重复大小:64K,可选择的自由运行功能。
支持三种位长:8、16、32位
如果是8位时块大小为0xFFFF
如果是16位时块大小为0x7FFF
如果是32位时块大小为0x3FFF
二
ADC简介
ADC即模拟数字转换器,ADC英文全称(Analog-to-digital converter),用于将模拟电压的连续信号转换为离散的数字信号。可以将我们生活中的温度、压力、声音这样的模拟信号通过ADC转化为可以通过单片机处理的数字信号,方便检测。
2.1 ADC特性
12、14或16位最大分辨率,具体取决于MCU
配置扫描包括:
多个模拟通道
温度传感器通道
电压传感器通道
可配置的扫描启动触发器:
软件扫描触发器
硬件扫描触发器(例如定时器溢出)
来自ADTRGn端口引脚的外部扫描触发器
可配置扫描模式:
单次扫描模式,其中每个触发器启动一次扫描
连续扫描模式,连续扫描所有通道
组扫描模式,其中通道分为组A和组B。可以为组分配不同的启动触发器,并且可以将组A优先于组B。当组A优先于组B时,组A触发器将挂起正在进行的组B扫描。
支持添加加法/平均转换后的样本
扫描完成时的可选回调
支持采样保持
双触发
带中断和事件输出的硬件比较器
2.2 ADC框图
点击可查看大图
点击可查看大图
2.3 工作模式
驱动程序支持三种操作模式:单次扫描、连续扫描和组扫描模式。在每种模式下,模拟通道按通道号的升序进行转换,然后扫描温度传感器和电压传感器(如果它们包含在要扫描的通道模板中)。
单次扫描模式
在单次扫描模式下,每个触发器扫描一次一个或多个指定通道。
连续扫描模式
在连续扫描模式下,需要单个触发器才能启动扫描。扫描将继续,直到调用 R_ADC_ScanStop()。
组扫描模式
组扫描模式允许应用程序将通道分配给两个组(A和B)之一。当收到该组的指定ELC启动触发器时,转换开始。
使用优先级配置参数,您可以选择将组A置于组B之上。如果组A优先于组B,则当发生组A扫描触发时,组B扫描将中断。当组A具有优先级时,组B存在以下选项:
在组A扫描完成后重新启动中断的组B扫描。
等待另一个组B触发器和放弃被中断的扫描。
持续扫描组B并仅在收到组A触发器时暂停扫描组B。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !