自己做网站的过程,西安专业网站制作服务,闵行区天气,网站开发维护合同书文章目录
1. ADC概述
2. ADC结构图
3. 引脚定义
4. 转换模式
5. 数据对齐
6. 转换时间
7. 硬件电路
8. STM32使用ADC单/多通道检测数据 1. ADC概述
功能#xff1a;ADC是一个将模拟信号#xff08;如电压#xff09;转换为数字信号的设备。在微控制器中#xff0c…文章目录
1. ADC概述
2. ADC结构图
3. 引脚定义
4. 转换模式
5. 数据对齐
6. 转换时间
7. 硬件电路
8. STM32使用ADC单/多通道检测数据 1. ADC概述
功能ADC是一个将模拟信号如电压转换为数字信号的设备。在微控制器中它允许模拟信号如传感器输出或其他电压形式被数字化进而可以由数字系统处理。分辨率12位这意味着ADC输出的数字可以在0到4095之间变化。更高的分辨率意味着更精确的输入信号量化。转换速度1μs转换时间指每个ADC样本的获取和转换仅需1微秒。输入电压范围0至3.3V这是微控制器能够安全处理的电压范围超过此范围可能导致硬件损伤或数据不准确。多通道输入STM32F103C8T6具备10个外部和2个内部的ADC通道使得可以同时从多个源获取数据非常适合复杂或多变量的监测任务。18个触发输入这些触发输入支持从10个外部源和2个内部源触发ADC允许在特定事件发生时自动启动ADC转换增强了系统的自动化和响应速度。
对于将数字信号转为模拟信号的功能称为DAC和PWM相似PWM只有导通和断开两种状态。这两种状态都没有功率损耗所以适用于直流电机这种大功率场景。而DAC主要应用于波形生产比如信号发射器。 2. ADC结构图 从结构图中可以看出有18个输入通道C8T6只有10个到达模拟多路开关可以指定想要选择的通道再往右边是多路开关的输出进入到模数转换器这里的转换器采用逐次比较的方法也就是二进制从高位到地位依次比较转换的结果会存放到数据寄存器中读取寄存器就可以得到数据。
对于普通的ADC多路开关一般只选择一个也就是选择其中一个通道然后转换转换完成后取出结果但在这里可以选择多个通道并且stm32还有分组的功能规则组和注入组。
规则组可以一次性选择16个通道注入组可以选择4个通道。但是由于数据寄存器只能存放一个数据所以选择多个通道会导致前面的数据被覆盖这时就需要使用到DMA,它可以将每个数据进行转移。
对于注入组不用担心数据覆盖的问题因为注入通道有4个寄存器可以同时储存4个通道的数据。
并且还可以在模拟看门狗中设置阈值例如如果超出阈值就会触发中断。 3. 引脚定义
引脚定义也可以在数据手册中查到
通道编号ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC3PC3PC3通道14PC4PC4通道15PC5PC5通道16温度传感器通道17内部参考电压 4. 转换模式
在ADC初始化的结构体中有两个参数单词转换/连续转换扫描模式/非扫描模式这两个参数组成了不同的转换模式。
单次转换非扫描模式
在这个模式下只有序列1有效非扫描模式如果想转换某一个通道例如选择通道2这时就会转换通道2的数据并将数据存入寄存器如果想换一个通道就需要将选择的新通道替换掉原来的通道2. 连续转换非扫描模式
非扫描模式所以还是序列1有效和单次转换不同的是连续模式代表转换一次后不需要等待会自动进行下一轮的转换。 单次转换扫描模式
依然是单次转换所以只触发一次转换结束后会停止。扫描模式代表可以使用菜单也就是使用多个序列多个通道。比如这里指定通道数目为7代表会依次扫描前7个通道转换结果放到寄存器中为了防止数据被覆盖需要用DMA及时将数据转移走。七个通道转换完成后产生ECO信号代表转换结束。 连续转换扫描模式
相对于单次转换扫描模式这个模式在转换完成后立刻开始下一次的转换。也就是转换一次后不需要等待会自动进行下一轮的转换。 5. 数据对齐
在ADC中转换结果为12位的数据但是数据寄存器是16位的这就存在一个数据对齐的问题。有两种方式数据右对齐和数据左对齐。
数据右对齐
12位的数据向右靠高位多出来的几位就补0这个方式读取寄存器直接得到的就是转换结果。 数据左对齐
12位的数据向左靠低位补0这个方式直接读取的话数据会较大因为二进制左移一次相当于把这个数据乘以2下面的例子相当于把结果乘以16倍。 6. 转换时间
AD转换的步骤位采样保持量化编码
采样保持的作用因为AD转换时量化和编码需要一段时间如果在这段时间中输入电压依然不断变化就无法准确判断电压的数据所以就需要用到采样开关先打开开关收集外部电压然后断开采样开关再进行量化和编码这个过程所用的时间就是采样时间。
STM32 ADC的总转换时间
总转换时间是进行一次完整AD转换所需要的时间它由两部分组成
采样时间ADC模块在将模拟信号转换成数字信号前需要一定的时间来采样模拟信号。这段时间是可编程的可以根据信号的性质和需要的精度来调整。转换时间这是ADC完成实际的模数转换过程所需的固定时间通常由内部时钟频率决定。
公式说明
总转换时间的计算公式为 T(CONV) 采样时间 12.5个ADC周期
其中T(CONV) 是ADC模块的时钟周期这取决于ADC时钟ADC Clk的频率。
示例
假设 ADC Clk 的频率是14MHz则每个时钟周期T(ADC)是 1/114MHz1/14MHz 约为 71.4ns。因此如果采样时间设置为1.5个ADC时钟周期通常是最小设置转换时间计算如下 T(CONV) 1.5×71.4ns12.5×71.4nsTCONV1.5×71.4ns12.5×71.4ns
T(CONV) 1.071ns 892.5ns
T(CONV) 893.571ns 即转换时间大约是893.571纳秒接近1微秒。 7. 硬件电路
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间在每个电容器上都会计算出一个误差修正码(数字值)这个码用于消除在随后的转换中每个电容器上产生的误差所以建议在每次上电后执行一次校准启动校准前 ADC必须处于关电状态超过至少两个ADC时钟周期这些都会在初始化代码中设置。
下面三种电路就是常见的ADC的外围输入电路。
第一个是电位器产生可调电压中间的PA0也就是滑动端可以输出一个0-3.3v可调的电压输出当滑动端向上时电压增大往下滑时电压减少另外这里电阻的阻值不能太小太小可能会损坏至少要接千欧的电阻。
第二个是传感器输出电压的电路它们都可以等效为一个可变电阻因为电阻阻值无法直接测量所以这里可以通过和一个固定电阻串联分压来得到一个反应电阻值电压的电路这里传感器阻值变小时下拉作用变强输入端电压就下降。传感器阻值变大时下拉作用变弱输出端收上拉电阻的作用电压就会升高固定电阻一般可以选择和传感器阻值相近的电阻。
第三个是电压转换电路比如测量一个5v电池输入电压但ADC只能测量不超过3.3v的电压就可以使用电阻进行分压上面加下面的阻值一共50K根据分压公式中间的电压为VIN/50K*33K最后得到的电压就是0-3.3V. 8. STM32使用ADC单/多通道检测数据
正在写明天发布
完整工程文件
STM32通过ADC单通道检测数据
STM32通过ADC多通道检测数据