STM8 ADC1连续模式切换通道干扰问题的解决

发布者:幸福时刻最新更新时间:2020-09-16 来源: eefocus关键字:STM8  ADC1  连续模式  切换通道  干扰问题 手机看文章 扫描二维码
随时随地手机看文章

初始化ADC1:

void Init_ADC(void)
{
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_6), GPIO_MODE_IN_FL_NO_IT);
ADC1_DeInit();
ADC1_Cmd(ENABLE);
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3,DISABLE);
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_4, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL4, DISABLE);
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_5, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL5,DISABLE);
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_6, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL6,DISABLE);
ADC1_ScanModeCmd(ENABLE);
ADC1_DataBufferCmd(ENABLE);
ADC1_ITConfig(ADC1_IT_EOCIE,ENABLE);//在中断中获取AD值
ADC1_StartConversion();
}

中断:

INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{
uint32_t tmp;
ADCValue[0]=ADC1_GetBufferValue(3);
ADCValue[1]=ADC1_GetBufferValue(4);
ADCValue[2]=ADC1_GetBufferValue(5);
ADCValue[3]=ADC1_GetBufferValue(6);
ADC1_ClearITPendingBit(ADC1_IT_EOC);
ADC1->CSR &= (uint8_t)(~ADC1_CSR_CH);//Clear the ADC1 channels
ADC1->CSR |= (uint8_t)(ADC1_CHANNEL_6); //在此处会在其它带AD功能的输出脚产生尖峰干扰,如PC4
tmp=ADCValue[0]+ADCValue[1]+ADCValue[2]+ADCValue[3];
}


由于PC4我已经配置为TIM1的PWM输出,无论是否配置PC4的GPIO与否,这个脚都是输出状态。查了有人说在切换时先关掉ADC,实测不行,那个只适用于单次采集。连续的得不到数据。估计是ADC开启后需要较多时间恢复电平,但是在中断中不可能给很多时间进行等待,实际应用也不允许。


最后的解决办法:

将PWM的时基调低,分配从不分配设置到32分频,这样PWM的输出频率就降低到越1khz左右,在该脚旁路一个0.1的电容,将那个干扰脉冲吸收,再输出去基本符合要求了。唯一美中不足的是,当PWM的定时值过低时,宽度与那个脉冲的宽度相近的时候,他也被吸收了。但是基本不影响使用,算是解决了罢。

关键字:STM8  ADC1  连续模式  切换通道  干扰问题 引用地址:STM8 ADC1连续模式切换通道干扰问题的解决

上一篇:MI200e电力线通讯
下一篇:STM8 ADC 多个通道连续扫描缓冲区数据带中断模式的正确写法

推荐阅读最新更新时间:2024-11-10 21:12

