stm8l的单片机的ad转换,参考电压和内部ad7705基准电压压是怎么回事

2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。查看: 1522|回复: 3
AD转换时被测电压大于参考电压的计算
主题帖子精华
初级会员, 积分 163, 距离下一级还需 37 积分
在线时间0 小时
再做AD时有一个问题,假如用3V的参考电压,12位的分辨率(也就是4096),现在要测0~10V的电压,相应的转换成PWM占空比进行0~10v的调光,这该怎么计算呢?有谁帮忙请教下该怎么解决?谢谢
电阻分压就可以了
主题帖子精华
金牌会员, 积分 1644, 距离下一级还需 1356 积分
在线时间198 小时
电阻分压就可以了
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
主题帖子精华
初级会员, 积分 163, 距离下一级还需 37 积分
在线时间0 小时
回复【2楼】mzwhhwj:
---------------------------------你的意思就是说分到3v时那个点去采样是吧?
主题帖子精华
金牌会员, 积分 1644, 距离下一级还需 1356 积分
在线时间198 小时
回复【3楼】烧年:
---------------------------------
对的
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
Powered by查看: 2318|回复: 0
STM8L的ADC之测量VDD电压详解 含例程
STM8L内部含有一个12位的ADC,拥有25个输入通道,包括一个内部温度传感器,一个内部参考电压。
STM8L使用外部参考电压作为ADC参考电压,由于VDD,GND一般和ADC的外部参考电压引脚VREF+,VREF-连接在一起。所以VDD的电压就是ADC的参考电压,由于LDO供给MCU的电压有一定的偏差。所以使用ADC前需要知道VDD的电压为多少,对于十二位的ADC,VDD电压对应的转换出的数值为).
从第一张图中可以看到,STM8L内部还有一个内部参考电压,这个内部参考电压的电压值是可知的,且是精确的。由数据手册可知,内部参考电压为1.225V。
ADC选择内部参考电压作为测量通道,可以测量到内部电压的转化值Nadc。
此时,已经VDD的转化值4096,VREFINT电压值1.225V及对应的转化值Nadc。
这些值满足比例关系,VDD/4096=VREFINT/Nadc
VDD=1.225*4096/Nadc
本文使用ADC的单次转换模式,每隔大约0.5S触发一次ADC转换。ADC转换的通道需要在ADC_SQR寄存器中选择。
ADC完成一次数据采集转化后,会进入中断。我们在中断中打一个断点,查看变量VDD_Value中的数据,可以看到此时数据为2976(电压值被扩大了1000倍),即VDD的电压为2.976V。.与实际用万用表测量的2.99V几乎一样。
/****************************************************************************************
*开发环境:IAR for stm8 v1.40.1
*硬件平台:STM8L-DISCOVERY
*功能说明:测量VDD电压,VDD的计算结果在ADC中断中,通过仿真,设置断点,可以在IAR中查看扩大1000被后的VDD电压数据VDD_Value
*作& & 者:茗风
****************************************************************************************/
#include&iostm8l152c6.h&
#include&stdbool.h&
#include&stdint.h&
uint16_t VDD_Value=0;
/******************************************************************************************************
*&&名& & 称:void delay_10ms(uint8_t x_ms)
*&&功& & 能:延时10ms
*&&入口参数:无
*&&出口参数:无
*&&说& & 明:
*&&范& & 例:无
******************************************************************************************************/
void delay_100ms(void)
&&uint8_t i,j;
&&for(i=0;i&255;i++)//2*255个指令周期
& & for(j=0;j&255;j++);//2*255个指令周期
&&//delay_10ms共消耗 x_ms*2*255+2*x_ms个指令周期&&
&&//255*2*255+2*255=130610us=130ms
&&//此延时函数,延时时间为130ms
&&//16M/8/2=1M 一个指令周期为1us
/******************************************************************************************************
*&&名& & 称:void ADC_Init(void)
*&&功& & 能:初始化ADC
*&&入口参数:无
*&&出口参数:无
*&&说& & 明:ADC1的测量通道为内部参考电压,单次转换模式
*&&范& & 例:无
******************************************************************************************************/
void ADC_Init(void)
& &CLK_PCKENR2_PCKEN20=1; //国际惯例,开启ADC1外设时钟
& &ADC1_TRIGR1_VREFINTON=1;//打开内部参考电压源
& &ADC1_CR1_ADON=1;&&//wakes up the ADC from Power down mode.
& &ADC1_CR2_PRESC=1;//Select a sample time of 10 μs
//& &0: f(ADC_CLK) = CK
//& &1: f(ADC_CLK) = CK/2&&//系统时钟此时为默认的16M/8=2M,这里分频后,fadc=2M/2=1M
& &ADC1_SQR1_DMAOFF=1;& & //关闭DMA,暂时不用
& &ADC1_CR3_SMTP2=0x06;//采样时间为24 ADC clock cycles,也就是24*1us=24us
//000: 4 ADC clock cycles
//001: 9 ADC clock cycles
//010: 16 ADC clock cycles
//011: 24 ADC clock cycles
//100: 48 ADC clock cycles
//101: 96 ADC clock cycles
//110: 192 ADC clock cycles
//111: 384 ADC clock cycles
& &ADC1_SQR1_CHSEL_S28=1; //选择内部参考电压通道
& &ADC1_CR1_EOCIE=1;
void main(void)
&&ADC_Init();
&&asm(&rim&);& && && && && &//enable interrupts
&&while(1)
& & delay_100ms();
& & ADC1_CR1_START=1;
& & delay_100ms();
& & delay_100ms();
& & delay_100ms();
& & delay_100ms();
/******************************************************************************************************
* 名&&& & & && && &称: ADC中断
* 功& && && &能: EOC事件处理函数
* 入口& & & && & 参数:无
* 出口& & & && & 参数:无
* 说&&& & & && && &明:
* 范 & & & && && &例:无
******************************************************************************************************/
#pragma vector=COMP_EF2_vector
__interrupt void ADC1_ISR(void)
& &static uint16_t temp=0;
& &PC_ODR_ODR7 ^=0x01;//输出低电平
& &ADC1_SR_EOC=0;
& &temp = ADC1_DRH;
& &temp = (temp&&8)+ADC1_DRL;
& &VDD_Value=(uint32_t)///得到的数值单位为mv
& &asm(&nop&);
}
复制代码
Powered bySTM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理 - STM8 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 13206|回复: 13
STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
在线时间1 小时
主题帖子好友
初级会员, 积分 175, 距离下一级还需 25 积分
初级会员, 积分 175, 距离下一级还需 25 积分
STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理?
看资料介绍好像没有直接用片内基准,可以通过内部基准的输出,接到Vref+,不知道是不是这样的?
在线时间3 小时
主题帖子好友
初级会员, 积分 115, 距离下一级还需 85 积分
初级会员, 积分 115, 距离下一级还需 85 积分
可以看下这个。
在线时间1 小时
主题帖子好友
初级会员, 积分 175, 距离下一级还需 25 积分
初级会员, 积分 175, 距离下一级还需 25 积分
回复:用内部基准电压,Vref+管脚怎么处理
真的没人会吗!!!
在线时间0 小时
主题帖子好友
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
回复:用内部基准电压,Vref+管脚怎么处理
接个10uf的去耦电容就行了
在线时间1 小时
主题帖子好友
初级会员, 积分 175, 距离下一级还需 25 积分
初级会员, 积分 175, 距离下一级还需 25 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
STM8L系列的没有一个资料是中文的,看来用的人少!
在线时间0 小时
主题帖子好友
新手上路, 积分 41, 距离下一级还需 9 积分
新手上路, 积分 41, 距离下一级还需 9 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
学习学习学习学学习
在线时间0 小时
主题帖子好友
新手上路, 积分 41, 距离下一级还需 9 积分
新手上路, 积分 41, 距离下一级还需 9 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
学习学习学习学学习
在线时间103 小时
主题帖子好友
金牌会员, 积分 1982, 距离下一级还需 3018 积分
金牌会员, 积分 1982, 距离下一级还需 3018 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
在线时间0 小时
主题帖子好友
新手上路, 积分 27, 距离下一级还需 23 积分
新手上路, 积分 27, 距离下一级还需 23 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
我也有同样的问题呀!怎么在这里都没有人来回复的吗?
在线时间0 小时
主题帖子好友
新手上路, 积分 74, 距离下一级还需 -24 积分
新手上路, 积分 74, 距离下一级还需 -24 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
STM8L152C6T6的ADC是不能用内部基准电压的,基准电压必须接在Vref+管脚。
在线时间0 小时
主题帖子好友
新手上路, 积分 74, 距离下一级还需 -24 积分
新手上路, 积分 74, 距离下一级还需 -24 积分
RE:STM8L152C6T6的ADC用内部基准电压,Vref+管脚怎么处理
STM8L152C6T6的ADC是不能用内部基准电压的,基准电压必须接在Vref+管脚。
站长推荐 /2
关于意法半导体MCU交货周期88周、截单等不实传闻,官方表示ST拥有长期生产和供货策略及完善计划,保证正常及后备产能。
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by

我要回帖

更多关于 ad7705基准电压 的文章

 

随机推荐