can总线功能介绍
can总线是博世公司1986年发明的用于汽车内部单片机电路板(ecu)之间通讯,硬件上使用2根线实现数据传输,can总线通讯单元不再是单个字节,而是一个数据包,这个数据包包含了数据长度,数据内容,目的地址id,crc校验等,相较于485,232通讯数据的组包是在软件实现的,can总线是硬件实现,编程时只要设置相关的参数即可.目前在车载通讯和工业通讯都使用的比较多.主要功能有:不大于8字节应用报文实时通讯:控制灯光开关,天窗开关,空调控制等,涉及到具体的模块的实际业务逻辑大于8字节的长报文通讯:读取故障码,软件版本,ota等lua简介
lua是一个文本脚本语言,1993年巴西人发明的,能嵌入到c,c++执行,即可以调用c/c++的函数,目前在游戏行业用的比较多.
c/c++为什么需要脚本语言
c/c++代码运行的时候已经由编译器编译成了二进制的机器码了,执行速度快.公司项目需求变化快,类似项目超级多,不同项目的核心功能基本不变的,只是业务逻辑的变化.如果全部用c/c++实现,一方面软件版本过多,不好维护。另一方面架构做的不够好时可能会造成改一个小功能,会造成核心代码修改.然而采用c/c++加脚本的架构实现有如下优势:
c/c++实现核心功,框架搭建,脚本负责业务逻辑(c/c++的不同函数组合),设计之初就是朝着模型和业务分离的实现,自然地实现高内聚低耦合的架构。便于团队分工,新员工比较快熟悉业务.为什么是lua
目前最火的脚本语言是python,对此lua有如下优点:
lua移植简单:lua编译器是用标准c写的,比较容易集成到不同的编译器(keil,gcc,qt等)。不像什么micropython只支持gcc编译器.开销小:一般的cortex m0及以上单片机都可以移植lua编译,还有很大的一部分空间和时间运行c代码.干净:不像python运行还要安装其它的环境,lua是寄宿在c/c++中的,不需要安装。容易上手,学习成本几乎为零.只要公司开发个demo,新人参考demo就可以直接写lua代码.
can用lua做什么自动化测试:c/c++提供发送接收报文 延时等函数接口,lua组合发送不同的报文以及时序来验证ecu的各个功能是否正确,然后生成测试报告以及保存相关的通讯报文记录。ota升级:现在新能源汽车的每个ecu都支持ota功能,通讯组包使用iso 15765-2协议实现,每个汽车主机厂都是一样的,只是安全访问 顺序可能有些差别.就像zlg zcan pro,canoe都支持用户开发升级功能。zlg的方式是:使用dll实现,需要使用 vstudio,学习成本高.canoe的方式是:他们自己弄了一套capl脚本语言,公司没有强大的实力是搞不出来的,这也是canoe贵的原因之一吧!使用lua的话,c/c++实现iso 15765-2,hex文件的解析和分割.lua是调用发送接收接口,hex文件读取,安全访问的密钥计算等.demo
c/c++的接口暴露给lua:
lua_state* l;static const struct lual_reg iterface[]{ {send_data,lsenddata}, //脚本里调用send_data字符串就可以调用到lsenddata函数 {get_rx_data,lgetrxdata}, {print,lprint}, {delay,ldelay}, {0,0},};void lua_init(){ l = lual_newstate(); luaopen_base(l); lual_setfuncs(l,iterface,0);}lua脚本业务代码
print('ecu功能测试')--发送一帧数据唤醒单片机send_data(0x431,0x30,0x32)--延时50msdelay(50)--开天窗send_data(0x38a,0x1)delay(5000)--关天窗send_data(0x38a,0x1)--ecu复位send_data(0x880,0x11,0x1,0x67)总结
lua之于can就像html和英特网的关系一样,在新能源汽车发展如火如荼的今天,can的应用也越来越多,都有ota升级的要求,lua不仅在基于can系统的测试,升级方面也能够有自己的一席用武之地,在其它的modbus之类的标准通讯也是可以使用lua的.
10.3.2 石墨烯(Graphene)∈《集成电路产业全书》
线路板怎样做可以防止翘板
厦门市区块链协会正式成立
电蜂介绍HSD连接器和普通连接器之间的区别
打卡“未来工作”,VDI存储当然是全闪存
CAN总线有哪些功能?
人工智能基础知识点总结
IoT和人工智能趋势对智能家居的推动作用
双摄手机并不是只有iphone7plus,oppor11、华为p10这些双摄手机也值得入手
移动通信业务收入都不及它
SimpleLink 超低功耗 MCU 带来全新 Bluetooth5 设计变革
浅谈AI的前景和潜在隐患
dc ac逆变器电路图
网联汽车里面的车载智能终端包括了哪些芯片等模块?
零线带电的四种原因
ZYNQ进阶:PL端实现串口UART的接收设计
嵌入式软件设计之状态机编程开发方案
电力电缆的故障原因及检修方法
英国警方计划了解比特币一线警员必须学习比特币
iPhone无线显示投屏的软件有哪些?手机如何投屏电脑?