RT1050的ADC

文章目录

  • 1 ADC介绍
  • 2 ADC框图
    • 2.1 外部输入通道
    • 2.2 输入电压范围
    • 2.3 触发源
    • 2.4 时钟源
    • 2.5 偏移矫正功能
      • 2.5.1 校准
  • 3 单通道中断采集实验
    • 3.1 ADC选项
    • 3.2 ADC配置
    • 3.3 配置用户通道和中断
    • 3.4 中断代码

1 ADC介绍

RT1052 有 2 个 ADC,每个 ADC 有 12 位、10 位、8 位可选,每个 ADC 有 16 个外部通道。

  • ADC具有最高 1MS/s 采样率
  • 支持单次或连续转换模式
  • 可配置采样时间和转换速度
  • 支持硬件求平均
  • 支持自动比较转换结果为小于、大于或等于某一设定的值,或者在设定的范围内、范围外。

2 ADC框图

在这里插入图片描述

2.1 外部输入通道

外部模拟的电压信号通过 ADCx_INn(n 取 0 到 15) 进入 ADC 模块

  • RT1052 的每个 ADC 多达 16 外部输入个通道,这 16 个外部输入通道对应着不同的引脚
  • 以下是ADC1对应的引脚
    在这里插入图片描述

2.2 输入电压范围

ADC 的输入电压范围为:0~3.3V。

  • 如果我们想让输入的电压范围变宽,可以测试负电压或者更高的正电压,我们可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到 0~3.3V。

2.3 触发源

RT1052 支持软件触发和硬件触发

  • 当 ADCx_CFG 寄存器的 ADTRG 位(转换触发选择位)为 1时,ADC 为软件触发方式
    • 此时向 ADCx_HC0 寄存器 ADCH 位(外部输入通道选择位)写入需要转换的外部输入通道则开启一次转换。
      ADC 还支持外部事件触发转换,通过 XBAR(外设间交叉开关)几乎可选择任何其他外设的相
      关事件作为 ADC 的外部触发事件。

2.4 时钟源

时钟有四个,分别为 ADACK、IPG Clock、IPG Clock 除 2、ALTCKL。

  • IPG clock . 默认时钟源。
  • IPG clock 二分频, 如果 IPG 的时钟过高,使用 ADIV 寄存器最大可得到 16 分频的 IPG 时钟。
  • ADACK, 该时钟是 ADC 模块中的时钟源生成的,所以当单片机处于停止模式时该时钟仍然在运行。使用该时钟在停止模式下 ADC 可以进行转换。

寄存器 ADICLK[1:0]位决定 ADC 数字部分的时钟源。

2.5 偏移矫正功能

ADCx_OFS 用于在转换结果基础上增加或者减少固定的值。ADCx_OFS 寄存器 SIGN 位用于设置增加或者减少,OFS 位用于设置增加或者减少的值。

2.5.1 校准

在系统复位后启动 ADC 转换之前要进行校准。ADCx_CAL 寄存器 CAL_CODE 保存有硬件校准值,每次校准之后该值自动更新。

3 单通道中断采集实验

RT1052 的 ADC 不使用 ADC_ETC(外部触发控制器) 时非常简单,完成 ADC 配置之后将转换通道写入相应的寄存器即可自动转换,如果开启了中断,转换完成后触发中断。

3.1 ADC选项

#define ADC1_BASE                                (0x400C4000u)
/** Peripheral ADC1 base pointer */
#define ADC1                                     ((ADC_Type *)ADC1_BASE)
/** Peripheral ADC2 base address */
#define ADC2_BASE                                (0x400C8000u)
/** Peripheral ADC2 base pointer */
#define ADC2                                     ((ADC_Type *)ADC2_BASE)

3.2 ADC配置

typedef struct _adc_config {
2 bool enableOverWrite; /*!< 使能覆盖 . */
3 bool enableContinuousConversion;/*!< 启用连续转换模式 . */
4 bool enableHighSpeed; /*!< 使能高速模式 . */
5 bool enableLowPower; /*!< 使能低功耗模式 */
6 bool enableLongSample; /*!< 使能长采样 */
7 /*!< 使能异步时钟输出 . */
8 bool enableAsynchronousClockOutput;
9 /*!< 选择参考电压源 */
10 adc_reference_voltage_source_t referenceVoltageSource;
11 /*!< 长采样模式或短采样模式下的采样周期 */
12 adc_sample_period_mode_t samplePeriodMode;
13 adc_clock_source_t clockSource; /*!< 时钟源选择 . */
14 adc_clock_driver_t clockDriver; /*!< 选择时钟分频比 */
15 adc_resolution_t resolution; /*!< 选择 ADC 分辨率 */
16 } adc_config_t;

