stm32看门狗,ecu看门狗故障怎么排除

伏羲号

stm32看门狗,ecu看门狗故障怎么排除?

看门狗主要使用场景,一是外围复杂环境导致的未知的问题,二是应对未知的软件设计缺陷。 复杂环境导致的问题,引发的出错问题,程序跑飞,stm32会出发fault,你是可以设置复位。 但是软件设计缺陷,比如某个地方因为等待某个资源,发生死锁也好,其他问题也好,导致最终工作不正常,而在测试中未测试发现,那这时候看门狗,至少还能让你的程序复位重来,可以正常工作部分情况,也方便进行一些挽救。

stm32看门狗,ecu看门狗故障怎么排除

可靠性稳定性最好的mcu?

CS32F030/031荣获2020年度最佳国产MCU产品奖

高可靠信号链MCU硬实力展示

基本特性:

◆ 内核ARM Cortex-M0 48MHz

◆ Memory:64K Flash,8K SRAM

◆ 工作温度:-40~105℃(环境温度);-40~125℃(结温)

◆ 工作电压:2.0~5.5V,支持备用电池独立供电

模拟特性:

◆ 12bit 1MSPS ADC, INL低至1.2LSB,输入信号隔离-100dB

◆ 内部温度传感器:±2℃

◆ 内部温度基准:60ppm/℃

可靠性:

◆ 关键寄存器保护,防止关键寄存器误改写

◆ Flash存储保护,支持CRC和正反码校验

◆ SRAM存储保护,支持硬件奇偶校验

◆ 时钟保护,外部时钟失效时,自动切换为内部时钟

◆ 支持独立看门狗FWDT和窗看门狗WWDT

◆ ADC可靠测量,通过模拟窗看门狗(AWWDT)检测ADC输入

◆ IO电平自检,通过读入IO状态进行IO功能自检

◆ 高温可靠性,集成±2℃温度传感器,可检测芯片温度并进行保护,防止高温失效;环境温度105℃,结温125℃;

◆ 抗电磁干扰,IO耐压6V,Latchup电流>200mA,实测600mA,MM ESD》±4kV,实测±8kV

精准!可靠!CS32F031被评为“2020年度最佳国产MCU产品”

硬核中国芯评选颁奖盛典

“硬核中国芯”是一项聚焦国产芯片硬核实力的评选,力争挖掘国内半导体产业“硬核”产品,经过四个月的激烈角逐,以线上20万+工程师在线评分数据为基础,线下行业专家评审团推荐/评分,芯海科技从150余家中国芯企业中脱颖而出,凭借高可靠性、高性能的32位工业级MCU CS32F030/031,一举拿下2020年度最佳国产MCU产品奖!该产品已获得手机、工业仪表、汽车电子等头部客户的认可,并实现百万级出货。芯海科技作为集感知、计算、控制于一体的全信号链芯片设计企业,专注于高精度ADC、高性能MCU、测量算法以及物联网一站式解决方案的研发设计。未来,我们将持续深耕信号链芯片领域,充分发挥ADC+MCU双平台优势,持续推出更多硬核“中国芯”!

stm32数组越界一定会进硬件错误中断吗?

stm32数组越界一定会进硬件错误中断的。可以从以下几个方面查找原因:

1. 意外中断。

是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象2. 中断变量处理不妥。

若定义某些会在中断中修改的全局变量,这时要注意两个问题:

首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4. 无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制; 5. 看门狗没有关闭。

有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;6. 堆栈溢出。

最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。

当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。

如何学习单片机?

1.Verilog HDL描述

可综合电路Verilog HDL语言是对已知硬件电路的文本描述。所以编写前:

对所需实现的硬件电路“胸有成竹”; 牢记可综合Verilog HDL与电路结构一一对应的关系; 确认电路指标是什么:性能?面积? 硬件思维方式,代码不再是一行行的代码而是一块一块的硬件模块;

达到以上几点,就可以写出行云流水般的高质量代码。关于代码与硬件电路的对应关系,参见如下图片,引用自Synopsys官方文档和几本参考书:

2、自动化生成代码如果一定要有奇淫技巧的话,那么代码自动化生成技术就一定可以配得上这个称号。

近十年来,数字集成电路规模和复杂度飞速提高。这给数字集成电路工程师带来了不仅是脑力上的劳动的增加,更多是体力重复性工作的增多。传统的手工代码的编写存在很多弊端。

首先对于模块的代码工程师,要面对许多设计文件。而这些文件之间可能相互不一致,给代码的编写带来了很多的困扰。

其次,代码工程师需要将这些文件中的很多设计信息体现在代码中,其中一些信息是重复性的誊写。这不仅带来了很多枯燥复杂的工作量而且人工参与过多也容易引入很多粗心带来的错误。

再次,由于各个模块连接信号之多导致信号文件的手写工作量很大。每个信号文件小则几千行大则上万行信息。而且一旦有信号连接的变动需要相应修改多个模块的信号文件。

最后,如果设计文件改动相应的设计文件很容易出现哪几处忘记改动的问题。

而Perl脚本语言又有着强大的处理文本的能力。将脚本语言应用于数字电路设计中,作为设计文档和EDA工具的黏合剂,能够大大增加设计的速度。

