GD32F130FXP6学习笔记六:cortex-m3系列的ADC初识
参考资料:http://blog.sina.com.cn/s/blog_5e87dc1201018l1n.html
查看GD32F130FXP6用户指南的ADC章节,发现AD有两个组,4中转换模式。
一、AD两个组
1、规则通道组
通过寄存器配置把某些通道放到一组里面(GD32F130FXP6最多支持16个通道),
然后逐个转换这组通道,这组通道都转换完成后,再从头开始转换,那么这个组就
叫做规则组。
2、注入组
但是实际应用中,有可能需要临时中断规则组的转换,对某些通道进行转换,这些需要中断
规则组而进行转换的通道组,就称为注入组(GD32F130FXP6最多支持4个通道)。对于
ADC模块来说,它按规则转换规则组时,被要求临时转换规则组之外的某些通道,就好像
这组通道临时注入了原来的顺序,所以形象地称其为注入组。
一个不太恰当的比喻是:规则通道组的转换好比是程序的正常执行,而注入通道组的转换则
好比是程序正常执行之外的一个中断处理程序。
二、四中工作模式
1、单次模式
每触发一次,规则组或者注入组就转换一次,每次转换都是按着既定的通道次序转换,每次
转换完成后,EOC或者EOIC就被置位。每个通道转换,都需要触发信号。
2、连续转换模式
触发一次,规则组或者注入组就把本组所有指定的通道按着顺序,逐个转换一遍,每个通道
转换完成都会引发EOC或者EOIC就被置位,切循环不停(有待验证)。
如果使能了扫描模式,则只有当最后一个通道转换完成后,才会引发EOC或者EOIC就被置位
注:扫描模式下,要使能DMA。
3、扫描模式
触发一次,规则组或者注入组就把本组所有指定的通道按着顺序,逐个转换一遍,只有当最后
一个通道转换完成后,才会引发EOC或者EOIC就被置位。每轮转换,都需要触发信号。
注:扫描模式下,要使能DMA。
4、间断模式
规则组和注入组同时只能有一组被设置为间断模式。
规则组:可以每次选择N(<=8)个进行转换,每个分片都需要启动信号,最后一个分片转换
完成后,触发EOC。
注入组:只能每次转换一个,当注入组最后一个转换完成后,触发EOIC。
三、ADC模块初始化
初始化顺序:
1、禁止ADC模块工作(ADCON = 0);
2、设置时钟源、预分频系数;
3、设置通道采样周期,设置数据对齐方式,设置ADC工作模式;
4、设置PIN为模拟引脚或者模拟输入引脚;
5、设置规则组是否工作在间断模式、触发源选择、通道选择、是否使能中断;
6、设置注册组是否工作在间断欧式、触发源选择、通道选择、是够使能中断,是否自动注入;
7、使能ADC模式(ADCON = 1);
说明:
1、单次模式和连续模式只能任选其一,且对所有组都有效;
2、在单次模式或者连续模式下,选择是否使能扫描模式,且对所有组都有效;
3、两个组只能同时有一组工作在间断模式下,间断模式下(单次、连续、扫描设定无效);
4、单次和连续区别:单次:启动一次,转换一次(不一定是一个通道);连续:启动一次,不关闭就不停;
5、扫描模式禁止和和使能区别:禁止:每个通道转换完成,都会置位标志位;使能:只有当本组设定的最后
一个通道转换完成,才置位标志位;
6、如果使能了扫描模式,规则组必须使用DMA方式存储数据;注册组则不用(每个通道都有自己的缓存存储器);
7、使能外部触发模式,其使能位必须使能(软件触发也是外部触发类,没有找到内部触发类);
8、使能中断时候,不但要使能ADC模块中断控制位,还要通过
NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
设置优先级;
通过NVIC_EnableIRQ(IRQn_Type IRQn) 设置相应中断向量号在内核级打开,否则不能进入中断。
(我就在这里吃了大亏,欲哭无泪。。。。。。)。
9、查询模式OK,中断不进原因
1)NVIC_EnableIRQ(IRQn_Type IRQn)没有使能;
2)启动文件里面没有注册中断向量函数(厂家提供的启动文件不全);
3)启动文件里面的中断函数名称和xxxxxx_it(例如:gd32f1x0_it)里面的中断函数名称不一致;
注意:
1、AD的校准会触发AD转换,如果这个时候中断是开启的,会进入AD中断;
GD32F130FXP6学习笔记六:cortex-m3系列的ADC初识相关推荐
- Java学习笔记 六、面向对象编程中级部分
Java学习笔记 六.面向对象编程中级部分 包 包的注意事项和使用细节 访问修饰符 访问修饰符的注意事项和使用细节 面向对象编程三大特征 封装 封装的实现步骤(三步) 继承 继承的细节问题 继承的本质 ...
- Ethernet/IP 学习笔记六
Ethernet/IP 学习笔记六 EtherNet/IP defines two primary types of communications: explicit and implicit (Ta ...
- 吴恩达《机器学习》学习笔记六——过拟合与正则化
吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...
- ROS学习笔记六:理解ROS服务和参数
ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...
- opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- JS学习笔记六:js中的DOM操作
1. JS学习笔记六:js中的DOM操作 文章目录 1. JS学习笔记六:js中的DOM操作 1.1. 获取Dom节点 1.2. 元素属性的操作方式 1.3. DOM节点的创建.插入和删除 1.4. ...
- Python学习笔记六——画小猪佩奇
目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- 【物联网学习笔记——人人学IoT系列】二、IoT平台,能力开放
目录 1. 解锁物联网平台,与OceanConnect相识 1.1 物联网发展的挑战 1.1.1 新业务上线周期长 1.1.2 标准不统一.集成困难 1.1.3 网络联接复杂 1.2 应对挑战的方案 ...
最新文章
- 002_生活口语积累
- Python图像处理介绍--Python中的图像表示
- kettle 如何使用java代码
- python url请求
- #ifdef 中的逻辑与或操作
- UI4_UIStepper与UIProgressView
- 14行代码AC——1017 A除以B (20分)(大数运算+讲解)
- Struts2之环境配置
- SpringJDBC解析3-回调函数(update为例)
- Python语法特点如注释规则、代码缩进、编码规范等
- 网络ip计算器工具_火影忍者联名款计算器上市,卡西欧玩转IP联合
- 中如何设置电气栅格_游戏中的设置界面如何设计?
- DML、DDL的概念与区别
- 怎样用计算机绘制幂函数图像,几何画板如何画幂函数的图像 绘制方法介绍
- angular使用echarts词云图wordCloud
- 计算机桌面提示区,电脑如何设置多时钟显示?电脑设置不同地区时钟时间显示方法...
- Android开发如何定制framework层服务
- Navicat for MySQL 安装以及初始创建连接,新建数据表
- ZigZag Conversion(“Z”形转换)
- C语言——判断是否被5整除
热门文章
- 请不要在Java项目中乱打印日志了,这才是正确姿势,非常实用!
- 鸿蒙系统支持高清通话吗,电信VoLTE开通方法介绍 所有注意点全在这了
- Windows下使用windeployqt打包QML项目(双击运行无反应)
- Maestro 薛定谔软件简单分子对接案例
- 决策树和K近邻分类随堂笔记(一)
- 怎么申请域名 域名的申请方式与流程 如何怎么买域名
- Android 生成自己的签名key(releasekey platform shared media networkstack verify等)
- 卜若的代码笔记-unityshader系列-第十七章:Shader练习.遮罩(Shader采样Image的Sprite)
- matlab把华氏度,MATLAB GUI实例1——摄氏度与华氏度的转换
- javaweb_会话管理(sessionCookie)