找回密码
 立即注册
楼主: 乘风飞扬

CAN-FD,2组, 有 DMA支持;STC32G144K246 的 2组 独立 CAN-FD 功能测试通过

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-5-29 15:54:22 | 显示全部楼层
pyx*** 发表于 2026-5-29 11:45
两组CAN能用不同的波特率吗?

可以
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2026-06-03 11:24:31

3

主题

41

回帖

185

积分

注册会员

积分
185
发表于 2026-5-29 16:53:37 | 显示全部楼层

怎么设置?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-5-29 17:31:22 | 显示全部楼层

可以修改初始化程序,判断是CAN1的话使用一套波特率设置,判断不是CAN1的话使用另一套波特率设置:

  1. if(CANx == CAN1)
  2. {
  3. //传统CAN总线的位速率
  4. //仲裁域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=80M/40/2=1M
  5. //设定规则:SEG1>=SEG2+1, SEG2>=SJW
  6. stcInit.stcSBT.u8SEG1 = 30U;
  7. stcInit.stcSBT.u8SEG2 = 7U;
  8. stcInit.stcSBT.u8SJW = 2U;
  9. stcInit.stcSBT.u8Prescaler = 1U;
  10. //可变位速率
  11. //数据域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=80M/16/1=5M
  12. //设定规则:SEG1>=SEG2, SEG2>=SJW
  13. stcInit.stcFDCfg.stcFBT.u8SEG1 = 11U;
  14. stcInit.stcFDCfg.stcFBT.u8SEG2 = 2U;
  15. stcInit.stcFDCfg.stcFBT.u8SJW = 2U;
  16. stcInit.stcFDCfg.stcFBT.u8Prescaler = 0U;
  17. stcInit.stcFDCfg.u8CANFDMode = CAN_FD_MODE_ISO_11898; //CAN_FD_MODE_BOSCH, CAN_FD_MODE_ISO_11898
  18. stcInit.stcFDCfg.u8TDCSSP = (stcInit.stcFDCfg.stcFBT.u8SEG1 + 2); //TDCSSP 建议设置与 (SEG1+2) 相同值
  19. }
  20. else
  21. {
  22. //传统CAN总线的位速率
  23. //仲裁域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=80M/40/4=500K
  24. //设定规则:SEG1>=SEG2+1, SEG2>=SJW
  25. stcInit.stcSBT.u8SEG1 = 30U;
  26. stcInit.stcSBT.u8SEG2 = 7U;
  27. stcInit.stcSBT.u8SJW = 5U;
  28. stcInit.stcSBT.u8Prescaler = 3U;
  29. //可变位速率
  30. //数据域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=80M/40/4=500K
  31. //设定规则:SEG1>=SEG2, SEG2>=SJW
  32. stcInit.stcFDCfg.stcFBT.u8SEG1 = 30U;
  33. stcInit.stcFDCfg.stcFBT.u8SEG2 = 7U;
  34. stcInit.stcFDCfg.stcFBT.u8SJW = 5U;
  35. stcInit.stcFDCfg.stcFBT.u8Prescaler = 3U;
  36. stcInit.stcFDCfg.u8CANFDMode = CAN_FD_MODE_ISO_11898; //CAN_FD_MODE_BOSCH, CAN_FD_MODE_ISO_11898
  37. stcInit.stcFDCfg.u8TDCSSP = (stcInit.stcFDCfg.stcFBT.u8SEG1 + 2); //TDCSSP 建议设置与 (SEG1+2) 相同值
  38. }
复制代码


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2026-06-03 11:24:31

3

主题

41

回帖

185

积分

注册会员

积分
185
发表于 2026-5-29 17:35:09 | 显示全部楼层
乘风*** 发表于 2026-5-29 17:31
可以修改初始化程序,判断是CAN1的话使用一套波特率设置,判断不是CAN1的话使用另一套波特率设置:

能给出一个具体的示例吗?我理解是在发送时可以这么搞?那如果是接收呢?还有就是如果CAN1换成另一套波特率后,CAN2的接收会影响吗?能否像串口一样,使有不同的波特率同时收发?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-5-29 18:10:27 | 显示全部楼层
pyx*** 发表于 2026-5-29 17:35
能给出一个具体的示例吗?我理解是在发送时可以这么搞?那如果是接收呢?还有就是如果CAN1换成另一套波特 ...
CAN1/CAN2像串口一样相互独立的
参考官网32G144K246实验箱例程包:44-CANFD1-CANFD2同时使用收发测试
实验箱下载页面:https://www.stcai.com/syx

初始化两组CAN:
截图202605291809419579.jpg
按照上面介绍修改初始化函数代码:
截图202605291810239098.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2026-06-03 11:24:31

3

主题

41

回帖

185

积分

注册会员

积分
185
发表于 2026-6-1 21:14:11 | 显示全部楼层
乘风*** 发表于 2026-5-29 18:10
CAN1/CAN2像串口一样相互独立的
参考官网32G144K246实验箱例程包:44-CANFD1-CANFD2同时使用收发测试
实验 ...

在#if 1 这个位置的程序我理解是要么为1要么为0,需要我们自己来填,不管哪种,程序都只会编辑一个部分,也就是说CAN1和CAN2的波特率在这部分设置时是相同的,并不能不同波特率运行,如果您有不同波特率运行的程序方便给我参考下吗?谢谢。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-6-2 08:53:42 | 显示全部楼层
pyx*** 发表于 2026-6-1 21:14
在#if 1 这个位置的程序我理解是要么为1要么为0,需要我们自己来填,不管哪种,程序都只会编辑一个部分, ...

前面53楼已经给出修改的方案
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2026-06-03 11:24:31

3

主题

41

回帖

185

积分

注册会员

积分
185
发表于 2026-6-2 12:07:05 来自手机 | 显示全部楼层
乘风飞扬 发表于 2026-6-2 08:53
前面53楼已经给出修改的方案

好的,谢谢。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:25
  • 最近打卡:2026-06-26 08:33:19

0

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2026-6-13 18:45:42 | 显示全部楼层
可以,挺好的
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 17:53 , Processed in 0.078581 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表