具体方法为:使用脚本语言从设计文档中提取有用的信息来生成想要的Verilog HDL代码,从而大大减少了IC设计者的工作量,并提高了代码的质量。其好处有: (1)很好的设计一致性:保证了设计概念一旦变动即设计文档稍加修改,对应的Verilog HDL代码就会相应的改变,不需要工程师手动改变代码。 (2)兼容性强:该自动生成代码工具中设置了一个配置文件,供设计工程师的配置修改。对于不同的项目,通过修改配置该文件可以直接是代码相应变化,有一定的灵活性。此外,该自动生成代码工具已经应用于两个以上项目中,实践证明有很好的兼容性。 (3)代码维护方便:对于设计代码的更新或升级,只需要重新运行下该工具即可,不需要一点点该写代码。 (4)使用简单:将很多脚本集成在一起,使用工具时只需要运行一条命令即可。 本文将举一个Perl语言在代码自动生成中的应用实例,下图为一SoC芯片中全芯片的时钟控制电路框图:

时钟控制模块实现配置PLL参数、选择输出时钟源、时钟分频、时钟门控、bank切换、输出时钟等功能。3G、4G是系统通讯单元,向时钟控制单元申请时钟。PLLs是时钟源,是时钟控制单元的输入。 时钟控制单元有七大主要模块,分别为时钟源控制模块、bank切换模块、分频模块、时钟门控模块、多路选择器模块、寄存器、3G4G时钟握手模块。时钟源控制模块控制时钟源的大小、开关。bank切换模块使时钟控制单元能正常工作在不同的电压下。

时钟控制单元的的工作机理如下:首先,外部模块向时钟控制单元请求时钟,并修改并写寄存器状态;时钟源控制单元根据寄存器中的内容配置时钟源Plls,并提供了所有的时钟源。然后,分频器完成这些时钟源预分频的操作,并将其作为多路选择器的时钟源。而多路选择器则从输入的时钟源中选择输出主时钟。 主时钟通过分频模块产生所有的分频使能信号,这个过程中,需根据寄存器所配置的分频数来输出不同的频率的时钟。同时,根据系统的实时需求,通过由SPCU控制的bank选择器完成门控时钟的实现,降低系统的功耗。

以上是时钟控制模块的功能分析,那么如何通过代码自动生成技术来实现呢? (1)首先,我们把这些模块梳理下,形成一个自顶向下的层次结构,如下图。如图中所示,顶层模块完成对底层模块的连接,底层模块实现时钟控制单元的功能。

针对代码自动生成问题,对于顶层模块来说,承担的功能是自动地将底层数十个模块连接起来。对于底层模块来说,需要根据不同的功能定制需求,来自动化地生成所有功能性的代码,然后被顶层调用和连接。这样的话,就存在两个问题:[1]自动生成顶层模块?[2]自动生成底层模块?

(2)顶层模块:通常来说,对于一个复杂的SoC芯片,会有万数量级的信号需要进行匹配和连接。而能够自动生成的信号文件中的信号连接有两个特点:一是信号命令规律性强二是信号的连接关系可以从设计文件中体现。满足了这两点,便可以实现信号文件的自动化。

(3)底层模块此处即可体现Perl脚本强大的数据处理功能,针对该问题,将脚本划分为三类:提取脚本、生成脚本和集成脚本三种。提取脚本用来从输入文件中提取有用的设计信息到存储单元中;生成脚本从存储单元获得有用信息来生成各个功能模块的代码;集成脚本将所有的脚本集成在一个脚本里,方便统一化使用。以下是代码生成的脚本流程图:

如图所示,输入的文件都是excel和文本形式,Perl脚本首先读取技术文档,从中解析出时钟模块所需的连接、频率、时钟域等信息,基于此信息建立一个数据库。然后,根据实际芯片的具体需求,即配置文件,生成相应的自动化控制模式和需求。 最终,依据配置文件和数据库,完成所有所需verilog代码的生成。需要注意的是,并不是所有的代码都可以自动生成,有些结构特殊的电路,只能通过手工编写来完成。所以,自动编写通常完成较为规整的、有规律性的代码,手工书写作为补充。这样即可保证得到高质量的代码。

控制卫浴单片机工作几个小时会偶发重启?

题目的描述:单片机产品在工作的时候,上电后是正常工作的,但是工作了几个小时后,偶尔会出现单片机重启的现象。从描述可以判断出,电路在大多数的时间里工作是正常的,但是偶尔会出现单片机重启故障,而电源是稳定的。所以可以判断出硬件电路是正常的。那么问题可能是程序本身的问题或者是有干扰源。

1 可能存在干扰

可能有干扰源存在,而该干扰源可能不是有规律的干扰。单片机一般都具有复位引脚,要么高电平复位,要么低电平复位。比如STM32系列是低电平复位,51单片机是高电平复位。可以将单片机复位引脚飞线,使用示波器捕捉其引脚电平。再发生重启现象时,查看复位引脚上是否出现了复位电平。如果存在复位电平,则检查一下周围其他设备的现象分析一下是否存在干扰的可能性。

2 可能是程序中有看门狗

有些单片机具有看门狗的。如STM32单片机具有独立看门狗IWDG以及窗口看门狗WWDG。首先查看喂狗指令是否正常。尤其是在通讯代码中,为了防止接收超时或者发送超时,在代码中都会加入看门狗或者是定时指令。这时候要分析不是不是存在逻辑错误使代码陷入了死循环触发了看门狗或者定时指令。

像这种偶发性的问题,在查找BUG时,故障复现比较困难,所以解决问题时也比较麻烦,一定要保持清醒的头脑,避免钻入牛角尖。

以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,94人围观)

还没有评论,来说两句吧...