完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在英创公司嵌入式主板产品中,高端的335x主板系列及低端的ESM9287主板均可支持2路CAN总线标准接口。本文提供CE平台的EM3352和EM9287的CAN接口的数据接收的性能情况,供客户在开发应用程序时参考。
测试条件: 1、由一张独立的Linux平台的主板发送数据,模拟CAN总线环境。数据发送速率由示波器标定确认。发送的数据帧中包含当前发送数据帧的累积计数值。 2、在CE平台运行的测试程序采用VC/C++编写。接收线程以最快速度读取底层CAN驱动已接收到的数据包,并提供接收数据包统计,并与数据帧的计数值比较。 EM3352(WEC7)测试结果:
EM9287(CE6.0)测试结果:
CE平台的CAN驱动程序,至少设置了能缓冲256帧数据的buffer,对1Mbps波特率按每帧数据160us(实测值)计算,则内部缓冲区可至少保存40ms的数据。换句话说,上层应用程序需在40ms内把驱动程序已接收的数据全部取出,这样才能保证不丢包。典型的应用程序读取数据调用如下: //一次读取尽可能多的数据帧 BOOL rc = ReadFile(hCAN, // “CAN#:”Handle pRxBuffer, // 足够大的接收buffer sizeof(CAN_MESSAGE)*MAX_ARRAY, // MAX_ARRAY=256 &dwLen, // 实际读到的字节数 NULL); 为了尽快读出所有缓冲在驱动程序中的数据,最好是使用一个尽可能大的Buffer,然后通过返回的dwLen值来判断本次调用所读取的数据帧数。有些应用采用每次ReadFile读取一帧数据,然后循环直至读完所有数据也是可以的,只是效率要比一次性读完的方式稍低一些。 |
|||
相关推荐 |
|||
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:57 , Processed in 0.665348 second(s), Total 46, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号