stm8 ADC中断采集

1、STM8的ADC介绍

使用模拟-数字转换器将模拟电压信号转换为数字值。具有28模拟通道可用。A / D转换可以在单个或连续模式下执行。

2、ADC 主要特点

其配置的分辨率(12bit)

•模拟通道数量:

-中密度设备:
25个模拟通道:1快通道(1μs)+ 24慢通道
-低、中+和高密度设备:
28个模拟通道:4快通道(1μs)+ 24慢通道
2内部通道连接到温度传感器和内部参考电压
•可配置的单个或连续转换
•Prescalable ADC时钟
•模拟看门狗
•独立中断生成转换末,监管机构或溢出事件
•多通道转换(扫描模式)
•数据完整性机制
•DMA功能
•可编程采样时间
•施密特触发器禁用功能
•转换时间可多达μs当SYSCLK = 16兆赫
•电压范围:1.8 V至3.6 V

3、ADC的框图


4、ADC寄存器 

ADC_CR1 该寄存器



7位:overie:溢出中断使能;该位设置和清除软件,如果设置它使中断溢出事件生成

0:溢出中断禁用

1:溢出中断允许

位6:5 RES[1:0],可配置的ADC分辨率

00 :12位分辨率

01:10位分辨率

10:8位分辨率

11:6位分辨率

4位awdie:模拟看门狗中断使能

0:模拟看门狗中断禁止

1:模拟中断启用看门狗

3位:中断使能EOC

0:禁止EOC中断

1:使能EOC中断

2位转换模式

0:单次转换模式

1:连续转换模式

位1:ADC转换器 ON/OFF

0:失能ADC

1:使能ADC

5、ADC配置函数

PD6 对应ADC8通道

void ADC_Config(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
  
  ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_2);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);

 
  ADC_Cmd(ADC1, ENABLE);

   
  ADC_ChannelCmd(ADC1, ADC_Channel_8, ENABLE);

 
  ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
 
  ADC_SoftwareStartConv(ADC1);
	ADC_VrefintCmd(ENABLE);
}
INTERRUPT_HANDLER(ADC1_COMP_IRQHandler, 18)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
	uint16_t tmpreg = 0;
		/* Get last ADC converted data.*/
	tmpreg = (uint16_t)(ADC1->DRH);
	tmpreg = (uint16_t)((uint16_t)((uint16_t)tmpreg << 8) | ADC1->DRL);
	ADCdata =tmpreg;
	 //ADCdata = ADC_GetConversionValue(ADC1);
}


转换为mv电压值

//(R1 + R2 )/ R2 = (400K +1M)/ (1M) = 1.4K 
// ADC_RATIO = Vref * R /4095		=	3.3 *1000(mv) *1400 /4095   =1128
#define ADC_Ratio              ((uint16_t) 1128) //比率

/**********************************
 * 功能:获取实际电压
 * 参数:ADC_filter 获取电压值
 * 返回值:实际电压值
***********************************/
int Get_Volt(void)
{
	int PotVoltage ;
	PotVoltage = (uint16_t)((uint32_t)((uint32_t)ADCdata * (uint32_t)ADC_Ratio) / (uint32_t)1000);
	return PotVoltage;	
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值