单片机

如果你还不了解什么是STM32对其Flash的保护,那么今天就来给你讲解一下什么是STM32的Flash保护!

01、什么是Flash?

STM32的FLASH组织结构,可能因不同系列、型号略有不同。比如大家熟悉的STM32F1中小容量一页大小只有1K,而F1大容量一页有2K。

还比如有些系列以扇区为最小单元,有的扇区最小16K,有的128K不等。

通常Flash包含几大块,这里以F40x为例:

  • 主存储器:用来存放用户代码或数据。

  • 系统存储器:用来存放出厂程序,一般是启动程序代码。

  • OTP 区域:一小段一次性可编程区域,供用户存放特定的数据。

  • 选项字节:存放与芯片资源或属性相关的配置信息。

“讲讲STM32单片机Flash的读保护和写保护"

02、什么是STM32对内部Flash的保护?

所有的STM32芯片都会提供对Flash的保护,防止对Flash的非法访问,分为:写保护和读保护。

1、读保护就是大家通常说的“加密”,作用于整个Flash存储区域。如果一旦设置了Flash的读保护,那么单片机内置的Flash存储区就只能通过程序的正常执行才能读出,而不能通过下述方式读出:

(1) 使用调试器(JTAG或SWD);
(2)从内存RAM中启动并执行的程序;

2、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,如果对Flash设置了写保护,那么就无法对Flash进行编程和擦除,而且同时产生操作错误标志。 当出现下图标志的时候,就要检查Flash是否被保护起来了。

“讲讲STM32单片机Flash的读保护和写保护"

03、读保护与写保护的相关效果

当设置读保护与写保护时,其效果如下图所示:

“讲讲STM32单片机Flash的读保护和写保护"

1)flash保护的相关函数

“讲讲STM32单片机Flash的读保护和写保护"

2)STM32如何设置读保护?

我们只需要在程序开头加入“设置读保护”的代码就可以,这样就可以在每次运行代码的时候都检查一下,如果没有开的话就打开,如果开了就跳过。下面是读保护的代码:

“讲讲STM32单片机Flash的读保护和写保护"

当我们在程序的开头执行了上面的代码之后,使用j-link就不能在读出程序了,这样就实现了读保护。

3)如何通过代码解除Flash保护

解除读保护可以下面代码来进行解除,我们为了方便解锁,可以设置一个按键。

“讲讲STM32单片机Flash的读保护和写保护"

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

围观 3341

ADC的种类很多,对应的精度和误差也有很多,本文就来讲讲关于ADC精度和误差的内容。

ADC介绍

ADC:Analog Digital Converter,指模数转换,也就是(电压)模拟量转换成数字量。

大多数MCU中都集成了ADC模块,同时ADC也是在产品开发中使用率较高的一个模块,相信大部分人都使用过ADC这个功能。

在STM32中内置最多四个高级12位ADC控制器(ADC1、2、3、4)。当然,ADC控制器数量多少取决于STM32型号,还有部分STM32具有16位采样的ADC(如STM32F373)。他们提供自校准功能,用于提高环境条件变化时的ADC精度。

我们平时在使用ADC中要求不是很高,可能就没有在于ADC转换的值是否精确。但是,有些特定场合就需要更精确的转换值,那么我们就需要对ADC做更多了解。下面章节带领大家了解相关内容。

ADC误差

在涉及模数转换的应用中, ADC精度会影响整体的系统质量和效率。为了提高此精度,有必要了解与ADC相关的误差。

ADC误差主要包含:ADC自身和环境导致的误差。

1、ADC自身导致的误差

说误差之前,先说下ADC精度,为便于参考,将精度误差表达为1 LSB的倍数:

1 LSB = VREF+ / 2^12

A、偏移误差

偏移误差是第一次实际转换和第一次理想转换之间的偏离。第一次转换发生在数字ADC输出从0变为1时。理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。

仍然是理想情况下,第一次转换发生在0.5 LSB处。用EO表示偏移误差。可通过应用固件轻松校准偏移误差。

正偏移误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

负偏移误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

B、增益误差

增益误差是最后一次实际转换和最后一次理想转换之间的偏离。增益误差用EG表示。

正增益误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