3.3 配置用户通道和中断

/* Configure the user channel and interrupt. */
adcChannelConfigStruct.channelNumber = DEMO_ADC_USER_CHANNEL;
adcChannelConfigStruct.enableInterruptOnConversionCompleted = true;
g_AdcInterruptCounter = 0U; /* Clear the interrupt counter. */

3.4 中断代码

#define DEMO_ADC_BASE ADC1
#define DEMO_ADC_IRQn ADC1_IRQn
#define DEMO_ADC_USER_CHANNEL 0U
#define DEMO_ADC_CHANNEL_GROUP 0U
#define EXAMPLE_ADC_IRQHandler ADC1_IRQHandlerEnableIRQ(DEMO_ADC_IRQn);void EXAMPLE_ADC_IRQHandler(void)
{g_AdcConversionDoneFlag = true;/* Read conversion result to clear the conversion completed flag. */g_AdcConversionValue = ADC_GetChannelConversionValue(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP);g_AdcInterruptCounter++;/* Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlappingexception return operation might vector to incorrect interrupt */
#if defined __CORTEX_M && (__CORTEX_M == 4U)__DSB();
#endif
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web3:使用Docker-compose方式部署blockscout浏览器+charts图表

最近做的项目,需要blockscout来部署一个区块链浏览器,至于blockscout是什么,咱们稍后出一篇文章专门介绍下,本次就先介绍一下如何使用Docker-compose方式部署blockscout,以及过程中遇到的种种坑 目录 先决条件我的环境准备工作Docker-compose1.安装方式一:下载 Docker Co…

【前端从0开始】JavaSript——分支流程控制

流程控制 在任何一门程序设计语言中&#xff0c;都需要支持满足程序结构 化所需要的三种流程控制: ●顺序控制 ●分支控制&#xff08;条件控制&#xff09; ●循环控制 顺序控制&#xff1a;在程序流程控制中&#xff0c;最基本的就是顺序控制。程序会按照自上而下的顺序执行…

使用windeployqt和InstallShield打包发布Qt软件的流程

前言 Qt编译之后需要打包发布&#xff0c;并且发布给用户后需要增加一个安装软件&#xff0c;通过安装软件可以实现Qt软件的安装&#xff1b;用于安装软件的软件有很多&#xff0c;这里主要介绍InstallShield使用的流程&#xff1b; 使用windeployqt打包Qt编译后的程序 Qt程序…

【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用

【JavaEE】Spring事务&#xff08;1&#xff09; 文章目录 【JavaEE】Spring事务&#xff08;2&#xff09;1. 为什么要使用事务2. Spring中事务的实现2.1 事务针对哪些操作2.2 MySQL 事务使用2.3 Spring 编程式事务&#xff08;手动挡&#xff09;2.4 Spring 声明式事务&#…

【线程池】ThreadPoolExecutor的使用示例

文章目录 通过ThreadPoolExecutor创建线程池。线程的处理结果如何获取&#xff1f; 通过ThreadPoolExecutor创建线程池。 ThreadPoolExecutor构造方法参数&#xff1a; int corePoolSize //核心线程数量int maximumPoolSize//最大线程数long keepAliveTime//当线程数大于核心…

【无线点对点网络时延分析和可视化】模拟无线点对点网络中的延迟以及物理层和数据链路层之间的相互作用(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

指针变量、指针常量与常量指针的区别

指针变量、指针常量与常量指针 一、指针变量 定义&#xff1a;指针变量是指存放地址的变量&#xff0c;其值是地址。 一般格式&#xff1a;基类型 指针变量名;&#xff08;int p&#xff09; 关键点&#xff1a; 1、int * 表示一种指针类型(此处指int 类型)&#xff0c;p(变量…

qt检查文件夹是否有写权限

Qt 使用如下函数能够判断路径或者文件是否可写&#xff1a; bool QFileInfo::isWritable() const 对于win10系统实测&#xff0c;结果不准确。继续排查&#xff0c;官方文档描述&#xff1a;a&#xff09;如果未启用 NTFS 权限检查&#xff0c;Windows 上的结果将仅反映文件是…

作业2222

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 默认yum源已配置 先关闭防火墙和selinux mount /dev/sr0 /mnt 安装http服务 yum install httpd 编写配置文件 vim /etc/httpd/conf.d/vhosts.conf 创建对应的资源文件 mkdir /www/openlab -p echo ‘welcom…

Win解答 | 解决键盘中 字母+空格 导致的输入法弹窗导致的一系列问题

近三个月来&#xff0c;一直都有一个键盘组合键的问题影响我的电脑使用&#xff0c;不管是打字还是打游戏&#xff0c;都会出现按键盘的 字母空格 弹出一个特殊符号的候选框&#xff0c;如下图所示 图片中为 S空格 所出现的弹窗 一个看似方便&#xff0c;实则难受的功能 其实打…

序列化协议:JSON和XML

作者&#xff1a;CARROT 链接&#xff1a;https://www.zhihu.com/question/604811576/answer/3100483698 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 json和xml都是数据传输的格式。比如我们开发过程中需要和网…

SpringBoot入门篇2 - 配置文件格式、多环境开发、配置文件分类

目录 1.配置文件格式&#xff08;3种&#xff09; 例&#xff1a;修改服务器端口。&#xff08;3种&#xff09; src/main/resources/application.properties server.port80 src/main/resources/application.yml&#xff08;主要用这种&#xff09; server:port: 80 src/m…

Go 1.21新增的 cmp 包详解

Go 1.21新增的 cmp 包提供了与比较有序值相关的类型和函数&#xff0c;前几篇文章讲解的 slices 包中的函数有大量使用到 cmp 包中的函数和类型。 cmp.Compare 函数 定义如下&#xff1a; func Compare[T Ordered](x, y T) int 返回值有以下几种情况&#xff1a; 如果 x 小…

MybatisPlus简单到入门

一、MybatisPlus简介 1、入门案例&#xff08;重点&#xff09;&#xff1a; 1.SpringBoot整合MP1).创建新模块选择&#xff0c;Spring项初始化。2).选择当前模块使用的技术&#xff0c;只保留MySQL Driver就行&#xff0c;不要选择mybatis避免与后面导入mybatisPlus的依赖发…

[Go版]算法通关村第十四关白银——堆高效解决的经典问题(在数组找第K大的元素、堆排序、合并K个排序链表)

目录 题目&#xff1a;在数组中找第K大的元素解法1&#xff1a;维护长度为k的最小堆&#xff0c;遍历n-k个元素&#xff0c;逐一和堆顶值对比后&#xff0c;和堆顶交换&#xff0c;最后返回堆顶复杂度&#xff1a;时间复杂度 O ( k ( n − k ) l o g k ) O(k(n-k)logk) O(k(n−…

CSS实现内凹圆角,从而实现圆角边框

1、代码 <!DOCTYPE html> <html><head><style>.uu {position: relative;width: 400px;height: 300px;}img {width: 100%;height: 100%;z-index: 1;}.box_right_top {background-image: radial-gradient(circle at left bottom, transparent 50px, whi…

统信OS国产操作系统身份证读卡器社保卡读卡web网页开发使用操作流程

用于DONSEE系列身份证阅读器谷歌Chrome火狐Firefox插件&#xff0c;支持的型号有&#xff1a;EST-100、EST-100GS、EST-100G、EST-100U、EST-200G、EST-J13X等。 本方案无缝支持最新版本谷歌Chrome火狐Firefox等网页浏览器&#xff0c;支持H5、Vue、React、Node.js、Electron、…

【面向对象编程的三大特征:封装;继承;多态】

面向对象编程的三大特征&#xff1a;封装&#xff1b;继承&#xff1b;多态 前言&#xff1a; 最近在B站搜到韩顺平老师的java入门课&#xff0c;这里记录下实践&#xff1b; 熟悉&&掌握面向对象三大特征&#xff1a;封装&#xff1b;继承&#xff1b;多态; 多态是基…

设计模式--单例模式(Singleton Pattern)

一、什么是单例模式 单例模式是一种创建型设计模式&#xff0c;它旨在确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。换句话说&#xff0c;单例模式限制了类的实例化次数为一个&#xff0c;并提供一种在应用程序中共享一个实例的方式。这对于需要只有…

Linux系统编程:线程控制

目录 一. 线程的创建 1.1 pthread_create函数 1.2 线程id的本质 二. 多线程中的异常和程序替换 2.1 多线程程序异常 2.2 多线程中的程序替换 三. 线程等待 四. 线程的终止和分离 4.1 线程函数return 4.2 线程取消 pthread_cancel 4.3 线程退出 pthread_exit 4.4 线程…