|
《CAN FD升级避坑指南》
经典问题: 波特率切换失败(数据段未生效) 帧校验错误(CRC多项式配置错误)
配置代码: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
CAN_FD_FilterTypeDef filter;filter.IdType = CAN_FD_STANDARD_ID;filter.FilterIndex = 0;filter.FilterConfig = CAN_FD_FILTER_TO_RXFIFO0;HAL_CAN_FD_ConfigFilter(&hcan, &filter); // 必须在新波特率生效后调用
波特率计算工具: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]python
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
def calc_can_fd_brp(clk, nom_br, data_br): nom_prescaler = clk / (nom_br * (1 + 12 + 2)) # 标准段 data_prescaler = clk / (data_br * (1 + 5 + 2)) # 数据段 return round(nom_prescaler), round(data_prescaler)
|
|