车载收音机干扰问题或可解决,不必一概移除
当前汽车内有各种流媒体影音娱乐,相比之下原本属于车内标配的收音机,显得落后许多。其实,AM收音机可以很自然地归入“完美技术”这一神圣的类别。它已经存在了一个多世纪,不过至少几十年来,它的设计一直没再有重大的技术进步。 为什么汽车制造商要逐步淘汰AM收音机? 部分汽车制造商表示,由于电磁干扰会使AM传输产生静电和噪音,让客户感到厌烦,他们打算不再在车上提供这些功能。也许是时候优雅地结束这项不再有多大用途的遗留技术了。然而,AM无线电仍然在包括美国在内的世界许多地区广泛使用,并在数亿人的日常生活和紧急通信中发挥着重要作用。 尽管呼声很高,电动汽车中AM收音机的逐步淘汰也已经进行了一段时间 —— 宝马决定不将这项技术纳入20
[汽车电子]
STM8 CAN总线的IdMask模式的讲解
前言 在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时根据标识符的值决定软件是否需要该报文;如果需要,就拷贝到RAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一需求,BeCAN为应用程序提供了个可配置的、位宽可变的6个(0-5)过滤器组,用于只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件进行过滤,从而占用一定的CPU资源。 一、IdMask模式 首先,需要明白IdMask的作用: 举个例子吧,过滤器长度为32位,模式为屏蔽模式,假如我要发送的标示符为0x1314;那过滤器设置如下 1、过滤器完全无
[单片机]
<font color='red'>STM8</font> CAN总线的IdMask<font color='red'>模式</font>的讲解
教你如何玩转STM8单片机!
最初从单片机学习整个计算机系统是个非常正常的阶梯学习方法。因为直到今天,计算机系统的那些事,也没逃离这个最基础的架构。可惜我当年直接跳过了这个过程,直接从intel 486学起的,那时每天带着无数的疑问在艰难的前行。 单片机不一定要学习51,其实随便选一家都是一样的。从实际出发要选,便宜的,外围器件少的,里面功能的,所以为大家挑选了STM8L。 STM8L是个8位单片机,我在论坛中的确看到一些小兄弟在问8位是怎么回事?我至少欣慰这位兄弟确实在思考。通常我说的8位是指CPU计算时,具体点说,不如说加法,是指两个8位二进制数相加的能力。同理,32位,就是32位二进制数相加。 另外,也是最难的部分,这8位单片机的寻范围可不一
[单片机]
教你如何玩转<font color='red'>STM8</font>单片机!
stm8烧录失败Failed to initialize communcation with hardware
刚上手stm8,我好不容易用IAR编译成功了的一个工程 就出现了这样的警告: Mon Jul 23, 2018 14:38:55: Failed to initialize communcation with hardware: SWIM error : ST-Link connection error Mon Jul 23, 2018 14:38:55: Failed to load debugee: E:LoRastm8projectDebugExeled.out 大概意思就是未能初始化与硬件的通信 ST-linkV2是一款可以在线仿真+下载STM8的开发工具,stm8系列单片机通过SWIM接口与stlink
[单片机]
<font color='red'>stm8</font>烧录失败Failed to initialize communcation with hardware
STM8 STM8S208MB寄存器
引脚类型 寄存器 STM8S208MB寄存器采用LQFP80封装,此处的80就表示都会 有80个引脚,其中68个引脚是GPIO。按 GPIO 端口功能分类,依次是 PA 组GPIO端口有6个(PA1-PA6) PB 组GPIO端口有8个(PB0-PB7) PC 组GPIO端口有8个(PC0-PC7) PD 组GPIO端口有8个(PD0-PD7) PE 组GPIO端口有8个(PE0-PE7) PF 组GPIO端口有6个(PF0,PF3-PF7) PG 组GPIO端口有8个(PG0-PG7) PH 组GPIO端口有8个(PH0-PH7) PI 组GPIO端口有8个(PI0-PI7) STM8S208MB 每一个端口寄存器位驱
[单片机]
<font color='red'>STM8</font> STM8S208MB寄存器
STM8单片机STVD环境监视数组变量的多个元素
调试时监视数组变量的多个元素修改如下设置
[单片机]
连续模式反激变换器的基本原理和电路设计
1.介绍   反激变换器拓扑在5W到 150W的小功率场合中得到广泛的应用。这个拓扑的重要优点是在变换器的输出端不需要滤波电感,从而节约了成本,减小了体积。在以往一些中文参考资料的叙述中,由于同时涉及电路和磁路的设计,容易造成设计过程中的混乱,反激变换器电路本身的一些特性却没有得到应有的体现。在文献【1】中,介绍了反激变换器的基本工作原理,对不连续模式反激变换器的设计过程,各参数之间的决定关系作了简练而准确的描述。由于电路设计和磁路设计分别介绍,对读者掌握反激变换器的设计有很好的帮助。磁路设计在本文中不涉及,可以参考相关文献。 2.不连续模式反激变换器的基本原理   反激变换器在开关管导通期间,变压器储能,负载电流由输出滤波电容提
[电源管理]
不<font color='red'>连续</font><font color='red'>模式</font>反激变换器的基本原理和电路设计
解决开关电源电磁干扰问题的方案
引言 近年来,开关电源以其效率高、体积小、输出稳定性好的优点而迅速发展起来。但是,由于开关电源工作过程中的高频率、高di/dt和高dv/dt使得电磁干扰问题非常突出,国内已经以新的3C认证取代了CCIB和CCEE认证,使得对开关电源在电磁兼容方面的要求更加详细和严格。如今,如何降低甚至消除开关电源的EMI问题已经成为全球开关电源设计师以及电磁兼容(EMC)设计师非常关注的问题。本文讨论了开关电源电磁干扰形成的原因以及常用的EMI抑制方法。 开关电源的干扰源分析 开关电源产生电磁干扰最根本的原因,就是其在工作过程中产生的高di/dt和高dv/dt,它们产生的浪涌电流和尖峰电压形成了干扰源。工频整流滤波使用的大电容充电放电、开关管高频
[电源管理]
解决开关电源电磁<font color='red'>干扰</font><font color='red'>问题</font>的方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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