基于代码生成的车身网络电控系统设计

时间:2010-12-09来源:网络

(2)ISR的定位问题。中断服务程序的声明和定义都必须定位于non-banked区域,通过使用“#pragma CODE_SEG NON_BANKED”实现。同时,中断服务程序末尾需要添加“#pragma CODE_SEG DEFAULT”,否则后面的函数也会被定位在non-banked区域而导致错误。因此,中断服务程序必须被“#pragma CODE_SEG NON_BANKED”和“#pragma CODE_SEG DEFAULT”包围起来。这也可通过修改代码生成模板实现。结合ISR返回值的宏定义,只需在当函数返回值的前3个字符是“ISR”时,在函数前后输出上述两条pragma预编译指令即可。生成ISR声明的代码生成模板的核心部分如下:

仍以上述CAN0模块的接收中断为例,最终生成的函数声明如下;


3 调试与验证
本设计除了使用USBCAN卡作为数据采集节点以外,为了验证两种总线协议的实现是否符合标准,更直观地查看总线帧中各个字段的值以及随时检测总线上是否发生帧错误等,使用PC示波器PicoScope 5203搭配总线协议分析软件WaveBPS捕获两种总线信号并进行协议分析。Pi-coScope的两个通道可同时捕获CAN总线及LIN总线上的信号,进一步方便了网关节点的调试。
图5为在控制面板节点(源地址为0x26)打开左转向灯时发送给车灯节点(目标地址为0x20)的CAN数据帧。其中,标记为S的位是根据位填充规则自动插入的填充位。图6为车灯节点收到上述CAN数据帧后,根据网关路由策略及帧转换规则,发送到LIN总线上的数据帧。



4 结论
本设计借助EA的代码生成功能,通过修改代码生成模板以满足车身网络电控系统开发中C语言及编译器的要求,进行了车身网络系统的开发和初步实验验证。此方法极大地方便了设计开发,并可提高系统的可靠性。

1 2 3

关键词: 代码生成 车身 网络 电控

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版