负增益误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

C、微分线性误差

微分线性误差( DLE)为实际步进和理想步进之间的最大偏离。这里的“理想情况”不是指理想传输曲线,而是指ADC分辨率。

理想情况下, 1 LSB的模拟输入电压变化量应导致数字代码变化。如果需要大于1 LSB的模拟输入电压才能导致数字代码变化,将观察到微分线性误差。因此, DLE对应于从一个数字代码变为下一个数字代码所需的最大额外电压。

“单片机中ADC采集都存在哪些误差?"

D、积分线性误差

积分线性误差为任何实际转换和端点相关线间的最大偏离,用EL表示ILE。

端点相关线可以定义为A/D传输曲线上连接第一次实际转换与最后一次实际转换的线。EL是指与每一次转换的这条线的偏离。因此,端点相关线对应于实际传输曲线并且与理想传输曲线不相关。

“单片机中ADC采集都存在哪些误差?"

E、总未调整误差

总未调整误差( TUE)为实际和理想传输曲线间的最大偏离。此参数指定可能发生的会导致理想数字输出与实际数字输出之间最大偏离的总误差。TUE是记录到的任何输入电压的理想预期值与从ADC获得的实际值之间的最大偏离。

“单片机中ADC采集都存在哪些误差?"

2、ADC环境导致的误差

A、参考电压噪声

由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的任何噪声都会导致转换后数字值的变化。在某些封装中, VDDA模拟电源被用作参考电压( VREF+),因此VDDA电源的质量会影响ADC误差。

B、参考电压/电源调节

电源调节对于ADC精度十分重要,因为转换结果是模拟输入电压与VREF+值之比。
当连接到VDDA或VREF+时,如果这些输入上的负载及其输出阻抗导致电源输出下降,将在转换结果中产生误差。

C、外部参考电压参数

当使用外部参考电压源( VREF+引脚上)时,该外部参考源有一些重要参数。必须考虑三个参考电压规格:温度漂移、电压噪声和长期稳定性。

D、模拟输入信号噪声

在采样时间内,小而高频率的信号变化可导致较大转换误差。此噪声由电气设备(例如电机、发动机点火、电源线)生成。它增加了不需要的信号,因此会影响源信号(例如传感器)。这样一来,导致ADC转换结果不准确。

E、最大输入信号幅度的ADC动态范围匹配不佳

为获得最高ADC转换精度, ADC动态范围必须与待转换信号的最大幅度相匹配。

我们假设待转换信号在0 V与2.5 V之间变化,并且VREF+等于3.3 V。如下图,有部分未使用的ADC转换范围,也会使转换后信号精度下降。

“单片机中ADC采集都存在哪些误差?"

如何提高ADC采集数据准确性

这个问题之前写过相关的内容,只是没有单独提出来说,这里汇总一下。

1、减少ADC相关误差的影响

上面描述了“ADC自身导致的误差”,使用STM32 ADC自校准功能或通过微控制器固件可以轻松补偿偏移误差和增益误差。

之前在分享的代码中有提到,比如通过软件校正:

ADC_StartCalibration(ADC1);

2、使外部环境误差最小化

A、参考电压/电源噪声最小化

也就是在VREF和VDDA引脚连接外部去耦电容。

“单片机中ADC采集都存在哪些误差?"

B、模拟输入信号噪声消除

通过添加外部RC滤波器以消除高频。

C、将ADC动态范围与最大信号幅度进行匹配

也就是将参考电压范围匹配采样电压(当然,需要有参考电压引脚的芯片才行)。

“单片机中ADC采集都存在哪些误差?"

同时,也可以使用放大器针对ADC范围调整输入信号范围:

“单片机中ADC采集都存在哪些误差?"

D、温度影响补偿

第一种方法是完整描述偏移和增益漂移特性,并在存储器中提供查询表,以便根据温度变化修正测量值。此校准方法需要额外的成本和时间。

第二种方法包括使用内部温度传感器和ADC看门狗,以在温度变化达到给定值时重新校准ADC。

E、优化PCB布局

  • 将模拟和数字布局分开
  • 隔离模拟和数字电路电源
  • 对供电和接地使用单独的PCB层

3、提高精度的软件方法

