文档介绍:该【STM8SAD转换公开课获奖课件赛课一等奖课件 】是由【非学无以广才】上传分享,文档一共【20】页,该文档可以免费在线阅读,需要了解更多关于【STM8SAD转换公开课获奖课件赛课一等奖课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。南华机电
STM8S ——AD转换
STM8S Technical Training 3
Allen Tan .
STM8S——ADC概述
ADC:模拟信号转换成数字信号,如电压转换成数字量。
STM8S系列ADC是一种逐次迫近模数转换器,模数转换器的辨别率为10bit。
最多包含16通道,详细通道数取决于所选STM8产品封装,即参照数据手册内的详细封装。
ADC引脚:
STM8S103Fx(封装TSSOP20)ADC引脚:
5个ADC通道:AIN2、AIN3、AIN4、AIN5、AIN6
VREF+=VDDA=VDD
VREF-=VSSA=VSS
ADC模块构造框图
ADC辨别率
10bit的辨别率,转换最大数值1024。假如顾客可接受较低的辨别率,则读转换成果的速度会加紧;顾客可通过选择对应的寄存器对齐方式,只读10位中的8位。配置左对齐或右对齐的寄存器为ADC_CR2。
时钟选择
A/D转换速度取决于ADC的时钟信号。时钟的预分频因子是由 ADC_CR1寄存器的 SPSEL[2:0]决定的。
转换触发
ADC的转换可由定期器1的TRGO(触发输出)事件或外部引脚ADC_ETR的上升沿触发。也可通过设置ADON位来软件触发。
用于选择触发源的寄存器为ADC_CR2。
ADC速度/采样时间
ADC的速度(也称之为采样时间)影响测量精度,并且必须根据所测量电压源的输出阻抗及所需要的转换精度来选择。采样时间不可以独立于ADC时钟频率来设置。 STM8 。
参照电压
ADC的参照电压必须连接至外部引脚,或某些封装上在内部与模拟供电相连接。参照电压必须在模拟供电电压范围内,。
可通过模拟缩放的功能来提高辨别率,虽然用与测量电压范围相称的较小参照电压。
输入模拟通道的选择
STM8 ADC最多有16个模拟输入连接在GPIO输入引脚上。在某些产品上模拟输入较少(取决于产品封装)。必须将ADC引脚配置为浮空输入,并且关闭该引脚上的输入施密特触发器(这将会减少功耗)。
用于选择输入模拟通道的寄存器为ADC_CSR。
关闭施密特触发器的寄存器为ADC_TDRL(H)。
数据存储
10位的ADC转换成果存储在两个8位的寄存器中。STM8 ADC可选择数据对齐模式。顾客可选择转换成果在两个8位寄存器中是左对齐还是右对齐。
顾客必须按照特定的次序读取数据寄存器以保证最终从寄存器中得到的数据是一致的(成果来自于同一次转换)。当读第一种数据寄存器时,第二个数据寄存器被锁存,以制止被下一次转换成果覆盖,并等待被读取。读取寄存器的次序取决于数据对齐模式。在右对齐模式中,应先读低位,再读高位。在左对齐模式中,应先读高位,再读低位。 ADC_CR2寄存器中的ALIGN位用于选择转换后数据的对齐方式。(根据需求合理选择)
单次转换模式
这种模式下,ADC仅执行一次转换。转换的启动可由软件(2次)写ADON位触发,或由来自于定期器1的信号或来自于ADC_ETR的外部信号触发。
新的转换启动必须在下一次单次转换之前产生(外部触发或软件启动)。
寄存器设置: ADC_CR1:CONT = 0
持续转换模式
在这种模式下,ADC循环地进行转换。当一次转换结束,下一次转换立即开始。ADC_DR中的数据必须在被下一次转换成果覆盖之前被读取。
寄存器设置:ADC_CR1:CONT = 1
应用实例:实现电位器调整LED闪烁频率,显示ADC采样值(采样周期1S)
使用到的资源:
1)CLK(时钟):HSI
2)GPIO(通用输入输出口):PA3、PC5、PC6、PC7
3)TIM4(8位基本定期器):定期器溢出中断
4)ADC:AIN5(PD5)
1)CLK
简介:
STM8单片机的时钟源非常丰富,芯片内部既有16MHZ的高速RC振荡器,也有128KHZ的低速RC振荡器,外部还可以接一种高速的晶体振荡器。在系统运行过程中,可以根据需要,自由地切换。单片机复位后,首先采用的是内部的高速RC振荡器,且分频系数为8,因此CPU的上电运行的时钟频率为2MHZ。
HSI时钟初始化(复位后的默认时钟):
void CLK_HSI_Init(void)
{
CLK_ECKR = 0X00;//Disable extern HSE
CLK_ICKR = 0X01;//enable HSI
CLK_SWR = 0XE1;//chose HSI 16MHZ
CLK_CKDIVR = 0X18; //Fmaster=16MHZ/8 Fcpu= Fmaster=2MHZ
}