杰发科技AC7801——支持的纠错功能

1. 复位寄存器保留复位类型

低压检测复位(LVD Reset)

集成了一个低压保护系统,以便在电源电压发生变化期间保护存储器内容和控制 MCU 系统状态。该系统由上电复位(POR)电路和 LVD 电路组成,LVD 可以配置为不同的复位基准,可以是高电平(VLVDH) 或低电平(VLVDL)。

ECC 2 bit 错误复位(2 Bit Error Reset)

配置 RESET_CTRL[23]=1 将使能 ECC 2 BIT Error Reset。当 ECC 检测到 2 BIT 错误后,将发出系统复位请求以产生系统复位。

PLL 失锁复位(PLL Unlock Reset)

配置 RESET_CTRL[22]=1 将使能 PLL Unlock Reset。当 PLL 检测到失锁错误时,将发出系统复位请求以产生系统复位。

晶体振荡器(XOSC)监控器功能

配置 CKGEN_SRC_SEL[16]=1 使能 XOSC 监控系统。使能 XOSC 监控系统后,时钟检测器在 HSE振荡器启动延迟后启用,并在此振荡器停止时被禁用。如果在 HSE 振荡器时钟上检测到故障,则该振荡器会被自动禁用,同时 XOSC 失效状态标志置起并且生成 NMI 中断以通知 MCU 执行相应的救援操作。

2. CAN错误类型

BUS_OFF的处理

CAN_CTRL0 寄存器中的状态位 BUSOFF 用来标识"总线关闭"状态。如果 CAN 节点的发送错误计数器计数超过 255,则该节点自动进入"bus off"状态。然后,在再次进入主动错误激活状态之前,它不会参与进一步的通信。如果 CAN 节点通过模块(SRST_CAN0)复位或者接收到 128 组连续 11 个隐性位(恢复序列),则 CAN 节点返回到主动错误状态。

可编程错误警告限制

接收/发送期间的错误由 RECNT 和 TECNT 来计数。LIMIT 寄存器中的可编程错误警告限制 EWL 可由主控制器灵活配置以用于响应接收/发送错误事件。可以从 8 到 128 中以 8 个错误步进选择极限值:错误计数限制 = (EWL + 1) * 8.如果在以下条件下由 EIE 使能,则将设置中断 EIF:

  • 错误警告限制的边界已通过 RECENT 或 RECENT 在任一方向交叉
  • BUSOFF 位已经在某一方向上变化

仲裁失利捕获

控制器能够检测仲裁段中仲裁失利的确切位位置。如果 ALIF 中断被启用,则可以通过 ALIF 中断发出此事件。如果此节点能够赢得此仲裁,则 ALC 的值会保持不变。ALC 保持最后一次仲裁失利的值。ALC 的值定义如下:一帧以 SOF 位开始,发送 ID 的第 1 位。第一个 ID 位的 ALC 值为 0,第二个 ID

位的 ALC 值为 1,依此类推。仲裁仅允许在仲裁域中进行。因此,ALC 的最大值为 31,是扩展帧的RTR 位。

如果标准远程帧与扩展帧进行仲裁,则扩展帧会在 IDE 位失去仲裁,ALC 将为 12。发送标准远程帧的节点将不会注意到已经发生了的仲裁,因为该节点已经获胜。在仲裁域之外不可能获得仲裁失利,这样的事件为位错误。

错误类型的记录

CAN 控制器识别 CAN 总线上的错误,并将最后一个错误事件存储在 KOER 位中。如果使能 BEIF 中断,则可以通过 BEIF 中断发出 CAN 总线错误信号。每个新的错误事件都会覆盖之前存储的 KOER 值。因此,主控制器必须对错误事件做出快速反应。

  • 位错误(BIT ERROR)
  • 形式错误(FORM ERROR)
  • 填充错误(STUFF ERROR)
  • 应答错误(ACKNOWLEDGEMENT ERROR)
  • 校验错误(CRC ERROR)
  • 其他错误(OTHER ERROR)错误标志后收到显性电平,接收到主动错误标志太长,ACK 错误后的被动错误标志收到显性电平。

3. 使用ECC的SRAM纠错

ECC_SRAM 的全称是 SRAM Error Correcting Code,是用于 SRAM 的差错检测和修正。SRAM 出错的时候一般不会造成整个 SRAM 不能读取或是全部出错,而是整个 SRAM 中只有一个或几个 bits 出错。ECC_SRAM 采用汉明码 ECC 单 bit 纠错、两 bits 检测算法,计算速度很快,对 1 bit 以上的错误无法纠正,对 2 bits 以上的错误不保证能检测。

3. 使用看门狗

使用WDG计数,定时喂狗

4. 使用CRC做FLASH校验

http://t.csdnimg.cn/gz7Ov

5. 使用模拟EEP做一些错误的记录

烧录时候做处理

比如记录烧录日期、时间、次数

升级时候做处理

升级前标识、升级成功标识、第几次升级、升级日期

使用过程中记录错误信息

记录使用过程中的一些问题

相关推荐
独小乐2 天前
019.ADC转换和子中断|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·mcu·arm
电子科技圈4 天前
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
人工智能·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
天月风沙5 天前
Betaflight飞控、树莓派RP2350B主控编译教程
linux·单片机·嵌入式硬件·mcu·无人机·树莓派
电子科技圈6 天前
芯科科技2026 Tech Talks技术讲座启航聚焦无线与边缘 AI,共绘智能物联新蓝图
人工智能·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
EVERSPIN6 天前
低功耗MCU对TWS充电仓的驱动控制
单片机·嵌入式硬件·mcu·低功耗mcu
白掰虾8 天前
STM32CubeMX2教程——STM32C5 UART
stm32·单片机·嵌入式硬件·mcu·usart·stm32cubemx2·stm32c542
狂奔蜗牛(bradley)10 天前
使用数组重构责任链实现通信协议解析
网络·mcu·重构
狂奔蜗牛(bradley)10 天前
嵌入式软件中如何用责任链模式重构串口协议栈
网络·单片机·mcu·重构·责任链模式
咸鱼嵌入式11 天前
【AutoSAR】详解CANIF模块
单片机·mcu·车载系统·autosar
EVERSPIN11 天前
高性能32位MCU在热敏打印机上的应用
单片机·嵌入式硬件·mcu·32位mcu