A、平均采样

·平均会降低速度但可以提高精度

B、数字滤波(抑制DC值中的50/60 Hz噪声)

·设置适当的采样频率(这种情况下,从计时器触发十分有用)。
·对采样数据执行软件后处理(例如,对50 Hz噪声及其谐波抑制进行组合滤波)。

C、AC测量的快速傅里叶变换( FFT)

·此方法可以显示被测信号中的谐波部分。
·由于使用了更强的计算能力,因此速度较慢。

D、ADC校准:偏移、增益、位权重校准

·ADC校准可减少内部ADC误差。但是,必须知道内部ADC结构。

E、使CPU生成的内部噪声最小化

应用设计必须确保

·ADC转换期间来自微控制器的干扰尽可能小。
·使采样和转换期间的数字信号变化量最小化(数字静默)。

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

围观 630

AVR® DB MCU系列以AVR内核的低功耗性能为基础,提供一系列独立于内核的外设(CIP)和丰富的智能模拟产品组合。在今天推荐的视频中,我们将对该系列产品做个介绍。

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

围观 19

很多初学者觉得自己学的东西很基础,担心今后实际工作用不到。有初学者问了这样的问题:单片机真正开发产品和学习的时候有什么差别,平时学的LED、ADC这些东西,在实际项目中会用到吗?

虽然技术更新迭代很快,但有很多基本的技术,仍然在实际项目中会用到,今天就拿LED为例来说说吧。

LED有哪些作用?

别小看LED,它在实际生活中应用很广泛的。

首先就是以LED为光源的项目,比如呼吸灯、广告灯、LED显示屏等,这类控制LED亮灭(闪烁),或者亮度渐变。

再次就是LED背光灯,像液晶背光灯、按键背光灯等,这种也是需要控制LED变化的。我之前做过有按键的项目,按键背光灯需要渐变、配合音效控制LED不同频率闪烁,目的就是为了达到更好的体验效果。

再再次,LED作为指示灯,电源指示灯、状态指示灯,这种就和接近初学者的学习时的LED灯,但这种却在项目中很常见。

“单片机项目中LED的重要性"

拿状态指示灯来说,一个项目的LED状态指示灯可以直观明了的指示设备的运行状态,比如:运行、故障、待机、死机等常见状态。通过RGB,或者红黄绿不同颜色LED组合,可以实现更多状态的指示。

下面针对LED状态灯,说几点细节的内容。

LED状态灯实现

这里结合代码为大家分享一些项目中常见的LED状态灯的实现方法。

1、单色LED运行状态指示灯

通过闪烁(一亮一灭)指示设备运行的状态的指示灯,一个关键作用:设备有没有死机。

很多产品中都会用到,你买一个开发板,提供的综合例程也基本都有。

裸机情况下(一般状态机),在某一个状态实现LED闪烁:

int main(void)
{
  //系统初始化
  while(1)
  {
    //do something
    switch(State)
    {
      case 状态1:
        //do something
      break;

      case 状态2:
        //do something
      break;
      ·
      ·
      ·
      case 状态灯:
        ED_TOGGLE();  //LED闪烁
      break;
    }
  }
}

RTOS情况下,新建一个状态灯线程,在线程里面直接控制即可:

void StatusLight_Task(void *pvParameters)
{
  static TickType_t xLastWakeTime;
  //初始化
  xLastWakeTime = xTaskGetTickCount();

  for(;;)
  {
    //do something

    LED_TOGGLE();                       //LED闪烁
    vTaskDelayUntil(&xLastWakeTime, 500);
  }
}

2、单色LED渐变

LED渐变在生活中其实也有一些场景在用,呼吸灯、键盘等,其实原来也很简单,就是控制LED亮度。

控制方法有很多,电压、PWM都能达到控制LED亮度的效果。当然,现在还有控制LED渐变的专有芯片。

“”单片机项目中LED的重要性"

但是,对于单片机项目来说,单片机自身就能实现,如果单独用一个芯片,就显得有点多余。

使用DAC输出模拟量可以实现,但如果多路就不现实,因此这种方法不常见。

常见的是PWM控制IO高低电平(从而控制电压),这种对于单片机来说有两种方法:

  • 定时器硬件PWM

  • 控制GPIO口高低电平

