一、概述
本文将对 SemiDrive E3 系列 MCU 的 ADC 模块进行简要介绍,具体内容包括 ADC 模块的特性、ADC 模块的功能描述以及 ADC 驱动代码介绍等方面。
二、 E3 ADC 模块的特性
E3 系列 MCU ADC 模块主要包括以下特性:
- 支持 12 位的分辨率
- 支持最高 2 MHz 的采样率
- 支持高达 8 个差分输入和16 个单端输入
- 支持单独转换
- 支持连续转换
- 支持硬件触发采集
- 支持连续采集模式下的通道调度
- 支持转换结果 FIFO 操作
- 支持同步和异步两种工作模式
- 支持 DMA 操作
- 支持模块的软件复位
三、E3 ADC 模块的功能描述
E3 系列 MCU 的 ADC 模块包含以下功能:
3.1 硬件触发控制模块(HTC)
该模块主要包括以下功能:
- 跟外部的硬件触发生成器(HTG)握手
- 接收 HTG 生成的信息并进行响应
- 传输触发信息给 RCHT
3.2 硬件触发请求通道(RCHT)
该模块主要包括以下功能:
- 获取 HTC 的触发请求和触发 ID
- 获取 APB reg 中的 32 个入口转换命令
- 传输命令配置给 SCH
- 计算 ADC 转换结果的平均值
3.3 请求通道(RC)
该模块主要包括以下功能:
- 包含内部定时器用于内部触发
- RC 请求可以通过定时器触发或者软件触发
3.4 调度器(SCH)
该模块包括以下功能:
- 对多个 RC 的转换请求进行仲裁
- 支持两种工作模式:同步模式和异步模式
- 可对每个转换请求选择相应的配置
- 管理每个请求的转换序列
- 发送转换结果给 FIFO 模块
- 包含时间戳计数器
- 生成参考时钟
3.5 监控器
该模块包括以下功能:
- 监控模块由 8 个单次监控器和 1 个连续监控器组成
- 监控器会对 ADC 转换结果进行监控
- 支持三种监控事件:过阈值、欠阈值和阈值之间
- 单次监控器在监测事件触发后生成 IRQ 请求
- 连续监控器在监测到多个连续的监控事件后生成 IRQ 请求,事件的个数可以通过一个 6 位的可配置的事件计数器来配置
3.6 FIFO 控制模块
该模块包括以下功能:
- FIFO 模块可以被禁用,当禁用时可以通过寄存器来读取转换结果
- 当 FIFO 模块使能时,转换结果会送进 FIFO 中,其中低 12 位为转换结果,中间 9 位为通道信息,高位为时间戳信息。
- FIFO 支持 16位、32位和 64 位模式
- FIFO 的大小为 128 * 32位
- 对于 32位模式,当 FIFO 满了以后,最新的数据会覆盖最早进入的数据
- FIFO 支持突发读取,长度为 16 * 4 Byte
- FIFO 支持 ECC 保护
- 支持错误中断生成
3.7 DMA 控制
该 ADC 模块支持生成 DMA 请求,包括以下情况:
- Sub-FIFO 满了
- RC 请求转换完成
四、 E3 ADC 驱动代码的配置
下面结合 E3 ADC 的驱动代码来看看具体如何使用 ADC,文中的 SDK 代码版本为 PTG2.0,具体的例程为:E3_SSDK_PTG2.0_Source_Code\ssdk\boards\e3_gateway\driver_demo\adc\adc_Async_int
主函数如下:
图 5.1主函数代码
以下为 ADC 例程的代码:
图 5.2 adc_async_int_demo 函数1
图 5.3 adc_async_int_demo 函数2
五、参考资料
1.《E3400_E3600_MCU_Technical_Reference_Manual_Rev00.05》,2022.09
评论