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相关推荐

  1. S32K系列S32K144学习笔记——ADC

    一用S32K144苦似海,道友,能不用,千万不去用. 本例程基以下如图所示接口操作,MCU为S32K144,开发平台S32DSworkspace 功能描述:读取端口电压 如有错误,麻烦帮忙指出,谢谢! ...

  2. S32K144(14)ADC

    1.简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 S32K14x包含两个12位ADC模块,ADC0和ADC1 应用程序可能需要ADC的连续采样(4K采样/秒),这可能对CPU有 ...

  3. S32K144(2)时钟配置

    目录 1.简介 2.时钟树 2.1.时钟源 2.2.时钟模式 2.3.各模块的时钟频率 3.寄存器 3.1.SCG_VERID:Version ID Register 3.2.SCG_PARAM:Pa ...

  4. S32K144从入门到跑路——芯片性能与主要功能模块与存储空间的地址分配(持续更新)

    重要表格 命名规则如下: 如需批量购买可以私信本人. 32-PIN QFN 98ASA01350D S32K K1系列,只要引脚和封装是对应的就是兼容的.以上文件涵盖S32K K1封装 芯片性能 符合 ...

  5. 基于S32K144实现TPS929120的基本控制功能

    文章目录 前言 1.TPS92910简介 2.硬件调试平台 2.1 灯板原理图 2.2 参考电流 2.3 器件地址 3.TPS929120通信协议 3.1 物理层 3.2 数据链路层 3.3 传输层 ...

  6. S32K系列之ADC

    简介 在S32K中,不同的芯片型号支持的ADC通道不同,S32K144UAVLL有两个ADC,每个ADC有12位.10位.8位和6位可选,每个ADC有16个外部通道.学习ADC的第一步是要掌握ADC的 ...

  7. 如何使用S32K1的PDB模块触发多个ADC通道连续采样

    文章目录 1. 外设模块介绍 1.1 PDB模块简介 1.2 ADC通道 1.3 ADC触发源 1.4 PDB触发多个ADC通道的两种方式 2. 例程 2.1 例程功能介绍 2.2 例程编写 2.2. ...

  8. S32K144(13)PDB

    1.简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 首先,PDB肯定是一个定时器,但是它这个定时器傍上了大腿,所以就显得它尤其的重要,因为PDB->ADC是官方默认和建议的 ...

  9. IAR+openSDA+s32k144 环境搭建

    前言:近日偶然接触到一块nxp的开发板,S32K144 EVB.小伙子长这样,很英俊有没有.使用NXP官网自带的IDE(S32 Design Studio For ARM V2.0)编译时卡的飞起,书 ...

最新文章

  1. 第一天:数据库设计--access数据类型介绍
  2. python 柱状图 保存_我如何从数据库中存储直方图数据?
  3. js继承的实现(转载)
  4. 大数据NoSQL技术之Couchbase Server数据库详解
  5. Linux:ps命令以及进程状态详解
  6. 基于计算思维的python程序设计王彬丽期末考试题库_基于计算思维的程序设计类课程教学实践...
  7. Let's Encrypt 申请通配符证书(使用DnsPod解析的域名操作)
  8. CoolFire系列讲座 第1讲
  9. Java 求100以内的质数(素数)
  10. wget无法批量下载气象数据的解决方案(Python、迅雷批量下载气象数据方法)
  11. 基于阿里云生活物联网平台的智能家居(物联网,智能家居,STM32,阿里云生活物联网平台,人脸识别,语音识别,语音交互)
  12. G003-182-18组
  13. Oracle安装与配置(Linux)
  14. 2013金山校园招聘Java笔试题
  15. 大牧絮叨设计模式:单例模式
  16. 基于蓝牙(HC-05)的安卓蓝牙 APP开发
  17. 【学习笔记】【计算机组成原理】定点数与浮点数的运算;LRU算法实现;cache命中;流水线冲突、冲刷;
  18. 总结0欧姆电阻的用处
  19. NNTP:互联网新闻组
  20. Google重磅发布云游戏平台,彻底告别游戏主机时代

热门文章

  1. java判断两个数互质_AcWing 458. 比例简化-java(无需判断互质)
  2. git是什么,git怎么用?
  3. Scratch精通之积木的使用
  4. HTML常用字体样式设置(加粗、下划线、斜体)
  5. CentOS7 编译安装qbittorrent遇到的问题
  6. Erlang数据结构
  7. 弘辽科技:拼多多关键词出价多少好?出价方法有哪些?
  8. 天池O2O优惠券使用预测
  9. java获得指定时间的时间戳
  10. Ubuntu好用的视频播放器