a、定时器硬件PWM

一个定时器输出PWM波形的同时,还需要一个定时器定时更新PWM输出占空比(修改亮度)。

b、控制GPIO口高低电平

这个方法就比较简单,控制IO口高低电平时间,只是这个时间需要结合整个项目业务逻辑(特别是裸机情况下),不能出现“卡机”情况。

当然,在RTOS情况下,业务逻辑就比较简单,单独一个线程:

LED_ON();
vTaskDelay(TimesON);

LED_OFF();
vTaskDelay(TimesOFF);

这里TimesON 和 TimesOFF是需要结合项目情况修改的变量(比如渐变时间)。

3、多色LED,多种运行状态

一个设备在没有显示屏指示状态的时候,通过LED指示状态也是一种方法,比如:红、黄、绿三色,分别常灭、常亮、闪烁三种状态。

这种相对第一种单色固定状态要复杂一点,但实现起来也不难,方法也有很多。

这里分享一些思路:创建一个线程,一个结构体,轮询各种LED状态,根据应用修改其各种状态,以及闪烁时间等。

LED状态结构体:

typedef struct
{
  uint8_t  Mode;                  //模式

  uint8_t  Status;                //当前状态
  uint16_t OffTimes;              //灭时间
  uint16_t OnTimes;               //亮时间(ms)
  uint16_t Counter;               //计数(计时)

  void (*OffFun)(void);           //灭函数接口
  void (*OnFun)(void);            //亮函数接口
}SL_TypeDef;
/* 状态灯 */

LED状态主线程:

void StatusLight_Task(void *pvParameters)
{
  static TickType_t xLastWakeTime;
  xLastWakeTime = xTaskGetTickCount();

  for(;;)
  {
    SL_Scan(&sSLG_Structure);      //红灯
    SL_Scan(&sSLY_Structure);      //黄灯
    SL_Scan(&sSLR_Structure);      //绿灯

    vTaskDelayUntil(&xLastWakeTime, SL_TASK_PERIOD);
  }
}

这里结构体也是方便统一管理,其中SL_Scan浏览(扫描)函数的参数通过传递结构体指针,是为了方便读取并修改其中变量。

当然,SL_Scan浏览函数具体实现,就与你应用有关:

static void SL_Scan(SL_TypeDef *SL_Struct)
{
  /* 常灭模式 */
  if(SL_MODE_OFF == SL_Struct->Mode)
  {
    SL_Struct->Status = SL_STATUS_OFF;           //状态置为"灭"
    SL_Struct->OffFun();                         //灭灯
  }
  /* 常亮模式 */
  else if(SL_MODE_ON == SL_Struct->Mode)
  {
    SL_Struct->Status = SL_STATUS_ON;            //状态置为"亮"
    SL_Struct->OnFun();                          //亮灯
  }
  /* 闪烁模式 */
  else if(SL_MODE_FLICKER == SL_Struct->Mode)
  {
    /* 在灭状态 */
    if(SL_STATUS_OFF == SL_Struct->Status)
    {
      SL_Struct->Counter++;
      if(SL_Struct->Counter >= SL_Struct->OffTimes)
      {
        SL_Struct->Counter = 0;
        SL_Struct->OnFun();                      //亮灯
        SL_Struct->Status = SL_STATUS_ON;        //状态置为"亮"
      }
    }
    /* 在亮状态 */
    else if(SL_STATUS_ON == SL_Struct->Status)
    {
      SL_Struct->Counter++;
      if(SL_Struct->Counter >= SL_Struct->OnTimes)
      {
        SL_Struct->Counter = 0;
        SL_Struct->OffFun();                     //灭灯
        SL_Struct->Status = SL_STATUS_OFF;       //状态置为"灭"
      }
    }
    else
    {
      SL_Struct->Status = SL_STATUS_OFF;         //状态置为"灭"
    }
  }
  /* 未知模式 */
  else
  {
    SL_Struct->Status = SL_STATUS_OFF;           //状态置为"灭"
    SL_Struct->OffFun();                         //灭灯
  }
}

最后

