S32K144之ADC
S32K144之ADC
S32K144有两个12位ADC模块,分别是ADC0和ADC1。不同封装的ADC模块具有不同的通道数,下面通过表格列出:
1、ADC硬件触发源
PDB触发:默认设置PDB触发模式,两个PDB 为 两个ADC 产生触发和预触发(ADC 和 PDB 成对工作,如 PDB0触发 ADC0和 PDB1触发ADC1)。
TRGMUX触发:支持许多触发器源。参考手册中以LPIT为例子。LPIT最多支持4个通道,每个通道都有一个触发器和一个预触发器。
2、DMA支持ADC
手册中有说到可能ADC需要(4K采样/秒)进行连续采样,CPU会有很有负载,所以ADC支持DMA请求功能以获得更高的性能,ADC可以在转换完成时触发DMA。
3、ADC硬件通道交错
有几个特殊的ADC通道支持两个ADC之间的通道交错。例如ADC0_SE4和ADC1_SE14,这两个通道可以独立工作,但也可以进行如下图所示的硬件交错。在硬件交错模式下,可以同时用ADC0和ADC1对引脚PTB0上的信号进行采样。交错模式由SIM_CHIPCTL [ADC_INTERLEAVE_EN]位启用。
ADC0_SE4 和 ADC1_SE14 通道在 PTB0 引脚上交错
ADC0_SE5 和 ADC1_SE15 通道在 PTB1 引脚上交错;
ADC1_SE8 和 ADC0_SE8 通道在 PTB13 引脚上交错;
ADC1_SE9 和 ADC0_SE9 通道在 PTB14 引脚上交错。
4、ADC工程之采集电压值
下面来演示一下如何通过Processor Expert来配置ADC模块,示例为使用ADC1的通道14,复用到PTB0引脚,去采集3.3V电压。
首先我们从官方示例代码中导入一个ADC示例代码,然后打开PE组件的ADC模块,进行ADC模块选择,我这里配置成ADC1。
分别配置ADC1的时钟,频率,精度,触发条件以及是否使用DMA功能,如需多个通道,在配置list中添加相应的数量,这里我全部选择默认配置。
然后进行通道配置,是否需要中断使能以及使能相应的通道,我这里选择channel 14。
最后,我们把相应的通道复用到外部引脚,我选择了PTB0,然后单击如图3这个图标,生成相应的配置代码,可在Geberated Code文件夹中进行查看。
main.c的代码如下:
/*!
** @file main.c
** @version 01.00
** @brief
** Main module.
** This module contains user's application code.
*/
/*!
** @addtogroup main_module main module documentation
** @{
*/
/* MODULE main *//* Including necessary module. Cpu.h contains other modules needed for compiling.*/
#include "Cpu.h"volatile int exit_code = 0;/* User includes (#include below this line is not maintained by Processor Expert) */
#include "printf.h"
#include "stdbool.h"/*!\brief The main function for the project.\details The startup initialization sequence is the following:* - startup asm routine* - main()
*/
int main(void)
{/* Write your local variable definition here */uint16_t ADC_result = 0;uint16_t i,j;/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/#ifdef PEX_RTOS_INITPEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */#endif/*** End of Processor Expert internal initialization. ***//* Write your code here *//** 系统初始化*/CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);/** 引脚初始化*/PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);/** 串口初始化*/LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0);/** DMA初始化*/EDMA_DRV_Init(&dmaController1_State,&dmaController1_InitConfig0,edmaChnStateArray,edmaChnConfigArray,EDMA_CONFIGURED_CHANNELS_COUNT);/** ADC初始化*/ADC_DRV_ConfigConverter(INST_ADCONV1, &adConv1_ConvConfig0);while(1){/** ADC通道配置,软件触发*/ADC_DRV_ConfigChan(INST_ADCONV1,0, &adConv1_ChnConfig0);/** 等待ADC转换完成*/ADC_DRV_WaitConvDone(INST_ADCONV1);/** ADC转换延时*/for(i = 0; i<0xFFFF; i++){for(j = 0; j < 5; j++);}/** ADC转换成功则利用串口输出ADC转换结果*/ADC_DRV_GetChanResult(INST_ADCONV1, 0, &ADC_result);PRINTF("ADC result : %d\r\n",ADC_result);}/*** Don't write any code pass this line, or it will be deleted during code generation. ***//*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/#ifdef PEX_RTOS_STARTPEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */#endif/*** End of RTOS startup code. ***//*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/for(;;) {if(exit_code != 0) {break;}}return exit_code;/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***//* END main */
/*!
** @}
*/
/*
** ###################################################################
**
** This file was created by Processor Expert 10.1 [05.21]
** for the Freescale S32K series of microcontrollers.
**
** ###################################################################
*/
通过串口打印出ADC采集到的电压值:
完整工程百度网盘链接:链接:https://pan.baidu.com/s/1cWGszQibulHaagmUuMG6Og 提取码:dkk6
S32K144之ADC相关推荐
- S32K系列S32K144学习笔记——ADC
一用S32K144苦似海,道友,能不用,千万不去用. 本例程基以下如图所示接口操作,MCU为S32K144,开发平台S32DSworkspace 功能描述:读取端口电压 如有错误,麻烦帮忙指出,谢谢! ...
- S32K144(14)ADC
1.简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 S32K14x包含两个12位ADC模块,ADC0和ADC1 应用程序可能需要ADC的连续采样(4K采样/秒),这可能对CPU有 ...
- S32K144(2)时钟配置
目录 1.简介 2.时钟树 2.1.时钟源 2.2.时钟模式 2.3.各模块的时钟频率 3.寄存器 3.1.SCG_VERID:Version ID Register 3.2.SCG_PARAM:Pa ...
- S32K144从入门到跑路——芯片性能与主要功能模块与存储空间的地址分配(持续更新)
重要表格 命名规则如下: 如需批量购买可以私信本人. 32-PIN QFN 98ASA01350D S32K K1系列,只要引脚和封装是对应的就是兼容的.以上文件涵盖S32K K1封装 芯片性能 符合 ...
- 基于S32K144实现TPS929120的基本控制功能
文章目录 前言 1.TPS92910简介 2.硬件调试平台 2.1 灯板原理图 2.2 参考电流 2.3 器件地址 3.TPS929120通信协议 3.1 物理层 3.2 数据链路层 3.3 传输层 ...
- S32K系列之ADC
简介 在S32K中,不同的芯片型号支持的ADC通道不同,S32K144UAVLL有两个ADC,每个ADC有12位.10位.8位和6位可选,每个ADC有16个外部通道.学习ADC的第一步是要掌握ADC的 ...
- 如何使用S32K1的PDB模块触发多个ADC通道连续采样
文章目录 1. 外设模块介绍 1.1 PDB模块简介 1.2 ADC通道 1.3 ADC触发源 1.4 PDB触发多个ADC通道的两种方式 2. 例程 2.1 例程功能介绍 2.2 例程编写 2.2. ...
- S32K144(13)PDB
1.简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 首先,PDB肯定是一个定时器,但是它这个定时器傍上了大腿,所以就显得它尤其的重要,因为PDB->ADC是官方默认和建议的 ...
- IAR+openSDA+s32k144 环境搭建
前言:近日偶然接触到一块nxp的开发板,S32K144 EVB.小伙子长这样,很英俊有没有.使用NXP官网自带的IDE(S32 Design Studio For ARM V2.0)编译时卡的飞起,书 ...
最新文章
- 第一天:数据库设计--access数据类型介绍
- python 柱状图 保存_我如何从数据库中存储直方图数据?
- js继承的实现(转载)
- 大数据NoSQL技术之Couchbase Server数据库详解
- Linux:ps命令以及进程状态详解
- 基于计算思维的python程序设计王彬丽期末考试题库_基于计算思维的程序设计类课程教学实践...
- Let's Encrypt 申请通配符证书(使用DnsPod解析的域名操作)
- CoolFire系列讲座 第1讲
- Java 求100以内的质数(素数)
- wget无法批量下载气象数据的解决方案(Python、迅雷批量下载气象数据方法)
- 基于阿里云生活物联网平台的智能家居(物联网,智能家居,STM32,阿里云生活物联网平台,人脸识别,语音识别,语音交互)
- G003-182-18组
- Oracle安装与配置(Linux)
- 2013金山校园招聘Java笔试题
- 大牧絮叨设计模式:单例模式
- 基于蓝牙(HC-05)的安卓蓝牙 APP开发
- 【学习笔记】【计算机组成原理】定点数与浮点数的运算;LRU算法实现;cache命中;流水线冲突、冲刷;
- 总结0欧姆电阻的用处
- NNTP:互联网新闻组
- Google重磅发布云游戏平台,彻底告别游戏主机时代