完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
12月份,英创对现主要销售的产品EM928X、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_MACHINEDriversBuiltinCAN1]中BusErrorReport项设置是否需要接收错误帧,默认不接收。 图 新驱动CAN总线错误处理模式 错误帧详细定义见附录《CAN错误帧定义》。 5、修改发送逻辑 原驱动发送指令只是将需要发送的数据帧放入发送BUFFER区,只要BUFFER区未满均返回成功,但是不代表实际发送成功。 原CAN驱动会自动检查发送BUFFER区里未发送的CAN包并尝试发送,对未发送成功的CAN包会自动重发,直到发送成功。 在CAN数据线断开时,CAN发送指令会返回TRUE,但实际数据仍存在发送BUFFER中并未发送出去。当CAN数据线重新连接后,BUFFER中的数据才得以发送。 图 原驱动CAN发送流程 新驱动发送函数为阻塞函数,超时时间默认为1000ms,可以设置注册表[HKEY_LOCAL_MACHINEDriversBuiltInCAN1]中TxTimeout项修改该时间长短。返回值为实际发送是否成功的逻辑值。 当CAN总线错误,发送失败后,CAN驱动不会自动重发CAN包,所以需要应用层自行判断是否重发。 图 新驱动CAN发送流程 6、增加CAN接收BUFFER到8K,可以缓存更多CAN包 附录 《英创新CAN驱动接口调用方法及说明》 《CAN错误帧定义》 成都英创信息技术有限公司 http://www.emtronix.com |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-22 07:45 , Processed in 0.781485 second(s), Total 48, Slave 36 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号