SUPER_CRJ 发表于 2023-3-15 23:15:49

求助:STM32 CAN FD的SSP第二采样点具体怎么设置

本帖最后由 SUPER_CRJ 于 2023-3-15 23:22 编辑

当我觉得我已能正确的设置CAN FD的第二采样点时,其中的一个配置却不能通信。
能通信的配置如下:(其他的所有配置都一样。都开始了延时补偿,采样点都是75%,数据段波特率都2M,仲裁段数据也一样!)

配置1:数据段波特率2M:dSJW=1, tBS1=4,tBS2=1,dBRP=4。 (这个配置不能通信,用逻辑分析仪采样到的TX/RX波形如下)


配置2:数据段波特率也是2M:dSJW=1, tBS1=13,tBS2=4,dBRP=1(这个可以通信,采样的波形如下)。


根据STM32G4的手册:FDCAN_PSR.TDCV:表示每次发送帧的:开始和SSP的距离*mtq(mtq的值是FD_CAN核心频率的时间,两个配置都一样的,都是80Mhz)

问题来了:
1:在调试模式下:FDCAN_PSR.TDCV两者的值都是:0x26,也就是延时补偿的时间是一样的!也就是SSP的点都是一样的,而且它们的波特率是一样的,采样点也是一样的。为什么其中一个通信不上。
2:把两者都关闭:延迟补偿,两者也都能通信,所以问题肯定出现在:延迟补偿上,但是:延时补偿最后的:SSP点完全一样,采样点也是一样的,也就回到第一个问题上!

SUPER_CRJ 发表于 2023-3-15 23:19:19

本帖最后由 SUPER_CRJ 于 2023-3-15 23:22 编辑

现在惟一能发现的点就是:在开启延迟补偿的前面下,如果dBRP>=4,实测多组不同波特率设置,几乎都通信不上。但是如果在:0-3之间,则不存在这个问题。

查看到网上说法:BPP的值建议为1或者2。但是没提原因。
所以现在很让我费解,但是网上又找不到具体的设置方法,而都是一直在提原理。这让我很费解!

SUPER_CRJ 发表于 2023-3-15 23:33:55

问题3:
为什么错误的配置下,只有仲裁场,没有数据场。而且网上搜索发现:一个用户在没有开启TDC延迟,5M波特率情况下。也是丢失数据场。
显然的:如果CAN FD检测到错误会停止发送后面的数据。
请问:这是正常的吗?

lingdianhao 发表于 2023-3-16 00:14:25

你配置1和配置2算下来数据段速率不一样吧!

lingdianhao 发表于 2023-3-16 00:18:46

开启延迟补偿,还要设置TDCO的值,基本就是tBS1+1

SUPER_CRJ 发表于 2023-3-16 10:20:55

lingdianhao 发表于 2023-3-16 00:14
你配置1和配置2算下来数据段速率不一样吧!
(引用自4楼)

绝对没问题,都是2M频率,采样点75%。

频率:80000000/((4+1)*(3+4+1))=2000000
和:80000000/((1+1)*(3+13+4))=2000000
其他的配置完全一样。
而且在不开启TDC情况下(毕竟2M频率,不开TDC是没有问题的)和德国的P-CAN FD是可以通信的。所以就是TDC相关的原因。

SUPER_CRJ 发表于 2023-3-16 10:23:54

lingdianhao 发表于 2023-3-16 00:18
开启延迟补偿,还要设置TDCO的值,基本就是tBS1+1
(引用自5楼)

不太对。
TDCO的值:主要就是,第一采样点的时间长度。网上有建议最好-1。
如果dBRP的值为0,也就是1分频的情况下。写tBS1+1是合理的,如果分频值不是0,显然需要加倍的。

lb0857 发表于 2023-3-16 10:26:57

数据段波特率降低之后测试情况如何{:lol:}

SUPER_CRJ 发表于 2023-3-16 11:07:32

lb0857 发表于 2023-3-16 10:26
数据段波特率降低之后测试情况如何
(引用自8楼)

仍然是这种情况。
不开TDC情况下,正常通信能到4M。
开了TDC发现:dBRP数值变大,即使波特率到了1.3M左右也是这样的情况。现在正在和P CAN FD做测试。看看今天能不能找到原因。

lingdianhao 发表于 2023-3-16 13:01:26

SUPER_CRJ 发表于 2023-3-16 10:20
绝对没问题,都是2M频率,采样点75%。

频率:80000000/((4+1)*(3+4+1))=2000000
(引用自6楼)

尽量让一个位的TQ数多,还有和收发器的回环延迟以及高低电平对称性也有关系,你可以把详细的逻辑分析仪数据发出来分析。
页: [1]
查看完整版本: 求助:STM32 CAN FD的SSP第二采样点具体怎么设置