以上的控制LED的状态,其实是一个项目中很小的一个模块,还有更复杂的LED实现和控制方法,相信做过这一块的同学就比较了解。

当然,LED在项目中是微不足道的一个模块,但是,如果针对莫个人设计一块LED的产品,那就意义非凡了。

“单片机项目中LED的重要性"

“单片机项目中LED的重要性"

上面这种,相信很多暖(zhi)男都做过,就是不知道,最终那个女孩子感动了没有?如果感动了,那这个LED项目就是一生中非常重要的项目。

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

围观 62

我们学习单片机的目的,就是为了进行嵌入式产品的开发。要想学好单片机,首先就得对流程有一个整体了解。

本文,先简要介绍一下单片机应用系统的开发流程。

单片机系统开发流程

“梳理单片机学习方法、产品开发流程"

上图是单片机系统开发流程框图。

1、明确任务

分析和了解项目的总体要求,并综合考虑系统使用环境、可靠性要求、可维护性及产品的成本等因素,制定出可行的性能指标。

2、划分软、硬件功能

单片机系统由软件和硬件两部分组成。在应用系统中,有些功能既可由硬件来实现,也可以用软件来完成。硬件的使用可以提高系统的实时性和可靠性;使用软件实现,可以降低系统成本,简化硬件结构。因此在总体考虑时,必须综合分析以上因素,合理地制定硬件和软件任务的比例。

3、确定希望使用的单片机及其他关键部件

根据硬件设计任务,选择能够满足系统需求并且性价比高的单片机及其他关键器件,如A/D、D/A转换器、传感器、放大器等,这些器件需要满足系统精度、速度以及可靠性等方面的要求。

4、硬件设计

根据总体设计要求,以及选定的单片机及关键器件,利用Protel等软件设计出应用系统的电路原理图。

5、软件设计

在系统整体设计和硬件设计的基础上,确定软件系统的程序结构并划分功能模块,然后进行各模块程序设计。

单片机程序设计语言可分为三类:

  • 机器语言 :又称为二进制目标代码,是CPU硬件唯一能够直接识别的语言(在设计CPU时就已经确定其代码的含义)。人们要计算机所执行的所有操作,最终都必须转换成为相应的机器语言由CPU识别、控制执行。CPU系列不同,其机器语言代码的含义也不尽相同。

  • 汇编语言 :由于机器语言必须转换为二进制代码描述,不便于记忆、使用和直接编写程序,为此产生了与机器语言相对应的汇编语言。用汇编语言编写的程序执行速度快,占用存储单元少,效率高。

  • 高级语言 :高级语言具有很好的可读性,使程序的编写和操作都十分方便,目前广泛使用的高级语言是C51。

机器语言 :又称为二进制目标代码,是CPU硬件唯一能够直接识别的语言(在设计CPU时就已经确定其代码的含义)。人们要计算机所执行的所有操作,最终都必须转换成为相应的机器语言由CPU识别、控制执行。CPU系列不同,其机器语言代码的含义也不尽相同。

汇编语言 :由于机器语言必须转换为二进制代码描述,不便于记忆、使用和直接编写程序,为此产生了与机器语言相对应的汇编语言。用汇编语言编写的程序执行速度快,占用存储单元少,效率高。

高级语言 :高级语言具有很好的可读性,使程序的编写和操作都十分方便,目前广泛使用的高级语言是C51。

汇编语言和高级语言都必须被翻译成机器语言之后才能被CPU识别。

6、仿真调试

软件和硬件设计结束后,需要进行进行进入两者的整合调试阶段。为避免浪费资源,在生成实际电路板之前,可以利用Keil C51和Proteus软件进行系统仿真,出现问题可以及时修改。

7、系统调试

完成系统仿真后,利用Protel等绘图软件,根据电路原理图绘制PCB(Printed Circuit Board)印刷电路板图,然后将PCB图交给相关厂商生产电路板。拿到电路板后,为便于更换器件和修改电路,可首先在电路板上焊接所需芯片插座,并利用编程器将程序写入单片机。

接下来,将单片机及其他芯片插到相应的芯片插座中,接通电源及其他输入、输出设备,进行系统联调,直至调试成功。

8、测试修改、用户试用

