历史上的今天

今天是:2025年02月08日(星期六)

正在发生

2020年02月08日 | 使用STM8S105K4T6C 模数转换器的12通道

发布者:堕落的猫 来源: eefocus关键字:STM8S105K4T6C  模数转换器  12通道 手机看文章 扫描二维码
随时随地手机看文章

分享今天遇到的一个stm8s模数转换的小问题~~~


这款单片机一共提供了7个模数转换通道,他们分别是AIN0-AIN5和AIN12。

stm8s105k4t6c的管脚图


其中AIN0-AIN5的配置和使用方法如下,配置为连续转换、扫描模式(代码写的不好,大神请见谅~):

[mw_shl_code=c,true]/*---------------------------------包含头文件---------------------------------*/

#include "adc.h"

 

#define        ADC        60                                                                                                                                  //滤波深度,不宜过高,防止越界 u16

 

/*---------------------------------全局标志位---------------------------------*/

 

/*----------------------------------函数定义----------------------------------*/

 

//*----------------ADC1端口初始化函数---------------*/

static void Adc_Gpio_Init(void)                                                                                                                //使用第12通道

{

        GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);

}

 

/*------------------ADC1初始化函数-----------------*/

void Adc1_Init(void)

{   

        Adc_Gpio_Init();

        ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,                                                                          //连续转换

                         (ADC1_Channel_TypeDef)(ADC1_CHANNEL_12),                                                          //开启12通道

                         ADC1_PRESSEL_FCPU_D2,                                                                                          //2分频

                         ADC1_EXTTRIG_TIM,

                         DISABLE,                                                                                                              //关闭外部触发

                         ADC1_ALIGN_RIGHT,                                                                                                  //右对齐

                         (ADC1_SchmittTrigg_TypeDef)(ADC1_SCHMITTTRIG_CHANNEL12),                        

                         DISABLE);                                                                                                           //关闭施密特触发器

        ADC1_Cmd(ENABLE);                                                                                                                          //使能ADC1

        ADC1_DataBufferCmd(ENABLE);                                                                                                  //开启缓存

        ADC1_ScanModeCmd(ENABLE);                                                                                                          //启用扫描模式

        ADC1_StartConversion();                                                                                                          //开始转换

}

 

/*-------------------ADC获取AD值------------------*/

uint16_t Get_Adc1_Value(ADC1_Channel_TypeDef channel)  

{

uint8_t t;

uint16_t data = 0;

for(t=0;t{

   data+=ADC1_GetBufferValue(channel);

}

   return (uint16_t)(data/ADC);             //返回转换平均值

}

/*--------------Write-by-xiao-kai2017561714----QQ-850637704------------*/

/*-------------------------Always have a nice day-----------------------------*/[/mw_shl_code]


当我们想使用AIN12的时候,如果使用上面的代码就不能正确使用这个通道了。为什么呢?  看下图

stm8s105k4t6c ADC1简介


注意大红框中的NOTE:大概的意思是说:额外的AIN12通道不能用于ADC扫描模式和模拟看门狗模式,而且AIN12通道转换结果只会存在 ADC_DRH/ADC_DRL这两个寄存器中!  


既然是这样:那我们应该去stm8s的固件库中去寻找可以操作AIN12的函数咯,要注意库寄存器的风格,查找的格式应该是“ADC1->DRL”或"ADC1->DRH",就会找到uint16_t ADC1_GetConversionValue(void),而且就只有这个函数使用到了这两个寄存器,就是它了!!!


然后把上面操作AIN0-AIN5的初始化函数注释掉ADC1_ScanModeCmd(ENABLE); //启用扫描模式,调用ADC1_GetConversionValue()就可以了,STM8S好用没毛病!!! 

关键字:STM8S105K4T6C  模数转换器  12通道 引用地址:使用STM8S105K4T6C 模数转换器的12通道

上一篇:stm8——LED流水灯实现
下一篇:STM8L的USART1串口通信详解 含例程

推荐阅读

周三,微软CEO萨蒂亚·纳德拉(Satya Nadella)在纽约经济俱乐部(The Economic Club)发表演讲,他认为AI技术既会带来好的一面,也会带来坏的一面,科技企业必须认识到,它们的设计决定将会成为好与坏的推手。纳德拉表示:“我觉得科技产业似乎放弃了控制,有时会有这种感觉:‘AI明天就会到来,在最好的情况下,我们会成为驯服的猫,或者类似的东西。...
ABI Research最近发布的数字工厂市场数据报告显示,数字工厂市场将以33%的年复合增长率增长,到2026年将达到6730亿美元。 “目前,大多数制造设备仍然使用专有协议进行通信,并且以成本效益高的方式连接,而不需要太多的定制代码,这往往需要lit或 Kepware等I集成专家的专业知识。”ABI Research首席分析师皮尔斯·欧文说:“对于新工厂,我们已经...
  MDO4000系列混合域分析仪(图1),是一款具有创新意义的分析仪,至今已经获得国内外十多个最佳创新奖项。原因为MDO4000的“五机合一”特色,即:四通道500MHz/1GHz带宽数字荧光示波器,16通道逻辑分析仪,多种总线协议分析仪,3GHz/6GHz频谱分析仪,以及大于等于1GHz带宽的调制域分析仪。这五种功能工作在同一时钟、同一触发机制下,使得MDO4000具有创...
2020年下半年以来,国内光伏产业链价格迎来涨价潮。其中,多晶硅料价格一路走高,让下游光伏制造企业看到了原材料保供的重要性。 由于国内生产效率高、成本低,全球多晶硅产业向中国转移的趋势明显。多晶硅行业也历经狂热投资、产能过剩、淘汰兼并的过程,硅料价格从十多年前至今总体趋势向下,具备成本优势的龙头企业慢慢跑出,行业集中度提升。 德国分析...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved