stm32自带1-3个adc模块,采样精度达到了12位,比起当年使用的avr单片机的10位来说,上了个小档次了~本测试程序采用了adc dma的中断方式,这样cpu就可以把adc的任务交给dma这个勤劳肯干的部下了,当dma完成了一次任务之后会产生中断,告诉cpu可以来查收结果了!dma也是在嵌入式系统中非常常用的,例如在lcd中,数据拷贝中等。。。在stm32f103rbt6中,adc1和adc2共用一组管脚
总体编程思路和顺序如下:
1.初始化rcc相关,使得系统有时钟,功能模块如adc、dma有时钟。
2.gpio相关初始化,比如常用的指示灯,adc的管家要设置为输入等。
3.nvic向量中断的配置,因为这里使用了dma中断和中断服务程序编写(下例中暂不使用)
4.dma配置(下例中暂不使用)
5.adc初始化
以下是参考代码,使用adc1的in0脚
void adc_gpio_init()
{
gpio_inittypedef gpio_initstructure;
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_adc1,enable);
gpio_deinit(gpioa);
gpio_initstructure.gpio_pin=gpio_pin_0;
gpio_initstructure.gpio_mode=gpio_mode_ain;//设为模拟输入
gpio_init(gpioa, &gpio_initstructure);
}
void adc_configuration()
{
adc_inittypedef adc_initstructure;
adc_initstructure.adc_mode=adc_mode_independent;//独立模式
adc_initstructure.adc_scanconvmode=disable;//连续多通道模式
adc_initstructure.adc_continuousconvmode=disable;//单次转换
adc_initstructure.adc_externaltrigconv=adc_externaltrigconv_none;//转换由软件而不是外部触发启动
adc_initstructure.adc_dataalign=adc_dataalign_right;//右对齐
adc_initstructure.adc_nbrofchannel=1;//扫描通道数
adc_init(adc1,&adc_initstructure);
//adc_regularchannelconfig(adc1,adc_channel_0,1,adc_sampletime_7cycles5);
adc_cmd(adc1,enable);//使能或者失能指定的adc
adc_resetcalibration(adc1);//重置指定的adc的校准寄存器
while(adc_getresetcalibrationstatus(adc1));//等待校准寄存器初始化
adc_startcalibration(adc1);//开始校准
while(adc_getcalibrationstatus(adc1));//等待校准完成
//adc_softwarestartconvcmd(adc1,enable);//使能指定的adc的软件转换启动功能
}
u16 getadcvalue(u8 adc_channel)//adc_channel_x 0~17
{
u16 adc_value;
adc_regularchannelconfig(adc1,adc_channel,1,adc_sampletime_7cycles5);
adc_softwarestartconvcmd(adc1,enable);//使能指定的adc的软件转换启动功能
while(adc_getflagstatus(adc1, adc_flag_eoc)==reset);//检查制定adc标志位置1与否 adc_flag_eoc 转换结束标志位
adc_value=adc_getconversionvalue(adc1);
return adc_value;//返回最近一次adcx规则组的转换结果
}
当使用内部温度传感器时,需要使能温度传感器通道
adc_tempsensorvrefintcmd(enable);
温度传感器通道号是adc_channel_16,此通道的采样时间调到最大,来保证精度;
温度的计算公式如下:
v25、avg_slope的典型值分别为1.43、4.3mv/c
temp=(1.43-vsense)/0.0043+25;
!!卖 MARCONI 6021 综测 MARCONI602
科学家发现金刚石缺陷可以确保数据传输和测量温度
OLED模块特点
中国移动5G运营数据首次公布,一月移动用户净减超80万
传苹果汽车计划2024年开始生产
STM32的ADC及内部温度传感器的使用
浅谈手机天线技术的发展与挑战
linux内核下重力感应驱动程序的开发
!销售/维修/收购HP8648A信号发生器HP 8648A小
全球科技巨头纷纷加码5G研发
差分信号线的分析和LAYOUT简介及应用
强制GPU渲染是一把双刃剑,有利有弊
能源储存潜力巨大,电池储能正迅速成为电力行业的颠覆者
光电式总辐射传感器—— 稳定高精度的环境保护专家
笔记本省电技巧软硬兼施(1)
中国车用IC市场成长强劲 飞思卡尔夺第一
苹果牵手现代:彼此需要,或成双赢局面
OPPO发布50w无线快充技术,是鸡肋还是实用
iPhone 16工业设计曝光,有啥不一样?
联发科下半年扩资进入10纳米制程 拟配新股留人