经测试检验符合要求后,将系统交给用户试用,对于出现的实际问题进行修改完善,系统开发完成。

单片机学习方法探讨

单片机学习的过程应该是一个循序渐进、不断学习、不断积累的过程,大致分为三个阶段。

第一阶段:掌握开发单片机的必备基础知识

首先是熟练掌握单片机的基本原理,虽然现在单片机厂商众多,但各家单片机的基本结构和原理都比较相近,例如内核结构、内存分配、中断处理、定时计数、串行通信、端口复用等一些最基本的概念和原理。

除此之外,我们还需要学习模拟电子、数字电子、C语言程序开发以及原理图和PCB(Printed Circuit Board,印刷电路板)设计等知识。只有扎实的掌握了这些知识,在进行系统开发的时候,才能顺利地进行原理设计、PCB布板、程序编写、系统联调等工作。相关文章:如何成为高级嵌入式硬件工程师?

第二阶段:研究其他单片机功能、特点

在掌握好一款单片机原理和应用的基础上,开始学习其他各家单片机,了解其独有的功能和特点。

例如实际工作中若客户要求低成本,那我们可以选用和泰、义隆、华邦等这类台湾芯片;如果客户要求工业级的性能,那么最好从PIC、NEC、飞思卡尔、NXP等这些欧美和日式单片机中选择;若要进行功耗的开发,选用MSP430系列应该有一定优势;在进行测量仪器设计的时候,C8051和AduC842这类数模混合芯片又显得比较实用。

另外,平时要注意技术积累。在项目开发过程中将一些常用的接口程序和控制算法整理成模块或者函数,日后若在其他的项目开发中有同样或者接近的需求时,原程序可以直接或者进行少量改动后使用,这样一来会节约大量开发成本。

第三阶段:工作项目中积累经验

在实际的项目开发过程中,不断深入研究单片机应用技术,不断积累应用行业的专业知识。

有了扎实的单片机应用相关的基础知识,并且熟悉掌握了几款不同类型单片机的开发方法后,对于各种实际的应用项目,往往还需要理解和掌握外围电路相关的原理和分析方法,并结合实际的应用背景,综合考虑各种因素,才能设计出性能最优、结构最合理的单片机应用系统。

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

围观 46

为给汽车运行和最终用户提供可靠保障,安全一直是汽车应用中的头等大事。Microchip Technology Inc. (美国微芯科技公司)现可提供全新认证的功能安全包,让工程师能够按照ISO 26262功能安全标准开发产品。Microchip正式发布适用于dsPIC33C数字信号控制器(DSC)、PIC18和AVR®单片机(MCU)的ISO 26262功能安全包,加快开发针对ASIL B级和ASIL C级安全等级和认证工作的安全关键型设计。

“Microchip发布适用于dsPIC<sup®、PIC18和AVR®单片机的全新ISO 26262功能安全包">

dsPIC33C数字信号控制器的完整功能安全生态系统包括:

  • 通过AEC Q100 0级认证的功能安全就绪的dsPIC33C数字信号控制器,配备专门的硬件安全功能

  • SGS TÜV Saar认证的ASIL B Ready失效模式、影响及其诊断分析(FMEDA)报告和功能安全手册(FSM)

  • 德国莱茵TÜV认证的功能安全诊断库,适用于最高至ASIL C的设计

  • 一项功能安全参考应用,显示开发合规设计所需的步骤,以及为(ASIL B或ASIL C)合规必须产生的附属功能

  • 各种功能安全分析报告和认证报告,帮助简化合规和认证

PIC18和AVR单片机的完整功能安全生态系统包括:

  • 通过AEC Q100 1级认证的功能安全就绪的具有灵活数据速率的控制器局域网(CAN FD)的PIC18-Q84单片机和具有本地互连网络(LIN)接口的AVR DA单片机,二者均为电容式触摸传感器提供硬件支持

  • SGS TÜV Saar认证的ASIL B Ready失效模式、影响及其诊断分析(FMEDA)报告和功能安全手册(FSM)

  • 功能安全诊断库

  • ASIL B Ready证书和认证报告,帮助简化合规和认证

