MCU

MCU是Microcontroller Unit(微控制器单元)的缩写,它是一种集成了中央处理器(CPU)、存储器(ROM、RAM)、输入/输出端口(I/O)、定时器(Timer)、串行通信接口(UART、SPI、I2C等)和其他外围设备控制器的单个芯片。MCU通常用于嵌入式系统中,用于控制各种电子设备和系统。

由于其集成度高、体积小、功耗低以及成本相对较低等特点,MCU被广泛应用于各种嵌入式系统中,例如智能家居设备、医疗设备、汽车电子系统、工业自动化等。MCU的选择通常基于应用的需求,如处理性能、功耗、外设接口等因素。

前言

随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。

然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。

这对我们单片机系统的可靠性与安全性构成了极大的威胁。单片机测控系统必须长期稳定、可靠运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大损失。

因此单片机的抗干扰问题已经成为不容忽视的问题。

干扰对单片机应用系统的影响  

1. 测量数据误差加大

干扰侵入单片机系统测量单元模拟信号的输入通道,叠加在测量信号上,会使数据采集误差加大。特别是检测一些微弱信号,干扰信号甚至淹没测量信号。

2. 控制系统失灵

单片机输出的控制信号通常依赖于某些条件的状态输入信号和对这些信号的逻辑处理结果。若这些输入的状态信号受到干扰,引入虚假状态信息,将导致输出控制误差加大,甚至控制失灵。

3. 影响单片机RAM存储器和E2PROM等

在单片机系统中,程序及表格、数据存在程序存储器EPROM或FLASH中,避免了这些数据受干扰破坏。但是,对于片内RAM、外扩RAM、E2PROM 中的数据都有可能受到外界干扰而变化。

4. 程序运行失常

外界的干扰有时导致机器频繁复位而影响程序的正常运行。若外界干扰导致单片机程序计数器PC值的改变,则破坏了程序的正常运行。

由于受干扰后的PC 值是随机的,程序将执行一系列毫无意义的指令,最后进入“死循环”,这将使输出严重混乱或死机。

如何提高设备的抗干扰能力  

单片机系统中的各个单元都需要使用直流电源,而直流电源一般是市电电网的交流电经过变压、整流、滤波、稳压后产生的,因此电源上的各种干扰便会引入系统。

1.png

除此之外,由于交流电源共用,各电子设备之间通过电源也会产生相互干扰,因此抑制电源干扰尤其重要。

电源干扰主要有以下几类:

电源线中的高频干扰(传导骚扰):

供电电力线相当于一个接收天线,能把雷电、电弧、广播电台等辐射的高频干扰信号通过电源变压器初级耦合到次级,形成对单片机系统的干扰;

解决这种干扰,一般通过接口防护;在接口增加滤波器、或者使用隔离电源模块解决。

感性负载产生的瞬变噪音(EFT):

切断大容量感性负载时,能产生很大的电流和电压变化率,从而形成瞬变噪音干扰,成为电磁干扰的主要形式;

解决这种干扰,一般通过屏蔽线与双胶线,或在电源接口、信号接口进行滤波处理。

这二种方法都需要在系统接地良好的情况下进行,滤波器、接口滤波电路都必须良好的接地,这样才能有效的将干扰泄放。

模拟信号采样抗干扰技术  

单片机应用系统中通常要对一个或多个模拟信号进行采样,并将其通过A/D转换成数字信号进行处理。

为了提高测量精度和稳定性:
  • 要保证传感器本身的转换精度;

  • 传感器供电电源的稳定;

  • 测量放大器的稳定;

  • A/D转换基准电压的稳定;

  • 要防止外部电磁感应

  • 噪声的影响;

如果处理不当,微弱的有用信号可能完全被无用的噪音信号淹没。

在实际工作中,可以采用具有差动输入的测量放大器,采用屏蔽双胶线传输测量信号,或将电压信号改变为电流信号,以及采用阻容滤波等技术。

2.png

数字信号传输通道的抗干扰技术  

数字输出信号可作为系统被控设备的驱动信号(如继电器等),数字输入信号可作为设备的响应回答和指令信号(如行程开关、启动按钮等)。

数字信号接口部分是外界干扰进入单片机系统的主要通道之一。

在工程设计中,对数字信号的输入/输出过程采取的抗干扰措施有:

传输线的屏蔽技术,如采用屏蔽线、双胶线等;

采用信号隔离措施;

合理接地,由于数字信号在电平转换过程中形成公共阻抗干扰,选择合适的接地点可以有效抑制地线噪声。

硬件监控电路  

在单片机系统中,为了保证系统可靠、稳定地运行,增强抗干扰能力,需要配置硬件监控电路,硬件监控电路从功能上包括以下几个方面:

上电复位:保证系统加电时能正确地启动;

掉电复位:当电源失效或电压降到某一电压值以下时,产生复位信号对系统进行复位;

电源监测:供电电压出现异常时,给出报警指示信号或中断请求信号;

硬件看门狗:当处理器遇到干扰或程序运行混乱产生“死锁”时,对系统进行复位。

PCB电路合理布线  

PCB板设计的好坏对抗干扰能力影响很大。因此,在进行PCB 设计时,必须遵守PCB 设计的一般原则,并应符合抗干扰设计的要求。

下面着重说明两点:

1. 关键器件放置

在器件布置方面与其它逻辑电路一样,应把相互有关的器件尽量放得靠近些,这样可以获得较好的抗噪声效果。

时钟发生器、晶振和CPU 的时钟输入端都易产生噪声,要相互靠近些;

CPU 复位电路、硬件看门狗电路要尽量靠近CPU相应引脚;

易产生噪声的器件、大电流电路等应尽量远离逻辑电路。

3.png

2. D/A、A/D 转换电路地线的正确连接

D/A、A/D 芯片及采样芯片均提供了数字地和模拟地,分别有相应的管脚。在线路设计中,必须将所有器件的数字地和模拟地分别相连,但数字地与模拟地仅在一点上相连。另外,也可以采用屏蔽保护,屏蔽可用来隔离空间辐射。对噪声特别大的部件(如变频电源、开关电源)可以用金属盒罩起来以减少噪声源对单片机的干扰,对容易受干扰的部分,可以增加屏蔽罩并接地,使干扰信号被短路接地。

软件抗干扰原理及方法 

尽管我们采取了硬件抗干扰措施,但由于干扰信号产生的原因错综复杂,且具有很大的随机性,很难保证系统完全不受干扰。

因此,往往在硬件抗干扰措施的基础上,采取软件抗干扰技术加以补充,作为硬件措施的辅助手段。软件抗干扰方法具有简单、灵活方便、耗费低等特点,在系统中被广泛应用。

1、数字滤波方法

数字滤波是在对模拟信号多次采样的基础上,通过软件算法提取最逼近真值数据的过程。数字滤波的的算法灵活,可选择权限参数,其效果往往是硬件滤波电路无法达到的。

2、输入信号重复检测方法

输入信号的干扰是叠加在有效电平信号上的一系列离散尖脉冲,作用时间很短。

当控制系统存在输入干扰,又不能用硬件加以有效抑制时,可用软件重复检测的方法,达到“去伪存真”的目的,直到连续两次或连续两次以上的采集结果完全一致时方为有效。

若信号总是变化不定,在达到最高次数限额时,则可给出报警信号。对于来自各类开关型传感器的信号,如限位开关、行程开关、操作按钮等,都可采用这种输入方式。

如果在连续采集数据之间插入延时,则能够对付较宽的干扰。

3、输出端口数据刷新方法

开关量输出软件抗干扰设计,主要是采取重复输出的方法,这是一种提高输出接口抗干扰性能的有效措施。对于那些用锁存器输出的控制信号,这些措施很有必要。

在尽可能短的周期内,将数据重复输出,受干扰影响的设备在还没有来得及响应时,正确的信息又到来,这样就可以及时防止误动作的产生。在程序结构的安排上,可为输出数据建立一个数据缓冲区,在程序的周期性循环体内将数据输出。

对于增量控制型设备不能这样重复送数,只有通过检测通道,从设备的反馈信息中判断数据传输的正确与否。在执行重复输出功能时,对于可编程接口芯片,工作方式控制字与输出状态字一并重复设置,使输出模块可靠地工作。

4、软件拦截技术

当窜入单片机系统的干扰作用在CPU 部位时,后果更加严重,将使系统失灵。

最典型的故障是破坏程序计数器PC 的状态,导致程序从一个区域跳转到另一个区域,或者程序在地址空间内“乱飞”,或者陷入“死循环”。

使用软件拦截技术可以拦截“乱飞”的程序或者使程序摆脱“死循环”,并将运行程序纳入正轨,转到指定的程序入口。

5、“软件看门狗”技术

PC 受到干扰而失控,引起程序“乱飞”,也可能使程序陷入“死循环”。当软件拦截技术不能使失控的程序摆脱“死循环”的困境时,通常采用程序监视技术WDT TIMER(WDT),又称看门狗技术,使程序脱离“死循环”。

WDT 是一种软、硬件结合的抗程序跑飞措施,其硬件主体是一个用于产生定时T 的计数器或单稳,该计数器或单稳基本独立运行,其定时输出端接至CPU 的复位线,而其定时清零则由CPU 控制。

在正常情况下,程序启动WDT 后,CPU 周期性的将WDT 清零,这样WDT 的定时溢出就不会发生,如同睡眠一般不起任何作用。在受到干扰的异常情况下,CPU 时序逻辑被破坏,程序执行混乱,不可能周期性的将WDT 清零,这样当WDT 的定时溢出时,其输出使系统复位,避免CPU因一时干扰而陷入瘫痪的状态。

总结

随着单片机系统的广泛应用和技术的进步,电磁干扰问题越来越突出,推广现有的、成熟的抗干扰技术,研究抗干扰的新技术、新方向是单片机应用技术的当务之急。

在单片机应用系统设计及应用中,只要充分考虑设备的电磁兼容性,并通过各种技术措施来消除干扰,就可以大大提高设备的稳定性和可靠性。

来源:STM32嵌入式开发

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 29

近日,曦华科技与ETAS共同宣布,ETAS RTA-BSW平台成功适配曦华蓝鲸CVM014x系列车规级MCU芯片,这一合作成果将为汽车行业带来更加高效、安全的软件开发与整车集成应用,为双方共同推广汽车电子芯片软件支持和打造汽车电子软件生态系统具有重要意义。

1.jpg

蓝鲸CVM014x Mcal基于AutoSAR Classic Platform 4.2.2开发,完整支持微控制器驱动(Microcontroller Drivers), 存储器驱动(Memory Drivers),通信驱动(Communication Drviers),I/O驱动(I/O Drivers),并且提供部分常用CDD模块。

 蓝鲸CVM014x系列车规级MCU芯片专为汽车电子嵌入式控制系统设计,具有高性能、高可靠性、功能强大的特点,目前已获得德国莱茵颁发的ISO26262 ASIL-D功能安全流程认证,以及国创中心颁发的ISO26262 ASIL-B功能安全产品认证,公司全系产品均通过AEC-Q100车规可靠性测试标准,并内嵌信息安全模块及加密引擎。

ETAS RTA-BSW框图

2.png

ETAS RTA-BSW介绍

ETAS RTA-CAR是用于车规嵌入式ECU的经典AUTOSAR软件,RTA-CAR目前支持AUTOSAR4.2.2和AUTOSAR R21-11标准, 包含完整的操作系统(OS),基础软件(BSW),运行时环境(RTE)结合配置工具ISOLAR-AB,可以为客户实现完整的AUTOSAR解决方案。ETAS的RTA-CAR以20多年的开发经验为基础并符合ISO 26262标准,可用于安全要求较高(ASIL-D)的应用。 

曦华科技与ETAS都十分重视双方的合作,凭借双方各自所在领域多年的经验及技术积累,形成在芯片+软件的技术适配合作,加快汽车软件的开发和集成速度,为客户提供更好的汽车MCU产品硬件和软件生态系统的技术支持;同时加强双方在商务上的合作,为整车制造商和汽车电子系统供应商提供完整先进的解决方案,助力本土汽车产业的可持续发展,构建更强大的汽车生态。

来源:ETAS易特驰

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 10

互补输出简介

互补输出只能在高级控制定时器(TIM1和TIM8)上使用,可以输出两路互补信号,包括主输出OCx和互补输出OCxN。基于比较输出一节的内容,OCx和OCxN都可以输出一定频率和占空比的PWM波形,且他们的极性是相反的,如图1所示,OCxREF是参考信号,OCx输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟,OCxN输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个延迟,这个延迟时间,我们是可以通过死区寄存器配置的,本节中我们可以设置为0。

1.png

图1 带死区插入的互补输出

2.png

图2捕获比较通道的输出阶段

如图3所示,因为互补输出多用于PWM控制电机的项目中,所以紧急情况下的刹车控制是必不可少的,OSSR的含义是运行模式下的关闭状态选择,OSSI的含义是空闲模式下的关闭状态选择,MOE的含义是主输出使能,一般的应用模式为,当短路输入为有效状态,MOE又硬件异步清零,OSSI设置为0,禁止OC\OCN输出,OSI1\OSI1N设置为0,OC1\OC1N输出为0,达到紧急刹车的目的。

3.png

图3 控制位和输出状态

配置步骤

互补输出实际跟比较输出章节一样使用的是定时器的功能,所以相关的函数设置同样在库函数文件CKS32f4xx_tim.h和CKS32f4xx_tim.c文件中。

1)开启TIM1和GPIO时钟,配置PA7、PA8选择复用功能GPIO_AF_TIM1输出。

要使用TIM1,我们必须先开启TIM1的时钟,这点相信大家看了这么多代码,应该明白了。这里我们还要配置PA7、PA8为复用(GPIO_AF_TIM1)输出,才可以实现TIM1_CH1的互补PWM经过PA7、PA8输出。库函数使能TIM1时钟的方法是:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); //>>TIM1 时钟使能

这在前面章节已经提到过。当然,这里我们还要使能GPIOA的时钟。然后我们要配置PA7引脚映射至GPIO_AF_TIM1,复用为定时器1,调用的函数为:

GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM1); //>>GPIOA7 复用为定时器1

配置PA8引脚映射至GPIO_AF_TIM1,复用为定时器1,调用的函数为:

GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_TIM1); //>>GPIOA8 复用为定时器1

这个方法跟我们串口实验讲解一样,调用的同一个函数,最后设置PA7为复用功能输出这里我们只列出GPIO初始化为复用功能的一行代码:

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //>>复用功能

这里还需要说明一下,对于定时器通道的引脚关系,大家可以查看CKS32F4对应的数据手册,比如我们PWM实验,我们使用的是定时器1的通道1,对应的引脚PA7可以从数据手册表中查看:

3.png

2)初始化TIM1,设置TIM1的ARR和PSC等参数。

在开启了TIM1的时钟之后,我们要设置ARR和PSC两个寄存器的值来控制输出PWM的周期。这在库函数是通过TIM_TimeBaseInit函数实现的,在上一节定时器中断章节我们已经有讲解,这里就不详细讲解,调用的格式为:

TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载值

TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据指定的参数初始化 TIMx

3)设置TIM1_CH1的PWM模式,使能TIM1的CH1输出。

设置TIM1_CH1为PWM模式(默认是冻结的)通过配置TIM1_CCMR1的相关位来控制TIM1_CH1的模式。在库函数中,PWM通道设置是通过函数TIM_OC1Init()~TIM_OC4Init()来设置的,不同的通道的设置函数不一样,这里我们使用的是通道1,所以使用的函数是TIM_OC1Init()。

Void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

这种初始化格式大家学到这里应该也熟悉了,所以我们直接来看看结构体TIM_OCInitTypeDef的定义:

typedef struct
{
    uint16_t TIM_OCMode;
    uint16_t TIM_OutputState;
    uint16_t TIM_OutputNState; */
    uint16_t TIM_Pulse;
    uint16_t TIM_OCPolarity;
    uint16_t TIM_OCNPolarity;
    uint16_t TIM_OCIdleState;
    uint16_t TIM_OCNIdleState;
} 
TIM_OCInitTypeDef;

这里我们讲解一下与我们要求相关的几个成员变量:

参数TIM_OCMode设置模式是PWM还是输出比较,这里我们是PWM模式。

参数TIM_OutputState\OutputNState用来设置比较输出使能,也就是使能PWM输出到端口。参数TIM_OCPolarity\OCNPolarity用来设置极性是高还是低。参数TIM_OCIdleState和TIM_OCNIdleState用来设置空闲时的输出状态。

要实现我们上面提到的场景,方法是:

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //>>选择模式 PWM
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //>>比较输出使能
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Enable; //>>比较输出使能
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High; //>>输出极性高
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //>>输出极性低
TIM_OCInitStructure. TIM_OCIdleState = TIM_OCNIdleState_Reset; //>>当MOE=0重置输出空闲状态
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset; //>>当MOE=0重置输出空闲状态
TIM_OCInitStruct.TIM_Pulse=100;//待装入捕获比较寄存器的脉冲值
TIM_OC1Init(TIM1, &TIM_OCInitStructure); //>>根据指定的参数初始化外设
TIM1 OC1 TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);  //使能TIM1在CCR上的预装载寄存器

4)使能 TIM1。

在完成以上设置了之后,我们不开启刹车功能,并使能TIM1,使能TIM1的方法前面已经讲解过:

TIM_BDTRStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;//自动输出功能使能
TIM_BDTRStructure.TIM_Break=TIM_Break_Disable;//失能刹车输入
TIM_BDTRStructure.TIM_BreakPolarity=TIM_BreakPolarity_High; //刹车输入管脚极性高
TIM_BDTRStructure.TIM_DeadTime=0; //输出打开和关闭状态之间的延时
TIM_BDTRStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;// 锁电平参数: 不锁任何位
TIM_BDTRStructure.TIM_OSSIState=TIM_OSSIState_Disable; //设置在运行模式下非工作状态选项
TIM_BDTRStructure.TIM_OSSRState=TIM_OSSRState_Disable; //设置在运行模式下非工作状态选项
TIM_BDTRConfig(TIM1,&TIM_BDTRStructure);
TIM_ARRPreloadConfig(TIM1,ENABLE); //使能TIM1在ARR上的预装载寄存器
TIM_CtrlPWMOutputs(TIM1,ENABLE);   //PWM使能主输出MOE=1
TIM_Cmd(TIM1,ENABLE);   //打开TIM1

5)修改TIM1_CCR1来控制占空比。

最后,在经过以上设置之后,PWM其实已经开始输出了,只是其占空比和频率都是固定的,而我们通过修改TIM1_CCR1则可以控制CH1的输出占空比。在库函数中,修改TIM1_CCR1占空比的函数是:

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare2);

理所当然,对于其他通道,分别有一个函数名字,函数格式为:

TIM_SetComparex(x=1,2,3,4)

通过以上5个步骤,我们就可以控制TIM1的CH1输出互补PWM波了。

3代码示例

添加PWM配置文件pwm.c和pwm.h。

pwm.c源文件代码如下:

//>>TIM1 PWM 部分初始化
//>>PWM 输出初始化
//>>arr:自动重装值 psc:时钟预分频数
void TIM1_PWM_Init(u32 arr,u32 psc)
{
    PIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//TIM1 时钟使能
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能 PORTA 时钟
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM1); //PA7 复用为 TIM1
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_TIM1); //PA8 复用为 TIM1
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8; //GPIOF9
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度 100MHz
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
    GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化 PA7\PA8
    TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//初始化定时器 1
    //初始化  TIM1 Channel1 互补PWM 模式
    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //>>选择模式 PWM
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //>>比较输出使能
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Enable; //>>比较输出使能
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High; //>>输出极性低
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //>>输出极性低
    TIM_OCInitStructure. TIM_OCIdleState = TIM_OCNIdleState_Reset; //>>当MOE=0重置输出空闲状态
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset; //>>当MOE=0重置输出空闲状态
    TIM_OC1Init(TIM1, &TIM_OCInitStructure); //>>根据指定的参数初始化外设TIM1 OC1 
    TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);  //使能TIM1在CCR上的预装载寄存器
    TIM_BDTRStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;//自动输出功能使能  
    TIM_BDTRStructure.TIM_Break=TIM_Break_Disable;//失能刹车输入
    TIM_BDTRStructure.TIM_BreakPolarity=TIM_BreakPolarity_High; //刹车输入管脚极性高
    TIM_BDTRStructure.TIM_DeadTime=0; //输出打开和关闭状态之间的延时
    TIM_BDTRStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;// 锁电平参数: 不锁任何位
    TIM_BDTRStructure.TIM_OSSIState=TIM_OSSIState_Disable; //设置在运行模式下非工作状态选项
    TIM_BDTRStructure.TIM_OSSRState=TIM_OSSRState_Disable; //设置在运行模式下非工作状态选项
    TIM_BDTRConfig(TIM1,&TIM_BDTRStructure);
    TIM_ARRPreloadConfig(TIM1,ENABLE); //使能TIM1在ARR上的预装载寄存器
    TIM_CtrlPWMOutputs(TIM1,ENABLE);   //PWM使能主输出MOE=1
    TIM_Cmd(TIM1,ENABLE);              //打开TIM1
    TIM_SetCompare1(TIM1,300); //>>设置pwm的占空比为300/500 = 60%
}

