搜索
bottom↓
回复: 3

CANFD计算公式或者计算软件,大家有推荐的吗?

[复制链接]

出0入0汤圆

发表于 2024-6-28 10:52:37 | 显示全部楼层 |阅读模式
本帖最后由 阿豪博士 于 2024-6-28 12:22 编辑

CANFD计算公式或者计算软件,大家有推荐的吗?
比如根据 主频,仲裁域、数据域期望值,列出各数值可能性!

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2024-6-28 12:18:31 来自手机 | 显示全部楼层
要计算什么得说清楚。

出105入79汤圆

发表于 2024-6-29 15:03:32 | 显示全部楼层
编写一个用于计算CAN FD (Controller Area Network Flexible Data-Rate) 总线参数的程序是一个实用的项目,尤其是对于那些需要优化其嵌入式系统通信性能的工程师而言。以下是一个基础示例,展示如何根据给定的主频、期望的仲裁域位速率和数据域位速率来计算可能的CAN FD参数。请注意,实际应用中还需考虑CAN FD规范的限制和其他硬件约束。
  1. def calculate_canfd_timing(frequency, nominal_bitrate, data_bitrate):
  2.     """
  3.     计算CAN FD定时参数。
  4.     参数:
  5.     frequency - 控制器的工作频率(单位:Hz)。
  6.     nominal_bitrate - 期望的仲裁域位速率(单位:bit/s)。
  7.     data_bitrate - 期望的数据域位速率(单位:bit/s)。
  8.    
  9.     返回一个包含可能的CAN FD定时参数的字典,如样本点、相位缓冲段1、相位缓冲段2等。
  10.     """
  11.     # CAN FD规范中的最小时间量子(QT),单位为ns,这里简化处理,实际应根据具体控制器确定
  12.     QT_NS = 1
  13.    
  14.     # 计算仲裁域和数据域的时间段
  15.     nominal_tq = int(frequency / nominal_bitrate)
  16.     data_tq = int(frequency / data_bitrate)
  17.    
  18.     # 确保时间量子数符合CAN FD规范的最小要求,此处假设最小1个时间量子
  19.     nominal_tq = max(nominal_tq, 1)
  20.     data_tq = max(data_tq, 1)
  21.    
  22.     # 示例计算:分配相位缓冲段1和2,这里简化处理,实际配置需满足同步、相位误差等要求
  23.     prop_seg_nominal = 1  # 传播时间段,简化起见设为1 Tq
  24.     phase_seg1_nominal = nominal_tq - prop_seg_nominal - 1  # 确保至少1 Tq的相位缓冲段2
  25.     phase_seg2_nominal = 1  # 同上,简化处理
  26.    
  27.     prop_seg_data = 1  # 数据域的传播时间段,同样简化处理
  28.     phase_seg1_data = data_tq - prop_seg_data - 1
  29.     phase_seg2_data = 1
  30.    
  31.     # 返回计算结果
  32.     return {
  33.         "Nominal Bit Timing": f"{nominal_tq} Tq ({nominal_bitrate} bit/s)",
  34.         "Data Bit Timing": f"{data_tq} Tq ({data_bitrate} bit/s)",
  35.         "Nominal Phase Seg1": phase_seg1_nominal,
  36.         "Nominal Phase Seg2": phase_seg2_nominal,
  37.         "Data Phase Seg1": phase_seg1_data,
  38.         "Data Phase Seg2": phase_seg2_data,
  39.     }

  40. # 示例使用
  41. frequency = 80e6  # 80 MHz 主频
  42. nominal_bitrate = 500e3  # 500 kbit/s 期望仲裁域位速率
  43. data_bitrate = 2e6  # 2 Mbit/s 期望数据域位速率

  44. canfd_params = calculate_canfd_timing(frequency, nominal_bitrate, data_bitrate)
  45. for key, value in canfd_params.items():
  46.     print(f"{key}: {value}")
复制代码

出0入0汤圆

 楼主| 发表于 2024-6-30 13:37:36 来自手机 | 显示全部楼层
很厉害啊!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-2 20:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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