无论工程师是ISO 26262功能安全方面的新手还是经验丰富的专家,Microchip都拥有成熟的经验和解决方案,可帮助他们满足功能安全要求并对设计进行认证,同时最大限度地降低成本、风险和开发时间。借助以下列出的功能安全包,以及安全文件随附的开发工具,工程师便可以开发出合规的系统。

Microchip提供三款ISO 26262功能安全包供购买,为不同专业水平以及处于评估和设计周期不同阶段的客户提供帮助。

  • 功能安全基础包提供基本资源,如ASIL B Ready认证的失效模式、影响及其诊断分析和安全手册,供客户开始评估目标功能安全水平和设计安全关键型的汽车应用。

  • 功能安全初级包提供ASIL B Ready认证的失效模式、影响及其诊断分析和安全手册,一款参考应用和符合ASIL C的诊断库,帮助设计者了解符合ISO 26262的开发过程以及为了合规必须生成的报告。

  • 功能安全豪华包为新手和经验丰富的专家提供了完整的解决方案,从而简化了安全关键型汽车应用的设计和认证。除了初级包所含的产品外,豪华包还包括带源代码的认证诊断库以及针对ASIL C的设计的相关安全分析报告。

除了功能安全包外,Microchip还为其MPLAB®开发工具生态系统提供了经TÜV SÜD认证的设计工具包,用于简化工具资质认证。其中包括经TÜV SÜD认证的MPLAB XC功能安全编译器和TÜV SÜD证书、编译器的功能安全手册以及编译器、MPLAB X集成开发环境(IDE)、MPLAB代码覆盖和所有MPLAB开发生态系统程序的安全计划和完整的工具分类和资质认证报告。Microchip还提供功能安全就绪的CAN FD和LIN收发器及包括电压监控器在内的其他配套器件,这些器件可与功能安全就绪的数字信号控制器和单片机一起用于各类汽车应用。

Microchip MCU16业务部副总裁Joe Thomsen表示:“随着汽车的复杂程度和电子产品日益增加,汽车设计中的功能安全要求也变得愈发严苛。为了帮助我们的客户以最小的风险和预算快速开发安全应用,Microchip极大地拓展了认证安全文档和诊断自检库、开发工具和技术支持的业务范围。作为汽车市场的主要供应商,我们将继续扩大我们的功能安全支持,助力我们的客户取得竞争优势。”

德国莱茵TÜV集团功能安全和网络安全认证机构负责人Thomas Steffens表示:“作为功能安全认证机构,德国莱茵TÜV集团提供与ISO 26262和IEC 61508相关的独立审核、验证、评估和认证服务,为质量和安全提供支持。根据我们基于ISO 26262认证计划进行的评估结果,我们确认Microchip dsPIC33C数字信号控制器系列的安全诊断库符合ASIL C的要求,因此该诊断库可用于针对ASIL C的与汽车安全相关的应用。”

开发工具

已经通过TÜV SÜD认证的MPLAB XC16和MPLAB XC8功能安全编译器(SW006022-FS和SW006021-FS)、MPLAB代码覆盖工具(SW006026-COV)、MPLAB X IDE、MPLAB开发生态系统调试器/编程器和安全文档包全面支持ISO 26262功能安全就绪的dsPIC33C数字信号控制器,以及PIC18和AVR单片机,从而让工具资质认证工作变得更加轻松。

供货

如需了解更多有关dsPIC33C数字信号控制器(DSC)功能安全包的详细信息,请访问:www.microchip.com/dsPIC33-ISO26262

如需了解有关ASIL B Ready的PIC和AVR单片机的详细信息,请访问:www.microchip.com/PIC-AVR-ISO26262

Microchip Technology Inc. 简介

Microchip Technology Inc.(纳斯达克股市代号:MCHP)是致力于智能、互联和安全的嵌入式控制解决方案的领先供应商。其易于使用的开发工具和丰富的产品组合让客户能够创建最佳设计,从而在降低风险的同时减少系统总成本,缩短上市时间。Microchip的解决方案为工业、汽车、消费、航天和国防、通信以及计算市场中12万多家客户提供服务。Microchip总部位于美国亚利桑那州Chandler市,提供出色的技术支持、可靠的产品交付和卓越的质量。详情请访问公司网站www.microchip.com

