|
注:2.26版本固件即将发布,推荐升级到2.26版本后操作本贴功能
LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。

功能特性:
1、支持经典CAN和CANFD。
2、支持CAN助手和CAN LUA同时使用,让CAN检测更灵活,更随心所欲。
3、可设置固定波特率20K,25K,50K,80K,100K,125K,250K,500K,1M,2M,5M,8M。
4、可以自定义波特率,即CAN主频,SWJ, TS1,TS2的参数设置。
5、支持波形展示。
6、TOOL上电后,首界面的电压不要低于4.7x.
7、支持USB,以太网和WiFi方式以及局域网外网的上位机控制,支持离线控制运行。
8、对于经典CAN和低速CANFD, 至少一个节点要带终端电阻。高速CANFD(5M,8M测试),两端的终端电阻最好都加上。
对于TOOL,本身是不带终端电阻的,不过可以方便在转接板背面的CANL和CANH之间焊接120Ω的终端电阻

LUA函数说明:
1、CAN初始化函数
can_bus(”open“, 参数2, 参数3, 参数4, 参数5)
第1个参数 :
open,close,send,recive
第2个参数
0 表示FDCAN_FRAME_CLASSIC,即经典CAN
1 表示FDCAN_FRAME_FD_NO_BRS,即CANFD,仲裁段波特率和数据段波特率一样
2 表示FDCAN_FRAME_FD_BRS,即CANFD,仲裁段波特率和数据段波特率不一样
第3个参数,支持的数据个数
可以设置8,12,16,20,24,32,48,64
第4个参数,仲裁阶段波特率
可以设置20K,25K,50K,80K,100K,125K,250K,500K,1M。
注意填写的时候,填写实际数值大小,比如500K就是500000。
第5个参数,数据阶段波特率
可以设置20K,25K,50K,80K,100K,125K,250K,500K,1M,2M,5M,8M。
注意:(1)填写的时候,填写实际数值大小,比如1M就是1000000。
(2)还有就是,如果设置了使用经典CAN,那么第5参数将不起作用。
举例1:
比如设置使用经典CAN,数据个数8,CAN速度1M,那么配置就是
can_bus("open", 0, 8, 1000000, 1000000) -- 第5个参数用不到,不起作用。
举例2:
比如设置使用CANFD,数据个数16,CAN仲裁阶段波特率1M,通信阶段波特率2M,那么配置就是
can_bus("open", 0, 8, 1000000, 2000000)
2、CAN发送函数
can_bus("send", 参数2, 参数3, 参数4, 参数5)
第1个参数
open,close,send,recive
第2个参数
ID类型,0表示标准ID,1表示扩展ID
第3个参数
0表示数据帧,1表示遥控帧
第4个参数
ID数值
第5个参数
发送的数据,可以发送字符串比如"12345678", 如果要发送实际数值0,1,2,3,4,5,6,7,可以转义字符比如"\x00\x01\02\x03\x04\x05\x06\x07"
举例:
标志ID,数据帧,ID数值0x222, 发送数据0,1,2,3,4,5,6,7
can_bus("send", 0, 0, 0x222, "\x00\x11\x22\x33\x44\x55\x66\x77")
3、CAN接收函数
返回值1, 返回值2, 返回值3, 返回值4, 返回值5 = can_bus ("recive", 参数2)
返回值1:
返回的数字是字符串方式的,如果要数值方式可以使用LUA函数string.byte转换下,也可以直接调用print_hex打印出来
返回值2:
返回数据长度
返回值3:
ID数值
返回值4:
ID类型,0x00000000表示数据帧,0x20000000表示遥控帧
返回值5:
0表示返回失败,1表示返回成功。
参数2:
表示等待超时时间,单位ms,比如设置5000, 等待5秒内没有收到数据,将立即返回。
4、CAN关闭函数
can_bus("close")
直接调用这个函数即可。
【实际操作举例】
硬件连接:

经典CAN举例:
配置经典CAN,1M,标准ID 0x222, 向目标板发送数据0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,等待目标板返回数据超时时间5000ms
实现代码如下:
[Lua] 纯文本查看 复制代码 can_bus("open", 0, 8, 1000000, 1000000)
can_bus("send", 0, 0, 0x222, "\x00\x11\x22\x33\x44\x55\x66\x77")
data,len,id,idtype, re = can_bus ("recive", 5000)
if(re == 1) then
print("返回数据:")
print_hex(data)
print(string.format("数据长度:%d,CAN ID: 0x%x,ID类型:%x", data, len, id, idtype))
else
print("返回数据失败")
end
CANFD举例:
配置CANFD,仲裁1M+数据2M,等待目标板返回数据超时时间5000ms
实现代码如下:
[Lua] 纯文本查看 复制代码 can_bus("open", 2, 16, 1000000, 8000000)
data,len,id,idtype, re = can_bus ("recive", 5000)
if(re == 1) then
print("返回数据:")
print_hex(data)
print(string.format("数据长度:%d,CAN ID: 0x%x,ID类型:%x", len, id, idtype))
else
print("返回数据失败")
end
【CAN助手和LUA同时使用】
通过这种方式,更加灵活,更加随心所欲。
配置经典CAN,1M,标准ID 0x222, 向目标板发送数据0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,等待目标板返回数据超时时间5000ms
1、先配置:
2、添加LUA代码,仅需添加发送和接收处理即可,不需要再做初始化,因为第1步已经配置
[Lua] 纯文本查看 复制代码 can_bus("send", 0, 0, 0x222, "\x00\x11\x22\x33\x44\x55\x66\x77")
data,len,id,idtype, re = can_bus ("recive", 5000)
【CAN Bootloader案例】
1、【实战技能】单片机bootloader的CANFD,I2C,SPI和串口方式更新APP视频教程(2022-08-01)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114491
2、CANFD/CAN Bootloader案例下载和文字版操作说明
https://www.armbbs.cn/forum.php?mod=viewthread&tid=113770
|
评分
-
查看全部评分
|