此部分代码包含了上面介绍的PWM输出设置的前5个步骤。这里我们关于TIM1的设置就不再说了。接下来,我们看看主程序里面的main函数如下:

int main(void)
{ 
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//>>设置系统中断优先级分组 2
    delay_init(168); //>>初始化延时函数
    TIM1_PWM_Init(500-1,84-1); //>>定时器时钟为 84M,分频系数为 84,所以计数频率
    //>> 84M/84=1Mhz,重装载值500,所以PWM频率为1M/500=2Khz.
    while(1) {}
}

这里,我们先设置好了NVIC终端优先级,然后初始化延时函数和timer,在timer的初始化参数中我们把PWM的频率设置成2K,将占空比设置成60%,完成PWM输出设置。

来源:中科芯MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 8

强磁搅拌器主要应用于液体混合实验,其工作原理是通过微电机带动耐高温的强力磁铁旋转后,产生的旋转磁场力带动搅拌子转动,从而实现对容器内的液体搅拌,并根据需要同步加热液体,达到混合反应的目的。

为适应各领域的应用发展,电机控制逐步向功能集成化、高效能、高精度及节能化等方向发展。电机作为强磁搅拌器的执行机构,需要围绕噪音小、控温精度高、调速平稳、性能稳定等设计思路展开。

目前市面上强磁搅拌器的电机控制多以使用有感方波控制为主,极海通过技术创新与优化升级,在增加集成度、并兼具成本效益的前提下,推出基于APM32F035电机控制专用MCU的强磁搅拌器量产级应用方案。该方案采用有感FOC控制方式,相比于传统方案,系统外围电路精简、能效更低、噪音更小,同时还具有更加平稳与更加流畅的启动方式、更短的刹车时间。

APM32F035强磁搅拌器应用方案介绍

极海APM32F035电机控制专用MCU作为此应用方案的主控,负责采集霍尔信号、电流、电压信号,执行电机控制逻辑,接收控制指令以及反馈电机运行状态。具体来说,APM32F035通过检测霍尔信号、母线电压信号以及电机的相电流信号,输入到MCU内部,同时在MCU内执行电机算法逻辑;随后通过Timer1输出6组互补的PWM信号来驱动电机,保障电机高效、平稳、低噪声运行。值得说明的是APM32F035内部集成4路独立运放模块,在进行电机相电流采样时,不需要外置运放进行信号调制。

1.jpgAPM32F035强磁搅拌器应用方案实现框图

APM32F035强磁搅拌器应用方案特点:

■  采用霍尔FOC矢量控制,显著降低运行噪声

■  集成多运放、比较器,精简电路,降低干扰

■  霍尔自学习及角度补偿功能,实现绝对零度控制,显著提升电机运行效率

■  启动无反转,无级调速,全转速运行稳定并支持超低频率0.83Hz运行

■  故障指示、正反转自由切换、软硬件调速

■  输入过欠压保护、软硬件过流保护、缺相保护、堵转保护、霍尔异常检测等保护功能

APM32F035电机控制专用MCU关键优势:

●  基于Arm® Cortex®-M0+内核, 72MHz高主频

●  Flash 64KB, SRAM 10KB, BootLoader 4KB

●  M0CP协处理器:硬件配置包括移位,32bit/32bit 除法器,开方,三角函数等,用更短运算时间实现更复杂运算

●  模拟外设:OP-AMP×4,COMP×2,12-bit ADC×1

●  数字外设:SPI×1,U(S)ART×2,I2C×1,CANx1,DMA

●  电机专用PWM:支持互补与刹车, 可与M0CP联动

为顺应电机控制快速发展的市场应用,极海紧随其更加节能、高效、安全、可靠、集成等技术趋势,为电机控制系统设计提供丰富的产品与量产级解决方案,并不断向新的应用方向拓展创新。同时,极海全面的电机开发生态与及时周到的技术支持服务,可助力客户快速实现产品性能的创新与突破。

来源:Geehy极海半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 9

随着楼宇、家居、工厂配置越来越需要智能化、联网化、本地边缘处理及时化,所以与之配套的电气控制设备之一断路器与其管理监控的网关也会同样需要重新设计。

我们看到普通的断路器除了常规功能之外,例如短路保护、过载保护和漏电保护, 断路器也会有一些新的智能特性,比如通过联网实时反馈和记录电路和设备的信息状态。这些联网接口和方式包括RS485、RJ45(以太网)、WiFi、蓝牙、4G/5G等多种协议进行远程控制,同时智能断路器和网关内部也需要用高速CAN总线来互联通讯。

在短距离监控方面,用户也会使用手机APP或电脑终端远程调节各种参数,如调节额定电流值、调节额定漏电保护跳闸值、过压或欠压百分比值、温度保护值或其他值,使用户可以根据自己的使用情况去调节。面对云端联网和远程遥控,在保护数据安全,防止被恶意篡改的潜在风险,用户又不得不需要芯片级别的安全隔离和防护。

在这样的需求下,智能断路器和网关会需要满足以上功能MPU、M4、BLE MCU来重新设计。

以下内容是新唐在相关的智能断路器和网关产品方案来协助客户提供这方面器件供应支持。

