这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 学习灵动微MM32G0001A6T的ADC

共3条 1/1 1 跳转至

学习灵动微MM32G0001A6T的ADC

专家
2024-01-13 11:18:13     打赏

为了方便对照功能,照例贴上SOP8 Type0封装的MM32G0001A6T的引脚图:

图片1.png

芯片内部集成了12 位可编程分辨率的ADC,最大允许采集外部8路通道和1路内部通道(ADC的内部信号源通道连接了一个内部基准参考电压,大小为 1.2V,此通道把 1.2v 的参考电压输出转换为数字值)的数据,转换速度最大1MHz。

一、支持的工作模式

1、普通工作模式

1.1、单次转换模式: 指定通道完成一次转换

1.2、单周期扫描模式:在所有指定通道 (从低序号通道到高序号通道,或从高序号通道 到低序号通道) 完成一个周期转换

1.3、连续扫描模式: 连续执行单周期扫描模式直到软件停止 A/D 转换。若需中途修改 转换通道只能停止 A/D 转换,配置完相关寄存器再重新开启转换。

2、任意通道工作模式

2.1、单次转换模式:在指定通道完成一次转换

2.2、单周期扫描模式:在所有指定通道 (可按照任意顺序) 完成一个周期转换

2.3、连续扫描模式:连续执行单周期扫描模式直到软件停止 A/D 转换。若想修 改转换 通道,不必停止转换,可配置相应寄存器,在下一个扫描周期开始将进行新的通 转换。

二、启动工作的方式

1、使用软启动

2、外部触发启动,且软件可配置为外部延时触发

3、Timer1/3 匹配或 TRGO 信号,外部 EXTI 信号源

三、系统框图


图片3.png


四、相关寄存器

图片4.png

1、数据寄存器 (ADC_ADDATA)

2、配置寄存器 (ADC_ADCFG)

ADEN 位可给 ADC 上电。当第一次设置 ADEN 位时,它将 ADC 从断电状态下唤醒。

ADC 上电延迟一段时间后(大约 200ns),设置 ADCR 寄存器的 ADST 位开始进行转换。通过清除ADST 位可以停止转换,清除 ADEN 位可置于断电模式。

3、控制寄存器 (ADC_ADCR)

4、窗口比较寄存器 (ADC_ADCMPR)

图片12.png

比较模式下提供了上限和下限两个比较寄存器。可通过软件设定 CMPCH 位选择监控通道。当CPMHDATA ≥ CPMLDATA 时,比较结果大于或等于 ADCMPR 寄存器的 CMPHDATA 指定值或者小于CMPLDATA 指定值,状态寄存器 ADSTA 的 ADWIF 位置 1。

当 CPMHDATA < CPMLDATA 时,比较结果如果等于 CPMHDATA 指定值或者处于两个指定值之间,则状态寄存器 ADSTA 的 ADWIF 位置 1。

如果控制寄存器 ADCR 的 ADWIE 置位,将产生中断请求。

5、状态寄存器 (ADC_ADSTA)

图片13.png

6、数据寄存器 (ADC_ADDR0 ~ 8)

图片14.png

7、任意通道通道选择寄存器 0(ADC_CHANY0)

图片15.png

注:单周期扫描或连续扫描模式下,硬件会启动 ADC_CHANY0 影子寄存器,在 ADC 未开始工作时,软件写 ADC_CHANY0 的话,也会写到其影子寄存器;在 ADC 工作期间,若更改 ADC_CHANY0 的值,只会更新其影子寄存器,且当 ADC 开始转换最后一个通道时,影子寄存器的值会更新至ADC_CHANY0,这样即可完成动态切换通道。

8、任意通道通道选择寄存器 1(ADC_CHANY1)

图片16.png

注:单周期扫描或连续扫描模式下,硬件会启动 ADC_CHANY0 影子寄存器,在 ADC 未开始工作时,软件写 ADC_CHANY0 的话,也会写到其影子寄存器;在 ADC 工作期间,若更改 ADC_CHANY0 的值,只会更新其影子寄存器,且当 ADC 开始转换最后一个通道时,影子寄存器的值会更新至ADC_CHANY0,这样即可完成动态切换通道。

9、任意通道配置寄存器 (ADC_ANY_CFG)

图片17.png

注:单周期扫描或连续扫描模式下,硬件会启动 ADC_NUM 影子寄存器,在 ADC 未开始工作时,软件写 ADC_NUM 的话,也会写到其影子寄存器;在 ADC 工作期间,若更改 ADC_NUM 的值,只会更新其影子寄存器,且当 ADC 开始转换最后一个通道时,影子寄存器的值会更新至 ADC_NUM,这样即可完成动态切换通道。

10、任意通道控制寄存器 (ADC_ANY_CR)

图片18.png

注:在任意通道模式,且单周期/连续扫描模式下,关闭 ADC 时,必须先禁止 ADC_ADCR 的 ADST位,然后判断 ADC_ADSTA 的 BUSY 位是否为 0,即等到 ADC 转换完成,再禁止 ADC_ANY_CR的 CHANY_MDEN 位。

        这一贴介绍了MM32G0001A6T的ADC功能,对于一个SOP8封装的芯片,ADC的功能委实有些复杂了,而且,他只有6、7、8三个引脚是可以作为ADC采样输入脚的,之后我会尽量把它的ADC功能,用程序走一遍,让和我一起学习的人有个参照、对比。





关键词: 菜鸟学单片机     MM32G0001A6T     ADC    

高工
2024-01-13 13:54:09     打赏
2楼

只有8个引脚的MCU吗?


专家
2024-01-13 17:35:30     打赏
3楼

对呀,只有8个引脚。使用起来还是不错的,就是一定要小心,不要把下载口挪作他用,否则很难恢复过来,用过一次,就没法再次下载了。也许你有灵动微的Mini下载器的话,可以冒险试试。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]