Zephyr + CAN on FRDM-MCXN947, Bitrate out of spec / Clocks

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Zephyr + CAN on FRDM-MCXN947, Bitrate out of spec / Clocks

236 次查看
mwagner1
Contributor I

Hi @all,

I'm currently in the process of evaluating a new SoC for a project. For this i have the FRDM-MCXN947 evalboard. This includes a CAN-FD port. Please be aware that I'm new to Zephyr / MCXN.

On evaluating the CAN IP, i was unable to communicate with other devices. On checking with the scope, i've found that the bitrate is way out of spec (118kBit / 125kBit, 943kBit / 1000kBit). This is with my test application and the zephyr example (west flash frdm_mcxn947/mcxn947/cpu0 zephyr/samples/drivers/can/babbling/) so I would assume some kind of clock setup problem.

I've found the (seemingly) relevant parts as part of the evaboard (board.c) and the devicetree nxp_mcxnx4x_common.dtsi

#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(flexcan0))
CLOCK_SetClkDiv(kCLOCK_DivFlexcan0Clk, 1U);
CLOCK_AttachClk(kFRO_HF_to_FLEXCAN0);
#endif

flexcan0: can@d4000 {
compatible = "nxp,flexcan";
reg = <0xd4000 0x4000>;
interrupts = <62 0>;
interrupt-names = "common";
clocks = <&syscon MCUX_FLEXCAN0_CLK>;
clk-source = <0>;
status = "disabled";
};

None of the labels seem to be part of the zephyr OS. Can you give me a hint how to set this up correctly ?

 

Thank you for your help!

 

 

 

 

0 项奖励
回复
5 回复数

181 次查看
Harry_Zhang
NXP Employee
NXP Employee

Hi @mwagner1 

You can try to add frdm_mcxn947.overlay file

&flexcan0 {
    status = "okay";
    clock-frequency = <48000000>;
    bitrate = <125000>;
    sample-point = <875>;
    bus-speed-data = <1000000>;
    sample-point-data = <750>;
};

BR

Harry

0 项奖励
回复

131 次查看
mwagner1
Contributor I

this gives me compilation errors for the dt. 

devicetree error: 'clock-frequency' appears in /soc/peripheral@50000000/can@d4000 in /home/user/project/build/zephyr/zephyr.dts.pre, but is not declared in 'properties:' in /home/user/project/zephyr/dts/bindings/can/nxp,flexcan.yaml

 

the following compiles, but the bitrate is still wrong.

&flexcan0 {
status = "okay";
// clock-frequency = <48000000>;
bitrate = <125000>;
sample-point = <875>;
// bus-speed-data = <1000000>;
// sample-point-data = <750>;
};

 

0 项奖励
回复

81 次查看
Harry_Zhang
NXP Employee
NXP Employee

Hi @mwagner1 

I have confirmed with the internal team. this bitrate accuracy issue is caused by the clock source.  The file frdm_mcxn947/board.c configures the clocks for the board, and is clocking from the internal FRO.  It is expected that applications and custom boards will customize this board.c file as needed, see Clock Configuration in Zephyr .  

There is also an open pull request enabling CAN FD support for this board at https://github.com/zephyrproject-rtos/zephyr/pull/98900 , and that PR is modifying board.c to clock from PLL0 instead to achieve the required accuracy.

You can refer to it.

BR

Harry

0 项奖励
回复

30 次查看
mwagner1
Contributor I

thanks, this fixes the problem for me.

#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(flexcan0))
CLOCK_SetClkDiv(kCLOCK_DivFlexcan0Clk, 3U);
CLOCK_AttachClk(kPLL0_to_FLEXCAN0);
#endif

 

0 项奖励
回复

107 次查看
Harry_Zhang
NXP Employee
NXP Employee

Hi @mwagner1 

I'm sorry, I can reproduce this issue. I think it's a clock issue.

I need to discuss it with the internal team and I will inform you promptly if there is any news.

BR

