『7x24小时有问必答』

概述
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。

您可复制下方网址到浏览器中打开进入瑞萨中文论坛查看:
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

未完待续

推荐阅读
更多精彩内容,请点击

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码