ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ADC单通道

ADC单通道

ADC简介

ADC(Analog-Digital Converter)模拟 - 数字转换器

ADC 可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁

12 位逐次逼近型 ADC,1us 转换时间

输入电压范围:0~3.3V,转换结果范围:0~4095

18 个输入通道,可测量 16 个外部和 2 个内部信号源

规则组和注入组两个转换单元

模拟看门狗自动监测输入电压范围

STM32F103C8T6 ADC 资源:ADC1、ADC2,10 个外部输入通道

ADC基本结构图

ADC输入通道

4种转换模式:

单次转换,非扫描模式

连续转换,非扫描模式

单次转换,扫描模式

连续转换,扫描模式

触发控制

数据对齐

数据右对齐:

数居左对齐:

转换时间

1.AD转换的步骤:采样,保持,量化,编码

2.STM32 ADC的总转换时间为:= 采样时间 + 12.5 个 ADC 周期

3.例如:当 ADCCLK=14MHz,采样时间为 1.5 个 ADC 周期

​ = 1.5 + 12.5 = 14 个 ADC 周期 = 1μs

校准

1.ADC有一个内置自校准模式,校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码 (数字值),这个码用于消除在随后的转换中每个电容器上产生的误差

2.建议在每次上电后执行一次校准

3.启动校准前,ADC 必须处于关电状态超过至少两个 ADC 时钟周期

1.逐次逼近型ADC

DMA简介

DMA直接储存器存取

DMA可以提供外设和存储器或者存储器和存储器之间的搞笑数据传输,无需CPU干预,节省了CPU的资源

12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道)

每个通道都支持软件触发和特定的的硬件触发

STM32F103C8T6 DMA资源:DMA1(7个通道)

框图:

DMA总线:用于访问各个存储器

内部多个通道:进行独立数据转运

仲裁器:用于调度各个通道,防止产生冲突

AHB从设备:用于配置DMA参数

DMA请求:用于硬件触发DMA的数据转运

Flash:ROM只读存储器的一种,如果通过主线直接访问的话,CPU,DMU都是只能只读,无法写入,若配置Flash接口控制器,就可以堆Flash进行写入

SRAM:运行内存,可以任意读写

外设寄存器:根据参考手册判断是否可以写入,数据寄存器可以正常读写

基本结构:

DMA转运条件:

1.开关控制,DMA_C必须使能

2.传输计数器必须大于0

3.触发源,必须有触发信号

数据转运+DMA

任务:将SRAM里的数组DataA,转运到另一个数组DataB中

ADC扫描模式+DMA

存储器映像

例如:

在OLED显示屏上显示20000000,表示村属的位置是SRAM区,具体地址由编译器决定,因为SRAM区没东西,所以aa为第一个位置

通过将这个变量coast修饰之后,屏幕显示08000DF8,可以知道现在aa被储存在了Flash里

例如2:

在屏幕上显示4001244C,说明他是外设寄存器的区域,固定的

注:const是c语言的关键字,标识常量的意思,被const修饰的变量,在程序中,只能读不能写

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进