本文主要是介绍使用CAN Utilities对CAN接口进行测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用CAN Utilities对CAN接口进行测试
Linux系统通过SocketCAN层提供CAN支持,使得可以使用类似操作socket API函数来操作CAN总线,具体关于SocketCAN说明请见这里。
/*ip –details查看CAN总线状态*/
root@freescale /$ ip -details link show can0
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN qlen 1000link/can can <TRIPLE-SAMPLING> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0 bitrate 500000 sample-point 0.866 tq 133 prop-seg 6 phase-seg1 6 phase-seg2 2 sjw 1flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1clock 30000000/* ip -details -statistics 查看工作状态*/
root@freescale /$ ip -details -statistics link show can0
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN qlen 1000link/can can <TRIPLE-SAMPLING> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0 bitrate 500000 sample-point 0.866 tq 133 prop-seg 6 phase-seg1 6 phase-seg2 2 sjw 1flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1clock 30000000re-started bus-errors arbit-lost error-warn error-pass bus-off0 0 0 1 0 0 RX: bytes packets errors dropped overrun mcast 28630768 3578846 0 0 0 0 TX: bytes packets errors dropped carrier collsns 7178744 897343 0 0 0 0
root@freescale /$ FlexCAN接口发送接收测试root@freescale /$ candump can0
interface = can0, family = 29, type = 3, proto = 1
<0x00201000> [8] 00 00 00 00 00 00 00 00
<0x08701008> [8] 18 00 08 04 00 00 01 00
通过C程序操作CAN总线示例
a). 首先同样需要使用ip link命令配置CAN接口bitrate并使能接口,这里同样在Colibri iMX6上面使用can1接口,同时Apalis iMX6上面使用can0接口。
b). 测试c程序代码请见如下:
代码
./ 程序执行包含两个变量,第一个变量为”-r”或者”-s”来制定接收或者发送,第二个变量为所要测试的CAN bus,如”can0”。
利用SocketCAN可以非常方便的在Linux下使用CAN总线,另外CAN总线也支持同时发送并接收,这里就不做演示了
这篇关于使用CAN Utilities对CAN接口进行测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!