STM32H743 CANFD未配置TDC导致在1M_5M高波特率下数据场信号丢失

本文详细介绍了STM32H743 CANFD调试过程,包括波特率配置、采样点调整及TDC参数设置,解决数据场丢失问题。通过HAL库函数配置TDC值,确保发送延迟补偿正确,最终实现稳定的数据传输。

调试STM32H743的CANFD时,官方参考代码里面的波特率配置为1M_4M,并且采样点数不满足要求,后面通过配置仲裁场为1M,数据场为5M,示波器观察发现丢失数据场,只有仲裁场,后面查看了MCP2517的配置里面,有一个TDC参数对应STM32H743的HAL_FDCAN_ConfigTxDelayCompensation(发送延迟补偿),使能之后,配置TDC值。

HAL_FDCAN_EnableTxDelayCompensation(&hfdcan1);//使能hfdcan1的TDC
HAL_FDCAN_ConfigTxDelayCompensation(&hfdcan1,TdcOffset ,TdcFilter);//配置hfdcan1
//TdcOffset = DataTimeSeg1*DataPrescaler 
//TdcFilter的配置可以是0,我暂时配置为和TDCTdcOffset 一致

其中DataTimeSeg1和DataPrescaler的配置如下:可以得到TdcOffset =1*11=11

  hfdcan1.Init.NominalPrescaler = 1;
  hfdcan1.Init.NominalSyncJumpWidth = 12;
  hfdcan1.Init.NominalTimeSeg1 = 67;
  hfdcan1.Init.NominalTimeSeg2 = 12;
  hfdcan1.Init.DataPrescaler = 1;
  hfdcan1.Init.DataSyncJumpWidth = 4;
  hfdcan1.Init.DataTimeSeg1 = 11;
  hfdcan1.Init.DataTimeSeg2 = 4;

然后可以通过查看TDC所在寄存器的值,可以查看TDC是否设置成功,设置失败DBTP=0x00000E33,设置成功DBTP=0x00800E33,具体DBTP寄存器的各位请查看STM32H743数据手册

FDCAN_ProtocolStatus_FDCAN1=HAL_FDCAN_GetProtocolStatus(&hfdcan1,&Status_FDCAN1);//查看TDC所在寄存器的值

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值