SemiDrive E3 SSDK driver_demo adc_Async_int 介绍

一、前言

本文介绍如何使用 E3 芯片 ADC 的 Async mode 转换和中断处理功能。

使用 adc_Async_int 示例程序,完成 ADC 转换 A12、A14、A15 这些管脚上的电压信号,并输出相应的电压数据。

硬件平台:芯驰 E3640 E3_GATEWAY_A03 开发板

软件平台:SemiDrive_E3 SSDK PTG2.0

 
Demo流程概述:

- ADC 初始化;

- 在 0~2 位置上配置三种 ADC 转换的模拟参数,如采样时间、参考电压、单端差分模式;

- 在 rc0 entry 的 0~3 位置上配置通道转换参数,包含通道号、模拟参数所在位置等;

- 配置 rc0 timer 的运行和触发参数;

- 设置控制器要记录的中断状态,以及哪些状态可以触发中断,注册中断回调函数并使能;

- 启动 rc0 timer 进行触发,启动 ADC 的 Async mode。 Async mode 下,调度器按固定的优先级顺序(RCHT>RC0>RC1>RC2>RC3),接收来自各 rc 的触发信号并进行模数转换;

- 中断触发时将数据读走;

- 读满数据后停止转换,关闭中断,清空余下的转换数据;

- 计算转换值并打印输出相应的电压值。

 

二、电气原理图

E3_REF_GATEWA_A03_SCH 可知 GPIO_A12 外接 VDD3.3V,GPIO_A14(A15) 外接 VDD1.8V。




图 1 原理图部分

三、程序分析

例程路径:E3_SSDK_PTG2.0_Source_Code\ssdk\boards\e3_gateway\driver_demo

\adc\adc_Async_int,程序进入主函数中,在一系列初始化、复位后,循环设置片外引脚与片内 ADC 通道连接,然后调用 ADC 异步例程,最终进入到死循环。



图 2 入口函数

 

异步例程介绍:

- 在 0~2 位置上配置三种 ADC 转换的模拟参数,如采样时间、参考电压、单端差分模式;

- 在 rc0 entry 的 0~3 位置上配置通道转换参数,包含通道号、模拟参数所在位置等;

- 配置 rc0 timer 的运行和触发参数;



图 3 异步例程


- 设置控制器要记录的中断状态,以及哪些状态可以触发中断,注册中断回调函数 adc_demo_int() 并使能;




图 4 例程中断相关

 

- 启动 rc0 timer 进行触发,启动 ADC 的 Async mode。 Async mode 下,调度器按固定的优先级顺序(RCHT>RC0>RC1>RC2>RC3),接收来自各 rc 的触发信号并进行模数转换;


图 5 例程启动相关

 

- 中断触发时将数据读走;


图 6 中断处理函数

 

- 读满数据后停止转换,关闭中断,清空余下的转换数据;



图 7 转换停止相关

 

- 计算转换值并打印输出相应的电压值。



图 8 例程输出相关

 

调用的函数及电压转换公式:


图 9 输出相关细节

 

 

四、运行现象:

 打印的电压值与原理图所示相符,输出逻辑与异步例程代码一致。



图 10 运行现象

 

五、参考文档

《E3400_E3600_MCU_Datasheet_Rev00.16》

《SemiDrive_E3_SSDK_User_Guide》

《SD103_E3_REF_GATEWAY_ePOWERTRAIN产品用户手册》


欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
作者:Alan Li / 李亚楠

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论