此配置方法适用型号为AC7811的单片机,所使用的工具链为木牛
第一步:使用知从提供的木牛工具生成相应的配置代码
使用知从的木牛配置工具的时候必须插上他们提供的物理密钥,如下图所示:
点开木牛工具之后,既可以新建工程,但是有一点可能需要注意的是,workspace的地点应与木牛配置工具的安装路径一致,防止有坑。目录地址如下图所示:
然后可以新建工程,导入DBC文件,生成代码了
关于新建工程,导入DBC这一块有一个值得注意的地方,那就是DBC文件中报文的属性一定要完整,不然这个木牛工具没办法识别,会导致无法导入的情况发生。下面举两个例子
例子一:导入属性不完整的DBC文件,下图是属性不完整的报文Attributes界面,它只有1个Interaction Layer属性,这样木牛工具就没法识别
例子二:导入属性完整的DBC文件,下面这张图片就是经过修改后的DBC文件报文的完整属性,可以看出,里面多出了Diagnostics、ISO TP、Net Management和No Catagory assigned,虽然里面的内容可能No,表示不是这个属性,但是你就是得有,没有就是不行。
下面给大家讲述如何把一个属性不完整的DBC文件添加完整的属性
首先,点开属性不完整的DBC文件,点击File->Import Attribute Definitions from .选择一份属性完整的DBC文件,将完整的属性导入进去即可
属性添加完成后,再次点开报文,查看属性,原来只有一个属性的报文现在就变得完整了,效果如下:
完成之后可能还需要根据报文的具体功能,将它的属性配置好。之前只是给它加上了属性,还没有配置好属性,例如报文ID为771的报文是诊断请求报文,要将里面的Diagnostics中的DiagRequest改为Yes,如下图所示:
其他报文也是类似的方法改好。
后面关于工程的新建,报文的导入,代码生成过程的配置可以查看之前知从的培训视频。
紧接着就是第二步将代码集成进入工程中。
第二步:将代码集成进入工程中
使用木牛工具生成的代码替换掉之前能够正常工作的代码,由于不同的项目,里面报文名称可能会有不用,我们直接编译,然后开始消除error,一般都是某个报文或者信号找不到的error,一般就是替换或者注释,这样基本上就解决啦。编译下载即可。
但是虽然代码没有的error,能够成功编译和下载,但是功能不正常,报文发不出来也收不到。
那是因为我们虽然配置了以下文件:
但是还是不够,我们还要配置Can_Cfg.c、Can_Cfg.h、CanTp_Cfg.c、CanTp_Cfg.h、Dcm_Cfg.c、Dcm_Cfg.h等文件,更改Can_Cfg.c、Can_Cfg.h。是因为我们更改了CanIf和PDUR所在的模块里面的PDU数量、顺序和内容,所以相应的Can接收/发送缓冲区的硬件句柄(CAN邮箱)顺序也得发生改变。Can_Cfg.c、Can_Cfg.h中的内容顺序要与CanIf和PDUR中顺序一致,因为在咱们这个工程中,里面的邮箱模式是选择的FULL模式,也就是PDU和邮箱是一一对应关系,所以顺序保持一致,如果是BASIC模式的话就是PUD和邮箱是多对一的关系,多个PDU可以对应一个邮箱,那就得具体分析了。下面是部分需要修改的模块图片:
如果你把Can_Cfg.c、Can_Cfg.h配置好后,9D报文应该是可以正常发送了。但如果涉及诊断这一块的话,那还得配置一下CanTp_Cfg.c、CanTp_Cfg.h、Dcm_Cfg.c、Dcm_Cfg.h文件,因为诊断报文数据流经CanTp.抵达DCM模块,也需要把PDU的索引配置好。配置好后,应该是可以正常发送771报文和接收到779的回应了。下面是诊断报文大致需要修改的模块:
把下面这几个IPDU索引的宏定义修改一下,大致就能实现771的发送和779的响应了。
关于上面提到的那些手动配置的Cfg文件应该也是可以使用木牛工具直接配置的,但是里面的一些参数的配置搞不太明白。