针对智能断路器需求新唐提供相关M4产品

  • 需要高算力

    • M46x系列高达200MHz,M483系列高达192MHz,二者都带DSP/FPU浮点运算单元

  • 大容量记忆体支持运行实时操作系统

    • M46x系列提供最多1024KB Flash与512KB RAM

    • M483系列提供最多512KB Flash与160KB RAM

  • 丰富与冗余的外设

    • M46x系列提供最多CAN FDx4chs与UARTx10chs+ISO7816/UARTx3chs

    • M483系列提供最多CAN x3chs与UARTx8chs+ISO7816/UARTx3chs

  • 多路ADC采集管道(>20chs)12-bit ADC

    • M46x系列提供5 MSPS, 12bit ADC, 可支持至28路 (最高可支持至3组ADC)

    • M483系列提供5 MSPS, 12bit ADC, 可支持至24路 (最高可支持至2组ADC)

  • 丰富的管脚

    • M46x系列提供 LQFP64对应GPIO(44),LQFP128对应GPIO(100),LQFP144对应GPIO(114),LQFP176对应GPIO(146)

    • M483系列提供LQFP64对应GPIO(52),LQFP128对应GPIO(100)

1.png

M463/M467系列选型

2.png

M483系列选型

3.png

新唐M4系列在智能断路器上应用框图

低阶和高阶断路器网关应用

对面不同应用的场合,例如智慧建筑需要低阶网关,功能需要能通过CAN总线控制断路器,云端上传,处理传感器采集信号,实时运行RTOS的功能,此外高阶的网关需要极高的算力面对轻量化的边缘计算,更高速的CANFD 总线与断路器及时控制,有软硬安全机制保证数据的传输安全更多功能。新唐提供NUC980系列和MA35D1来协助客户来应对不同的需求。

针对低阶智能断路器网关,新唐提供NUC980系列为其提供理想的选型
4.png

NUC980系列选型

5.png

新唐NUC980系列在低阶智能断路器网关上应用框图

针对高阶智能断路器网关,新唐提供MA35D1系列为其提供理想的选型
  • 需要极高的算能应对轻量级的边缘计算

    • 双核64位Arm® Cortex®-A35 (800Mhz)与Arm® Cortex®-M4(180Mhz)异构内核架构

  • 大容量内嵌SDRAM支持运行Linux与实时操作系统RT-thread

    • 最高内部堆迭DDR3L SDRAM容量高达512 MB

  • 丰富与冗余的外设接口

    • 4 组PDMA

    • 2 路千兆以太网

    • 1 路SDIO3.0, 1 路SDIO2.0

    • 1 组USB2.0 高速主机,1 组双角色USB2.0 高速主机与设备

    • 4路CAN FD

    • 2路QSPI

    • 2路I2S

    • 4路SPI/I2S

    • 17路UART

    • 6路I2C

  • 完善的安全机制应对联网的风险

    • TrustZone技术

    • 安全启动(Secure Boot)

    • 可信安全岛(TSI)是一个隔离的安全硬件单元,执行所有安全性相关操作

    • 硬件加解密引擎:AES256, SHA512, ECC, RSA4096, SM2/3/4

    • 真随机数生成器(TRNG)

    • 8Kbit一次性存储内存(OTP memory) 内含密钥存储(Key Store)功能

6.png

MA35D1系列选型

新唐MA35D1系列在高阶智能断路器网关上应用框图

7.png

针对断路器无线连接,新唐提供的M031BT/M032BT BLE MCU

  • 运行速度可达72 MHz Arm® Cortex®-M0 内核

  • 多达512 KB 闪存,96 KB SRAM

  • 封装:QFN48 (5 x 5 mm) for M031BT / QFN68 (8 x 8 mm) for M032BT

  • 支持双模蓝牙低功耗BLE 5.0与无线2.4GHz传输技术

  • 空中传输速率Data Rate:1 Mbps and 2 Mbps

  • 高发射功率TX Power:+8 dBm @1 Mbps

  • 接收灵敏度Rx Sensitivity:−94 dBm @1 Mbps

  • PHY, Link Layer, Host 认证

8.png

9.png

M031BT/M032BT BLE MCU系列选型

来源:新唐MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 41

近日,武汉芯源半导体正式发布首款基于Cortex®-M0+内核的CW32A030C8T7车规级MCU,这是武汉芯源半导体首款通过AEC-Q100 (Grade 2)车规标准的主流通用型车规MCU产品。

CW32A030C8T7通过AEC-Q100车规可靠性测试

作为武汉芯源半导体首款车规级MCU产品,CW32A030C8T7产品顺利通过AEC-Q100(Grade2)车规级可靠性测试,符合车用电子高可靠性和稳定性要求,可用于环境温度范围-40°C~105°C的大部分车载应用环境。

1.jpg

武汉芯源半导体始终将安全可靠性要求放在第一位,遵循AEC-Q100测试标准,进行了包括高温工作寿命试验(HTOL)、早期失效率试验(ELFR)、静电放电人体模型(HBM)、静电放电充电装置模型(CDM)、高温门领试验(LU-HT)、电磁兼容试验(EMC)等19项测试。同时加强产品质量管控,将质量管理渗透到产品的研发、制造、销售、技术服务等各个方面,确保产品高可靠度。

2.png

CW32A030C8T7车规MCU产品性能优势特性

1、高性能架构设计

