最近大佬要求我这边写一个针对ECU的负载测试工具,我这边用python写了一个生成CAPL负载测试代码工具,但是用CAPL测试发现报文通过定时器执行周期发送非常不稳,咨询大佬说capl本身就是这样的,准备另换方案,准备用python-can调用PCAN-USB PRO实现(python-can调用CANoe发送FD报文没找到解决方案,凄凉
),今天简单记录下实践过程中的坑
提示:以下是本篇文章正文内容,下面案例可供参考
就这步难了我许久,查了很多资料,然后查看了python-can源码,最后才知道怎么设置的
具体源码如下:
timingFD = BitTimingFd(f_clock=24000000, nom_brp=1, nom_tseg1=17, nom_tseg2=6, nom_sjw=1, data_brp=1, data_tseg1=16, data_tseg2=7, data_sjw=1)
bus = can.interface.Bus(bustype='pcan',channel='PCAN_USBBUS1',fd=True,timing=timingFD)
代码如下(示例):
i msg = can.Message(arbitration_id=0x124, dlc=17, data=[0, 25, 0, 1, 3, 1, 4, 9, 8,8,9,9,10,11,13,14,15], is_extended_id=False, is_fd=True)
代码如下(示例):
import time
import can
from can.bit_timing import BitTimingFd
def send_fd_test():
timingFD = BitTimingFd(
f_clock=24000000, # 时钟频率,有MHz和Hz,注意区分
nom_brp=1, # 仲裁场分频系数
nom_tseg1=17, # 仲裁场TSeg1
nom_tseg2=6, # 仲裁场TSeg2
nom_sjw=1, # 仲裁场同步跳变宽度
data_brp=1, # 数据场分频系数
data_tseg1=16, # 数据场TSeg1
data_tseg2=7, # 数据场TSeg2
data_sjw=1) # 数据场分频系数
bus = can.interface.Bus(bustype='pcan',channel='PCAN_USBBUS1',fd=True,timing=timingFD)
msg = can.Message(arbitration_id=0x124, dlc=17, data=[0, 25, 0, 1, 3, 1, 4, 9, 8,8,9,9,10,11,13,14,15], is_extended_id=False, is_fd=True)
while True:
bus.send(msg)
time.sleep(0.1)
send_fd_test()
由于CANFD数据域长度只能用4bit来表示,当数据场长度大于8byte后就会采用以上的补全方式显示
我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步