英创信息技术WinCE主板新CAN驱动使用说明

描述

12月份,英创对现主要销售的产品EM928X、ESM928X、EM335X、ESM335X系列工控主板的CAN驱动做了一次较大升级。主要目的是修复原有BUG,同时优化部分逻辑,使得使用起来更加方便。

优化内容

1、修复了原驱动打开过滤器后一个可能导致接收丢包的BUG

EM335X及ESM335X系列主板在打开过滤器后,CAN接收单元过少,在高速收发时可能因为来不及收发导致丢包。新驱动修改了该部分逻辑,同时定义过滤器最大数为4个。新的过滤器设置说明请参考附录《英创新CAN驱动接口调用方法及说明》过滤器设置一节。

2、增加一套新的接口函数

1)新的接口更加简洁清晰,使用起来更加方便。详细请参考附录《英创新CAN驱动接口调用方法及说明》。

2)使用统一标准,英创公司计划在之后推出的产品也采用该标准,方便客户在升级更换平台时移植起来更加方便。

3)完全兼容老驱动。新驱动保留了老驱动所有接口。升级之后,之前开发的CAN应用程序可以继续照常使用。

3、增加对CAN总线错误自动复位功能,修改了CAN总线错误处理逻辑结构

原驱动在CAN总线出错后会上报事件通知上层应用程序,同时挂起等待上层应用程序处理完错误事件后手动复位CAN总线。在等待期间,无法进行CAN的收发工作。

嵌入式主板

图 原驱动总线错误处理流程

新驱动考虑到,实际应用中用户更希望在CAN错误排除后,能够尽快恢复通信。大部分时候并不需要停下来等待CAN错误处理完毕。所以新驱动在CAN总线出错后会自动检查恢复CAN总线。

嵌入式主板

图 新驱动总线错误处理流程

4、修改CAN总线错误处理模式

原驱动需要单独获取CAN错误事件,然后再通过接口查询错误类型,再决定处理方式。新驱动做优化修改了处理模式,使得使用起来更灵活方便。

嵌入式主板

图 原驱动CAN总线错误处理模式

新驱动CAN总线错误信息改为通过帧形式上报,用户可以通过注册表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中BusErrorReport项设置是否需要接收错误帧,默认不接收。

嵌入式主板

图 新驱动CAN总线错误处理模式

错误帧详细定义见附录《CAN错误帧定义》。

5、修改发送逻辑

原驱动发送指令只是将需要发送的数据帧放入发送BUFFER区,只要BUFFER区未满均返回成功,但是不代表实际发送成功。

原CAN驱动会自动检查发送BUFFER区里未发送的CAN包并尝试发送,对未发送成功的CAN包会自动重发,直到发送成功。

在CAN数据线断开时,CAN发送指令会返回TRUE,但实际数据仍存在发送BUFFER中并未发送出去。当CAN数据线重新连接后,BUFFER中的数据才得以发送。

嵌入式主板

图 原驱动CAN发送流程

新驱动发送函数为阻塞函数,超时时间默认为1000ms,可以设置注册表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中TxTimeout项修改该时间长短。返回值为实际发送是否成功的逻辑值。

当CAN总线错误,发送失败后,CAN驱动不会自动重发CAN包,所以需要应用层自行判断是否重发。

嵌入式主板

图 新驱动CAN发送流程

6、增加CAN接收BUFFER到8K,可以缓存更多CAN包

附录

《英创新CAN驱动接口调用方法及说明》

《CAN错误帧定义》

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分