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修饰的变量,在程序中,只能读不能写