在英创公司嵌入式主板产品中,高端的335x主板系列及低端的esm9287主板均可支持2路can总线标准接口。本文提供ce平台的em3352和em9287的can接口的数据接收的性能情况,供客户在开发应用程序时参考。
测试条件:
1、由一张独立的linux平台的主板发送数据,模拟can总线环境。数据发送速率由示波器标定确认。发送的数据帧中包含当前发送数据帧的累积计数值。
2、在ce平台运行的测试程序采用vc/c++编写。接收线程以最快速度读取底层can驱动已接收到的数据包,并提供接收数据包统计,并与数据帧的计数值比较。
em3352(wec7)测试结果:
can bit rate
can总线帧速
丢包情况
其他说明
1mbps
2000帧/s
无
此时cpu负载率为17%
1mbps
2000帧/s
无
远程桌面进程使cpu负载率至37%
1mbps
5000帧/s
有
此时cpu负载率至90%
在5000帧/s的测试中,当帧速返回2000帧/s,则丢包则消失,cpu负载率恢复正常。过程中系统不会死机。
em9287(ce6.0)测试结果:
can bit rate
can总线帧速
丢包情况
其他说明
1mbps
1000帧/s
无
连续监测320000帧数据
500kbps
1000帧/s
无
连续监测720000帧数据
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读取一帧数据,然后循环直至读完所有数据也是可以的,只是效率要比一次性读完的方式稍低一些。
2018上半年智能手机AMOLED面板出货约2亿片,SDC遥遥领先占94.7%
三菱Q06UDV CPU与安川MP2300S CPU简易通信设置
Socket采用C/S模型进行设计的服务器模型
华为MateBook D怎么样值得买吗?华为MateBook D商务本评测
视频监控在零售中的主要应用可以分为三个环节
英创信息技术WinCE主板CAN接口数据接收性能测试介绍
神奇Li-Fi市场坐拥千亿美元“前景” 如今它有何最新成果?
千方科技宣布新的AI子公司博观智能正式落处济南
供应罗德与施瓦茨DVSG数字视频信号源
图文详解17种电容的分类
奥睿科新成员NVMe M.2固态透明硬盘盒强势来袭
DC-DC电路电感的参数选择详解
一站式定制芯片及IP供应商灿芯半导体推出两项创新技术用于DDR物理层
国家出台多部工业互联网产业政策,促进工业互联网产业的发展
linux下调试core dump的方法
汇威AICALLV9怎么样 值不值得买
新一轮集成电路产业扶持规划或近期出台
Transography美国数据产品为交通建模和分析提供准确性
新加坡发明更快速持久的防伪新技术
Aeroflex推出全球首款用于飞机航线测试的便携式射频高度