CW32A030C8T7是基于ARM® Cortex®-M0+内核,采用Prefetch+Cache架构,以64MHz为量产测试保证,芯片配置64K字节FLASH,8K 字节RAM,128字节OTP存储器。芯片采用1.65~5.5V宽电压供电,工作温度范围-40~+105℃。

3.png

2、丰富的外设接口

为实现多样化的车身控制和互联应用,CW32A030C8T7集成了多种通信接口增强连接能力。

-支持多达三路低功耗UART、两路I2C、两路SPI接口;

-16位高级控制定时器、4组16位通用定时器,3组16位基本定时器;

-12位高精度ADC,采样速率可达1M SPS。

3、加密安全防护

增加多级程序加密安全防护,妥善保护客户知识产权。

4、超强抗干扰能力

HBM ESD、MM ESD、CDM ESD、Latch up@105℃全面达到JEDEC最高等级。

4.png

全面、高效的开发配套支持

CW32A030C8T7车规MCU配套提供样品和开发板,兼容Keil/IAR/GCC等多种主流集成开发环境(IDE),并提供CW-DAPLINK调试工具和CW-Writer高效率量产工具。开发套件软件源码、硬件参考设计、应用笔记等技术文档配套齐全,已在官网开放下载。武汉芯源半导体提供线上公众号(武汉芯源半导体、CW32生态社区)、芯源CW32 MCU技术论坛等多个渠道的技术交流与支持服务。

广泛的车身应用,丰富汽车电子智能体验

CW32A030C8T7车规MCU遵循车规级设计理念和生产标准,兼具通用高性能、硬件高安全性和车规级高可靠性等优势特性,满足车规级产品对恶劣工作环境的适应性要求,帮助客户加速方案开发、缩短产品量产时程。可应用于车身控制、车用照明、智能座舱、辅助驾驶及电机电源等多种电气化车用场景,为汽车电子领域带来更丰富的智能体验。

武汉芯源半导体正式进入车规MCU市场

AEC-Q100测试考核是汽车电子委员会(Automotive Electronics Council)制定的规范,主要针对车载应用的芯片进行严格的质量与可靠性确认,以提高车载电子的稳定性和标准化。

由于车规级芯片在可靠性、安全性、使用寿命方面的要求高于消费级、工业级芯片,AEC-Q100测试考核门槛高、测试项目覆盖广、标准极为严苛,是芯片产品进入汽车领域的重要通行证之一。

CW32A030C8T7车规MCU能通过AEC-Q100较长周期下严格的可靠性测试和评估,代表该产品能够在恶劣的汽车环境下稳定运行,可确保汽车的安全性和可靠性,能够获得汽车制造商的认可。

有关芯片样品申请及购买事宜,请咨询武汉芯源半导体的销售和官方代理商。更多MCU详细信息,请访问武汉芯源半导体官方网站:https://www.whxy.com

来源:武汉芯源半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 13

近日,极海车规级MCU凭借可靠的产品品质、专业周到的客户技术支持服务,以及量产级解决方案良好的市场表现,相继斩获“2023汽车芯片50强”、“MCU创新先锋奖”两项行业大奖。作为国内领先的32位车规级芯片设计企业,极海积极布局以服务汽车智能化、电动化、网联化的快速融合。

2023汽车芯片50强

11月28日,由北京经济技术开发区管委会主办、盖世汽车承办的“芯向亦庄”2023汽车芯片大赛在北京亦庄圆满落幕。极海车规级MCU凭借高集成、低功耗、高性能、高可靠性等硬核实力展现,以及在多个项目中实现量产验证,在众多参赛企业中最终脱颖而出,荣获“2023汽车芯片50强”奖项。

“芯向亦庄”2023汽车芯片大赛结果以网络投票加专家评审综合评选得出,专家评审团成员主要来自主机厂与Tier1汽车零部件供应商研发及采购负责人,以及部分业内专家、评审机构专家参与。其中“2023汽车芯片50强”奖项通过先进性、技术可行性、经济可行性、市场认同性四个维度评选,旨在表彰已规模化量产应用的汽车芯片企业。

1.jpg

2.png

随着智能汽车的高速发展,车规级MCU应用需求得以不断增长,整体产业规模逾百亿级美元。极海作为国产车规级MCU领域的供应商代表之一,车规级MCU出货量与市场占有率均保持逐年提升。本次获此荣誉,是市场对极海车规级微控制器的高度认可。未来,极海在汽车电子领域将持续扩充产品线,积极助力国产汽车向上发展。

MCU创新先锋奖

11月23日,第102届中国电子展生态大会暨MCU创新先锋奖颁奖典礼如期举行。本次奖项评审经过网上投票与评委评选两个阶段,综合评选出最终得奖企业。极海车规级MCU凭借以技术创新拓展更多应用实践场景,在众多候选名单中胜出获得“MCU创新先锋奖”称号。

3.png

极海一直坚持以技术创新为先导,并不断提升自身的核心竞争力。我们车规级MCU拥有完善的功能安全与信息安全保障,满足AEC-Q100车规认证、ISO26262 ASILB-D功能安全认证、IATF 16949质量标准要求,并提供量产级生态软件系统,有效保障车规芯片可靠质量和稳定供货。

G32A1445汽车通用MCU应用特点:

  • 40nm先进工艺,Cortex-M4F内核

  • 主频112MHz,Flash 512KB

  • 支持MPU,CSEc,Secure Boot 

  • 工作温度覆盖-40℃~125℃

  • 提供AUTOSAR MCAL驱动软件

  • 主要应用于BMU、T-BOX、BCM、OBC、充电桩、LED车灯、智能座舱、仪表控制、座椅控制器、HVAC暖通空调系统等。