注:Microchip的名称和徽标组合、Microchip徽标、AVR、dsPIC及MPLAB均为Microchip Technology Incorporated在美国和其他国家或地区的注册商标。在此提及的所有其他商标均为各持有公司所有。

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

围观 15

1、某天某日某产房,你诞生了(power up , 上电运行),结果你不哭,医生把你提起来,屁股上狠狠一巴掌,你哇哇大哭(reset, 复位成功),护士给你检查,看有没有传染病(EMI测试),然后打预防针(绝缘处理),没有问题后作记录(QC pass),你的父母来接你回去(客户验收)。

回家后你有了自己的新床(PCB),家里条件好,给你铺六张毛巾被(六层板),可惜上面小窟窿太多(过孔太多),父母把奶瓶给你,你终于获得了外部能量 (Power Supply),否则你的自身能量会耗尽(Battery too Low)。

每天清晨,你尚在休眠模式(IDLE)下运行时,一阵铃声吵醒你(wake up,激活),你感觉很饿,于是大哭(Alarm Ring),父母马上来喂你,你不哭了(discard Alarm,解除报警),但很不争气地撒尿了(current output,电流输出)。

父母给你收拾完,开始教你说话,但你的大脑还很简单(initial procedure,初始化程序),后来你开始学走路,结果步调不稳(步进电机驱动错误),一跑就坐到地上了(RUN Fail,运行失败)。好在你的父母很耐心地教你(调试阶段),你终于可以走了(调试通过)。

你逐渐长大,吃的也多了,给你的食物老是不够(功耗太大,power waste too heavy),你偷偷打开冰箱狂吃一顿,结果吃的太多不消化了(过载,overload),差点绷断肠子(route burn,烧断走线),还好你终于没事了,不敢吃那么多了(reduce power waste,降低功耗)。

后来你上学了,接受好多新的知识(new procedure),但是没有实际经验(未调试的),结果工作时发现那些知识不能照用,还要更多地学习别人的经验(Copy procedure,拷贝程序),不过你还是不断发现臭虫(BUG),只好请教灭虫专家来解决(调试高手)。

2、你的工作稳定了,你开始进入日复一日的工作状态(Endless Loop),你很烦,于是老是出错误(out of order,程序跑飞),结果老板开始盯紧你(软件陷阱),你被当场抓住修理一通,马上老老实实干活了(程序恢复)。

终于有个姑娘闯入你的生活(interrrupt,中断),使你忘记别的一切(优先级最高),你完全浸入爱河(进入中断服务子程序),大手大脚地花钱 (Large 模式),很快就结婚了(双CPU运行),你马上发现你的储蓄不够用了(RAM resource too low),需要精简节约(compact模式),婚假也结束了,你又回去上班了(RETI,退出中断服务程序)。

后来日子越过越 枯燥,老婆批评你脑袋不够用(MIPS太低),不会算计(没有浮点运算能力),你对她的话一耳进一耳出(FIFO),你对老婆也爱理不理了(优先级降低),这时一个小姑娘勾引你,你马上动心(抗干扰能差),幸好你老婆及时发现,严防紧守,你放弃了企图(丢弃乱码)。

3、日子恢复平静,一晃几十年过去,你发现 你身边的年轻人都用全新的知识装备着,他们都是在ARM大学毕业的,开着Linux的车子,大把花着票子(海量存储)。

你低头看自己,发现自己只是在51大学毕业,开着汇编的破车,手里钱少的可怜(256 字节内存)。你被迫到人才市场找工作,发现自己已经是多年前的旧货,降价处理了,你这样的都是一麻袋一麻袋的。

你长吁短叹,终于选择退休,靠养老金活着, 开始疾病缠身,你的牙齿有了问题(IO口驱动力下降),你说话不清楚(TXD发射失败),耳朵也不灵(RXD接收不灵),你的胃也不好,存不住食物 (ALE锁存失败),你终于因心肌梗死送到医院,医生手持电击手柄给你通电(高压测试),但你无法苏醒(复位失败),医生只好拔掉你的输液管(关闭电源),你看了这个乱七八糟的世界最后一眼,终于POWER DOWN了。

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

围观 54

页面

订阅 RSS - 单片机