can设备调试 - linux driver

这篇文章主要介绍can设备的调试相关信息,不具体介绍驱动的实现。

如果驱动写完,对can设备进行验证,可能会出现很多不可预见的问题。下面说说验证步骤

  • 验证can设备可以使用工具can-utils。这个工具包中会有cansend candump等程序。可以直接通过candump canX去接收相关can口的数据。也可以直接通过./cansend can0 123#1122334455667788 去给对应的can口发送数据。
  • 假设我们将板子的can_h和can_l 通过can分析仪连接到上位机了。但是发送和接收都没有任何反应,先确保连接正确,波特率设置正确。
  • 我们进行第一步验证即回环验证。ip link set canX up type can bitrate 500000 loopback on。在通过上面的发送和接收是不是正常。如果正常那可以基本确定驱动和can控制器没问题。
  • 上面验证的基础上也可以查看中断计数,查看中断计数是不是有增加。
root@localhost:~/can-utils# cat /proc/interrupts 
           CPU0       CPU1       CPU2       CPU3       
  3:      11531      11607      19389          6     GIC-0  27 Level     arch_timer
  7:       1586          0          0          0     GIC-0  77 Level     serial
 12:     221787          0          0          0     GIC-0 105 Level     can0
  • 如果回环正常,就是正常不能通讯,那需要检查引脚的配置,即使用的pin脚是否复用到can控制器功能引脚了。 如果复用了,需检查是否同时多个引脚复用同一功能导致冲突。如果can功能没有映射到pin脚上面去,会出现:中断计数不会增加。 ifconfig 发送数据包和接收数据包不会增加。多次执行发送会出现“write: No buffer space available”

  • 如果上面也正常,还是收不到数据。可以断开phy,直接tx 连接rx,然后发送数据看看总线有没有数据。中断计数有没有增加。

记录下默认状态下(没有发送和接收数据):
电平: can_h 2.5v
电平: can_l 2.5v
下面可能跟使用芯片有关。我们芯片测试出来的:
TX 3.3V
RX 3.3V
默认为隐性。
在这里插入图片描述

在外不接设备时,从can口发送数据,在can_h和can_l上是有信号的。 总线上会有错误帧,持续一段时间,然后消失。

总线电阻正常为60欧,(两个终端电阻120Ω并联)。

当硬件和驱动没问题后,假如发送数据,则中断计数和ifconfig中的数据包都会增加。那大概率是没有接其他设备或者波特率设置不匹配。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值