极海目前已与国内多家整车厂、Tier1/2等进行深度合作,在产品定义、迭代升级和应用验证方面充分协同,赋能国产汽车电气化、智能化、网联化、数字化发展与创新。未来,通过不断扩充的车规级产品线与全面的开发服务,我们将赋予汽车电子应用更多优异性能与安全性,推动国产汽车可持续发展。

来源:Geehy极海半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 9

由北京市科学技术委员会、北京市经济和信息化局指导,由北京经开区管委会主办,盖世汽车承办的2023“芯向亦庄”汽车芯片大赛于11月28日在北京亦庄圆满落幕。中微半导体(深圳)股份有限公司(以下简称:中微半导 股票代码:688380)车规芯片BAT32A237系列,以出众性能获评本次汽车芯片大赛“2023汽车芯片50强”荣誉。

1.jpg

2023“芯向亦庄”汽车芯片大赛,旨在加快汽车芯片成熟产品的应用与推广,推动汽车和芯片产业跨界融合、产业链上下游协同发展。大赛共设置四类奖项,进行优秀企业发掘和先进技术解决方案的评选。其中,2023汽车芯片50强评选旨在表彰已规模化量产应用的汽车芯片企业,尤其是拥有产品技术创新引领产业变革升级,兼具优异的市场表现和广泛的用户群体的企业。

中微半导基于在MCU领域22年技术储备和平台化的资源优势,持续构建全球领先的MCU产品组合,并有序推动国产汽车MCU核心自主产品打破国外垄断、通过车规级认证以及逐步批量上车应用。目前,中微半导针对汽车应用的BAT32A2系列,均能满足AEC-Q100 Grade1标准,该系列已拥有BAT32A233、BAT32A237、BAT32A239、BAT32A279四个产品阵容、几十个料号,有效拓展了中微半导汽车芯片全新应用场景。

2.jpg

BAT32A237系列凭借产品可靠性、一致性、安全性、稳定性和长效性等出众表现,获评“2023汽车芯片50强”荣誉。BAT32A237基于Arm Cortex®-M0+内核,工作频率48 MHz,配备128KB Flash,12KB SRAM和1.5KB专用 Data Flash,内置CAN/LIN等多种通讯接口及模拟外设。工作温度-40℃~125℃,适用汽车复杂运行工况和恶劣环境。目前,已经批量进入众多国内知名汽车品牌厂商供应链,在客户端车身域及辅助驾驶域如大灯、组合开关、格栅控制器、AQS传感器、水泵、阀门等项目中广泛应用。

中微半导已建立丰富的车规MCU产品矩阵及高标准的车规质量管理体系,小资源BAT32A233系列具有高性能、支持硬件LIN2.2接口的性能优势,非常适合汽车的门、窗、灯、传感器、控制面板、组合开关等小巧、灵活的部件应用。大资源BAT32A239、BAT32A279系列,Flash多达512KB,SRAM拓展至64KB,集成多达3路CAN 2.0B接口并提供丰富的模拟外设,24-100pin的产品阵容大大扩展了未来智能汽车应用场景。

3.jpg

本次奖项的获得,标志着中微半导车规级芯片已得到市场全面认可。未来,中微半导将结合市场所需,进一步扩大汽车芯片设计资源建设,集中力量开展大算力、高安全芯片前瞻布局,为更多Tier 1供应商及整车厂提供集成化解决方案的平台服务,持续加码高安全等级32位车规级MCU及SoC创新研发,助力国产汽车电子产业高质量发展。

来源:中微半导

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 4

HPM6000 系列 MCU 是来自上海先楫半导体科技有限公司的高性能实时 RISC-V 微控制器,为工业自动化及边缘计算应用提供了极大的算力、高效的控 制能力。上海先楫半导体目前已经发布了如 HPM6700/6400、HPM6300、HPM6200 等多个系列的高性能微控制器产品。

在 HPM6700/6400、6300 系列微控制器上均支持 16 位 ADC 采样和百兆以太网外设。HPM6300 系列支持 3 个 16 位的 ADC 转换器,可以转换来自外部引脚以及芯片内部的模拟信号。ADC 的转换精度设置为 16 位时,最大采样率 2MSPS,ADC 的转换精度设置为12 位时,最大采样率 4MSPS。ADC 支持读取转换模式、周期转换模式、序列转换模式和抢占转换模式。

本文以 HPM6300 开发板为例介绍以 2MSPS 采样率进行 16 位 ADC 采样并将采样数据通过 ENET LWIP TCP 的方式发送到上位机的应用,ADC 采样使用抢占转换模式、PWM触发的方式,ENET LWIP TCP 每次发送 1024 个 16 位采样数据。

该方案通过 PWM 特定时刻触发 ADC 采样和触发 HDMA 转换 ADC 数据,并依靠HDMA 链式模式,做成循环链表,考虑到中断响应占用 CPU 资源,在链式任务中增加状态标识,从而不启用中断,以此达到 ADC 采样及数据转换全自动完成,无需 CPU 参与,且将转换后的数据放到 ILM/DLM,CPU 零等待访问,最终达到性能最优。

详阅请点击下载:《HPM16位ADC+ENET开发案例》

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 35

页面

订阅 RSS - MCU