Harry

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2259706%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFRDM-MCXN947%20%E4%B8%8A%E7%9A%84%20Zephyr%20%2B%20CAN%EF%BC%8C%E6%AF%94%E7%89%B9%E7%8E%87%E8%B6%85%E5%87%BA%E8%A7%84%E6%A0%BC%2F%E6%97%B6%E9%92%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2259706%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F12881%22%20target%3D%22_blank%22%3E%E5%A4%A7%E5%AE%B6%3C%2FA%3E%E5%A5%BD%E3%80%81%3C%2FP%3E%3CP%3E%E6%88%91%E7%9B%AE%E5%89%8D%E6%AD%A3%E5%9C%A8%E4%B8%BA%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AE%E8%AF%84%E4%BC%B0%E4%B8%80%E6%AC%BE%E6%96%B0%E7%9A%84%20SoC%E3%80%82%E4%B8%BA%E6%AD%A4%EF%BC%8C%E6%88%91%E4%BD%BF%E7%94%A8%E4%BA%86%20FRDM-MCXN947%20%E8%AF%84%E4%BC%B0%E6%9D%BF%E3%80%82%E5%85%B6%E4%B8%AD%E5%8C%85%E6%8B%AC%E4%B8%80%E4%B8%AA%20CAN-FD%20%E7%AB%AF%E5%8F%A3%E3%80%82%E8%AF%B7%E6%B3%A8%E6%84%8F%EF%BC%8C%E6%88%91%E6%98%AF%20Zephyr%20%2F%20MCXN%20%E7%9A%84%E6%96%B0%E6%88%90%E5%91%98%E3%80%82%3C%2FP%3E%3CP%3E%E5%9C%A8%E8%AF%84%E4%BC%B0%20CAN%20IP%20%E6%97%B6%EF%BC%8C%E6%88%91%E6%97%A0%E6%B3%95%E4%B8%8E%E5%85%B6%E4%BB%96%E8%AE%BE%E5%A4%87%E9%80%9A%E4%BF%A1%E3%80%82%E4%BD%BF%E7%94%A8%E7%A4%BA%E6%B3%A2%E5%99%A8%E6%A3%80%E6%9F%A5%E5%90%8E%EF%BC%8C%E6%88%91%E5%8F%91%E7%8E%B0%E6%AF%94%E7%89%B9%E7%8E%87%E8%BF%9C%E8%BF%9C%E8%B6%85%E5%87%BA%E4%BA%86%E8%A7%84%E6%A0%BC%EF%BC%88118kBit%20%2F%20125kBit%2C%20943kBit%20%2F%201000kBit%EF%BC%89%E3%80%82%E8%BF%99%E6%98%AF%E6%88%91%E7%9A%84%E6%B5%8B%E8%AF%95%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%20zephyr%20%E7%A4%BA%E4%BE%8B%EF%BC%88west%20flash%3CSPAN%3Efrdm_mcxn947%2Fmcxn947%2Fcpu0%20zephyr%2Fsamples%2Fdrivers%2Fcan%2Fbabbling%2F%EF%BC%89%E9%80%A0%E6%88%90%E7%9A%84%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%88%91%E8%AE%A4%E4%B8%BA%E6%98%AF%E6%9F%90%E7%A7%8D%E6%97%B6%E9%92%9F%E8%AE%BE%E7%BD%AE%E9%97%AE%E9%A2%98%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E4%BD%9C%E4%B8%BA%20evaboard%20(%E6%9D%BF.c)%20%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%EF%BC%8C%E6%88%91%E6%89%BE%E5%88%B0%E4%BA%86%EF%BC%88%E7%9C%8B%E4%BC%BC%EF%BC%89%E7%9B%B8%E5%85%B3%E7%9A%84%E9%83%A8%E5%88%86%E5%92%8C%20devicetree%20nxp_mcxnx4x_common.dtsi%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%3CSPAN%3E%23if%20DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(flexcan0))%3CBR%20%2F%3ECLOCK_SetClkDiv(kCLOCK_DivFlexcan0Clk%2C%201U)%3B%3CBR%20%2F%3ECLOCK_AttachClk(kFRO_HF_to_FLEXCAN0)%3B%3CBR%20%2F%3E%23endif%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%3CSPAN%3Eflexcan0%3A%20can%40d4000%20%7B%3CBR%20%2F%3Ecompatible%20%3D%22nxp%2Cflexcan%22%3B%3CBR%20%2F%3Ereg%20%3D%26lt%3B0xd4000%200x4000%26gt%3B%3B%3CBR%20%2F%3Einterrupts%20%3D%26lt%3B62%200%26gt%3B%3B%3CBR%20%2F%3Einterrupt-names%20%3D%22common%22%3B%3CBR%20%2F%3Eclocks%20%3D%26lt%3B%26amp%3B%20syscon%20MCUX_FLEXCAN0_CLK%26gt%3B%3B%3CBR%20%2F%3Eclk-source%20%3D%26lt%3B0%26gt%3B%3B%3CBR%20%2F%3Estatus%20%3D%22disabled%22%3B%3CBR%20%2F%3E%7D%EF%BC%9B%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E8%BF%99%E4%BA%9B%E6%A0%87%E7%AD%BE%E4%BC%BC%E4%B9%8E%E9%83%BD%E4%B8%8D%E6%98%AF%20zephyr%20%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E3%80%82%E6%82%A8%E8%83%BD%E5%91%8A%E8%AF%89%E6%88%91%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E8%AE%BE%E7%BD%AE%E5%90%97%EF%BC%9F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%B8%AE%E5%8A%A9%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2261000%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Zephyr%20%2B%20CAN%20on%20FRDM-MCXN947%2C%20Bitrate%20out%20of%20spec%20%2F%20Clocks%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2261000%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F257905%22%20target%3D%22_blank%22%3E%40mwagner1%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%B0%9D%E8%AF%95%E6%B7%BB%E5%8A%A0%20frdm_mcxn947.overlay%20%E6%96%87%E4%BB%B6%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%26amp%3Bflexcan0%20%7B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20clock-frequency%20%3D%20%26lt%3B48000000%26gt%3B%3B%0A%20%20%20%20bitrate%20%3D%20%26lt%3B125000%26gt%3B%3B%0A%20%20%20%20sample-point%20%3D%20%26lt%3B875%26gt%3B%3B%0A%20%20%20%20bus-speed-data%20%3D%20%26lt%3B1000000%26gt%3B%3B%0A%20%20%20%20sample-point-data%20%3D%20%26lt%3B750%26gt%3B%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E5%93%88%E5%88%A9%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2262366%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Zephyr%20%2B%20CAN%20on%20FRDM-MCXN947%2C%20Bitrate%20out%20of%20spec%20%2F%20Clocks%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2262366%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%BF%99%E4%BC%9A%E5%AF%BC%E8%87%B4%20dt%20%E7%9A%84%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF%E3%80%82%20%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%E8%AE%BE%E5%A4%87%E6%A0%91%E9%94%99%E8%AF%AF%EF%BC%9A%E2%80%9C%E6%97%B6%E9%92%9F%E9%A2%91%E7%8E%87%E2%80%9D%20%E5%87%BA%E7%8E%B0%E5%9C%A8%20%2Fsoc%2Fapperederial%20%4050000000%20%2Fcan%20%40d4000%20%E5%9C%A8%20%2Fhome%2Fuser%2Fproject%2F%E7%89%88%E6%9C%AC%2Fzephyr%2Fzephyr%2Fzephyr.dts.pre%20%E4%B8%AD%EF%BC%8C%E4%BD%86%E6%9C%AA%E5%9C%A8%20%2Fhome%2Fuser%2Fproject%2Fzephyr%2Fdts%2Fbindings%2Fcan%2Fnxp%2Cflexcan.yaml%20%E4%B8%AD%E7%9A%84%20%22properties%3A%20%22%E4%B8%AD%E5%A3%B0%E6%98%8E%3C%2FFONT%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E7%BC%96%E8%AF%91%EF%BC%8C%E4%BD%86%E6%AF%94%E7%89%B9%E7%8E%87%E4%BB%8D%E7%84%B6%E9%94%99%E8%AF%AF%E3%80%82%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%26amp%3B%20flexcan0%20%7Bst%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20atus%20%3D%20%22%20%E5%A5%BD%E5%90%A7%20%22%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20%2F%2F%E6%97%B6%E9%92%9F%E9%A2%91%E7%8E%87%20%3D%26lt%3B48000000%26gt%3B%20%EF%BC%9B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20%E6%AF%94%E7%89%B9%E7%8E%87%20%3D%26lt%3B125000%26gt%3B%20%EF%BC%9B%E9%87%87%E6%A0%B7%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20%E7%82%B9%20%3D%26lt%3B875%26gt%3B%20%26lt%3B%20875%20%26gt%3B%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20%2F%2F%E6%80%BB%E7%BA%BF%E9%80%9F%E5%BA%A6%E6%95%B0%E6%8D%AE%26lt%3B1000000%26gt%3B%20%3D%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20%2F%2F%E9%87%87%E6%A0%B7%E7%82%B9%E6%95%B0%E6%8D%AE%26lt%3B750%26gt%3B%20%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%3D%3B%7D%3B%3C%2FFONT%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2263506%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Zephyr%20%2B%20CAN%20on%20FRDM-MCXN947%2C%20Bitrate%20out%20of%20spec%20%2F%20Clocks%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2263506%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F257905%22%20target%3D%22_blank%22%3E%40mwagner1%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E5%BE%88%E6%8A%B1%E6%AD%89%EF%BC%8C%E6%88%91%E5%8F%AF%E4%BB%A5%E9%87%8D%E7%8E%B0%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E3%80%82%E6%88%91%E8%AE%A4%E4%B8%BA%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E6%97%B6%E9%92%9F%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%8E%E5%86%85%E9%83%A8%E5%9B%A2%E9%98%9F%E8%BF%9B%E8%A1%8C%E8%AE%A8%E8%AE%BA%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%9C%89%E4%BB%BB%E4%BD%95%E6%B6%88%E6%81%AF%EF%BC%8C%E6%88%91%E4%BC%9A%E5%8F%8A%E6%97%B6%E9%80%9A%E7%9F%A5%E6%82%A8%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E5%93%88%E5%88%A9%3C%2FP%3E%3C%2FLINGO-BODY%3E