网站建设要经历哪些步骤,网站怎么在成都备案,wordpress 3.5 下载地址,网站维护的方式包括一、ADC简介 ADC#xff08;Analog-Digital Converter#xff0c;模拟-数字转换器#xff09;#xff0c;可以将引脚上连续变化的模拟量转换为内存中存储的数字量#xff0c;建立模拟电路到数字电路的桥梁 模拟量#xff1a;时间和幅值均连续的信号#xff0c;例如…一、ADC简介 ADCAnalog-Digital Converter模拟-数字转换器可以将引脚上连续变化的模拟量转换为内存中存储的数字量建立模拟电路到数字电路的桥梁 模拟量时间和幅值均连续的信号例如变换的电压、电流 数字量时间和幅值均离散的信号例如单片机中的0和1 STM32的12位ADC是一种逐次逼近型模/数转换器。它多达18个通道可测量16个外部和2个内部信号源。个通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐的方式存储在16位数据寄存器中 STM32F103C8T6的ADC资源ADC1、ADC210个外部输入通道 ADC术语 分辨率满刻度电压与2ⁿ的比值其中n位ADC的位数。例如12位ADC能够分辨出满刻度1/2¹²0.024%的输入电压变化。一个10V满刻度的12位ADC能够分辨输入电压变化的最小值为2.4mV 转换速率ADC能够重复进行数据转换的速度即每秒转换的次数 绝对精度在ADC中任何数码所对应的实际模拟电压与其理想的电压之差的最大值 相对精度把这个最大偏差表示为满刻度模拟电压的百分数 线性度ADC实际转移函数与理想直线的最大偏移
二、ADC结构 2.1 电压输入范围 ADC的输入范围Vref- VIN Vref
通常Vref、Vref-和VDDA、VSSA所以ADC的输入电压也就是0~3.3V
如果要测量不在0~3.3V内的电压需要在外部搭建转化电路 2.2 ADC时钟 由时钟控制器提供的ADCCLK时钟和PCLK2APB2时钟同步。RCC控制器为ADC时钟提供一个专用的可编程预分频器
2.3 输入通道 注意 温度传感器和VREFINT只能出现在主ADC1中 对于STM32F103C8T6而言ADC1与ADC2的外部输入通道相同对应至PA0~PB1 ADC有16个多路通道。可以把转换组织成两组规则组和注入组 ● 规则组由多达16个转换组成 ● 注入组由多达4个转换组成 规则通道按照一定的顺序规则井然有序的进行转换输出默认情况下使用的是规则通道。由于数据寄存器只能存储最后一个通道的转换数据如果转换多通道数据还需与DMA配合使用
注入通道
1触发注入如果在规则通道转换期间产生一个外部触发注入当前转换被复位注入通道序列被以单次扫描方式进行转换。然后恢复上次被中断的规则组通道转换
如果在注入通道转换期间产生一个规则事件注入转换不会被中断但是规则序列将在注入序列结束后被执行
2自动注入在此模式下必须禁止注入通道的外部触发。如果设置了自动注入和连续模式、规则通道至注入通道的转换序列被连续执行。如果ADC时钟的预分频系数为4~8在两通道的转换期间会自动插入1个ADC时钟间隔如果分频系数为2则右2个时钟间隔的延迟 所以注入通道只有在规则通道存在时才会出现 1.利用外部触发或通过设置ADC_CR2寄存器的ADON位启动一组规则通道的转换。 2.如果在规则通道转换期间产生一外部注入触发当前转换被复位注入通道序列被以单次扫描方式进行转换。 3.然后恢复上次被中断的规则组通道转换。如果在注入转换期间产生规则事件注入转换不会被中断但是规则序列将在注入序列结束后被执行。
2.3 模式控制
1单次转换模式和连续转换模式
单次转换模式ADC只进行一次转换每次转换需要触发一次读取结果时需要判断结束标志位
连续转换当前ADC转换结束后立即启动下一次转换读取结果时不需要判断结束标志位 每次转换结束后转换数据被存储在相应的数据寄存器中EOF转换结束/JEOF注入转换结束被置位此外还可申请中断 2扫描模式和非扫描模式 ADC扫描被选中的所有通道。每个组的每个通道执行单次转换在每个转换结束后同一组的下一个通道被自动转换
注非扫描模式下仅第一个序列有效 如果设置了连续转换则不会在选择组的最后一个通道上停止而是再次从选择组的第一个通道继续转换 3间断模式
规则组间断模式可以用来执行一个短序列的n次转换n≤8
例如n3被转换的通道0、1、2、3、6、7、8、9
①第一次触发转换序列为0、1、2
②第二次触发转换序列为3、6、7
③第三次触发转换序列为8、9并产生EOCEnd of conversion事件
④第四次触发转换序列为0、1、2 当所有子组被转换完成下一次触发启动第一个子组的转换 注入组间断模式可以用来执行一个短序列的n次转换n≤8
例如n1被转换的通道1、2、3
①第一次触发转换序列为1
②第二次触发转换序列为2
③第三次触发转换序列为3并产生EOCEnd of conversion和JEOFInjected channel end of conversion事件
④第次触发转换序列为1 不能同时使用自动注入和间断模式 4双ADC模式 2.4 外部触发转换 转换可以由外部事件触发( 例如定时器捕获 EXTI 线 )。当外部触发信号被选为 ADC 规则或注入转换时只有它的上升沿可以启动转换。 2.5 DMA请求 因为 规则通道转换 的值储存在 一个仅有的数据寄存器 中所以 当转换多个规则通道时需要使用 DMA 这可以避免丢失已经存储在ADC_DR寄存器中的数据。 只有在规则通道的转换结束时才产生DMA请求 并将转换的数据从 ADC_DR寄存器传输到用户 指定的目的地址。 注 只有 ADC1和ADC3拥有DMA 功能。由 ADC2转化的数据可以通过双ADC模式利用ADC1的 DMA功能传输。 2.6 数据对齐 注入组通道转换的数据值已经减去了在ADC_JOFRx 寄存器中定义的偏移量因此结果可以是一 个负值。SEXT 位是扩展的符号值。 对于规则组通道不需减去偏移值因此只有12 个位有效 一般选用右对齐的方式读出的值就是转换结果
左对齐的方式相当于将数据左移了4位也就是结果实际数据*16
如果不需要那么高的精度可以使用左对齐然后取出高n位即可
2.7 转换时间 ADC采样之后防止外部电压不断变化造成量化、编码的影响需要将采集到的电压保持一小段时间 采样时间可由软件进行配置采样时间越长越能避免一些毛刺信号的干扰但相应的转换时间也会延长
2.8 校准 2.9 ADC中断 EOCEnd of conversion和JEOFInjected channel end of conversion ADC1 和 ADC2 的中断映射在 同一个中断向量 上而 ADC3 的中断有 自己的中断向量 三、ADC相关库函数 3.1 初始化函数ADC_Init() 3.2 校准函数 3.3 软件触发转换函数 3.4 通道配置ADC_RegularChannelConfig () 四、ADC配置
1开启ADC、GPIO时钟
2配置ADCCLK的分频器 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //APB2六分频
3配置GPIO完成初始化模拟输入
4配置多路开关把左边的通道接入右边的规则组列表中 ADC_RegularChannelConfig(ADC1,ADC_Channel_3,1,ADC_SampleTime_1Cycles5); //在序列1的位置上写入通道3
5配置ADC完成初始化 ADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_Mode ADC_Mode_Independent; //工作模式独立模式 ADC_InitStruct.ADC_ContinuousConvMode DISABLE; //单次转换ADC_InitStruct.ADC_ScanConvMode DISABLE; //非扫描模式 ADC_InitStruct.ADC_DataAlign ADC_DataAlign_Right; //数据对齐右对齐ADC_InitStruct.ADC_ExternalTrigConv ADC_ExternalTrigConv_None; //外部触发源选择不使用外部触发ADC_InitStruct.ADC_NbrOfChannel 1; //进行规则转换的数目通道ADC_Init(ADC1,ADC_InitStruct);
6中断配置如果使用中断需要此步骤
7配置NVIC完成初始化如果使用中断需要此步骤
8校准 ADC_ResetCalibration(ADC1); //复位校准while(ADC_GetResetCalibrationStatus(ADC1) SET); //复位校准完成ADC_StartCalibration(ADC1); //开始校准while(ADC_GetCalibrationStatus(ADC1) SET); //复位校准完成
9使能ADC