5秒后页面跳转
FAQ0116 PDF预览

FAQ0116

更新时间: 2023-12-20 18:46:30
品牌 Logo 应用领域
雅特力 - ARTERY /
页数 文件大小 规格书
7页 595K
描述
CAN 接收报文数据错位问题

FAQ0116 数据手册

 浏览型号FAQ0116的Datasheet PDF文件第2页浏览型号FAQ0116的Datasheet PDF文件第3页浏览型号FAQ0116的Datasheet PDF文件第4页浏览型号FAQ0116的Datasheet PDF文件第5页浏览型号FAQ0116的Datasheet PDF文件第6页浏览型号FAQ0116的Datasheet PDF文件第7页 
CAN 应用问题说明  
FAQ0116  
常见问题解答  
CAN应用问题说明  
Questions1CAN 接收报文数据错位问题:  
在使用 CAN 时,当在接收数据域期间 CAN 总线上出现异常(该异常通常可能由采样点漂移、或  
外部干扰等原因导致)时,可能会出现接收数据位填充错误导致整帧数据错位的现象, 且后续帧  
又自动恢复正常的现象。  
此问题可通过软件进行修正,依据不同应用场景,罗列如下三种处理方案。  
Answer1:  
开启 CAN 的上次错误类型对应的错误中断(中断优先级需设定为最高CAN 错误中断的中断函数内检  
测到出现位填充错误时,复位 CAN(可只复位 CAN 寄存器,其相关的 GPIO 等、NVIC 不需复位并在  
CAN 错误中断函数内完成 CAN 的复位及初始化。  
此方法适用于期望快速完成 CAN 的初始化,以保障 CAN 及时参与通讯,避免过多 CAN 数据丢失的场景。  
CAN1 为例,其典型示例代码如下:  
/*开启 CAN 的上次错误类型对应的错误中断并设定中断最高优先级*/  
can_interrupt_enable(CAN1,CAN_ETRIEN_INT, TRUE);  
can_interrupt_enable(CAN1,CAN_EOIEN_INT, TRUE);  
nvic_irq_enable(CAN1_SE_IRQn,0x00, 0x00);  
中断服务函数:  
/* can1 interruptfunction se */  
void CAN1_SE_IRQHandler(void)  
{
__IO uint32_terr_index = 0;  
if(can_flag_get(CAN1,CAN_ETR_FLAG) != RESET)  
{
err_index= CAN1->ests &0x70;  
can_flag_clear(CAN1,CAN_ETR_FLAG);  
if(err_index== 0x00000010) //<判定是否出现位填充错误  
{
can_reset(CAN1);  
/*调用 CAN 初始化函数 can_configuration();*/  
}
}
}
注意事项:  
A. CAN 错误中断的优先级需设定为最高;  
2022.3.2  
1 页  
版本 2.0.0  

与FAQ0116相关器件

型号 品牌 获取价格 描述 数据表
FAQ0117 ARTERY

获取价格

配置XMC时序注意事项
FAQ0118 ARTERY

获取价格

USB虚拟串口发送数据上位机不能显示问题
FAQ0119 ARTERY

获取价格

当程序出现操作erase/program,然后后续都没有read 操作的情况
FAQ0120 ARTERY

获取价格

TMR 产生的DMA 请求如何清除?
FAQ0121 ARTERY

获取价格

TMR 在编码器模式下的Overflow 事件有何注意事项?
FAQ0122 ARTERY

获取价格

AT32_Bootloader_连接注意事项
FAQ0123 ARTERY

获取价格

AT32 部分型号不支持ADC 精度调整,固定以12 位精度进行采样转换。当应用期望使用8
FAQ0124 ARTERY

获取价格

使用Keil 软件时,配置某IO 口为推挽输出,并需要快速翻转该IO 口,在-O0 优化等
FAQ0125 ARTERY

获取价格

AT32F43x 的ADC 普通位移模式,在某些特殊配置条件下的通道转换时间比理论转换时间
FAQ0126 ARTERY

获取价格

AT32F4xx 系列GPIO 的各种模式内部上/下拉电阻配置是否有效?