找回密码
 立即注册

QQ登录

只需一步,快速开始

开启左侧

ifconfig can0 up无法启动nuc972的can。

[复制链接]
any012 发表于 2020-4-18 16:38:20 | 显示全部楼层 |阅读模式
自己做的板子,用的can1,管脚是ph14,ph15。
命令行里输入ifconfig can0 up后,打不开can。


  1. root@nuc972 /# ifconfig can0 up                                                                              
  2. nuc970-can1 nuc970-can1 can0: bit-timing not yet defined                                                     
  3. nuc970-can1 nuc970-can1 can0: failed to open can device                                                      
  4. ifconfig: SIOCSIFFLAGS: Invalid argument

复制代码


使用 ip link set can0 type can bitrate 125000 设置速率,结果也不成功。


  1. root@nuc972 /# ip link set can0 type can bitrate 125000                                                      
  2. ip: either "dev" is duplicate, or "type" is garbage  

复制代码


但是ifconfig -a倒是可以看到有can0,不过好奇为什么是can0?我硬件上用的是can1啊?

  1. root@nuc972 /# ifconfig -a                                                                                   
  2. can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00                          
  3.           NOARP  MTU:16  Metric:1                                                                           
  4.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0                                                
  5.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                                               
  6.           collisions:0 txqueuelen:10                                                                        
  7.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)                                                            
  8.           Interrupt:59  

  9. 。。。
复制代码



回复

使用道具 举报

admin 发表于 2020-4-21 11:15:54 | 显示全部楼层
请问您用的是can1,为何用ifconfig can0 up?
牛卧堂
回复 支持 反对

使用道具 举报

admin 发表于 2020-4-21 11:17:00 | 显示全部楼层
  1. -*- Networking support ---> <*> CAN bus subsystem support ---> --- CAN bus subsystem support <*> CAN Gateway/Router (with netlink configuration) CAN Device Drivers ---> <*> Platform CAN drivers with Netlink support
  2. CAN bit-timing calculation <*> NUC970 CAN0/CAN1 devices ---> --- NUC970 CAN0/CAN1 devices
  3. NUC970 CAN0 support
  4. Enable CAN0 wake-up function NUC970 CAN0 pin selection (Tx:PB11, Rx:PB10) ---> (X) Tx:PB11, Rx:PB10 ( ) Tx:PH3, Rx:PH2 ( ) Tx:PI4, Rx:PI32
  5. NUC970 CAN1 support
  6. Enable CAN1 wake-up function NUC970 CAN1 pin selection (Tx:PH15, Rx:PH14) ---> (X) Tx:PH15, Rx:PH14
复制代码
牛卧堂
回复 支持 反对

使用道具 举报

admin 发表于 2020-4-21 11:17:40 | 显示全部楼层
可以参考下上面的
牛卧堂
回复 支持 反对

使用道具 举报

匿名  发表于 2020-4-21 14:46:56
该问题解决了。

执行 ip link set can0 type can bitrate 125000 命令不成功,是因为buildroot默认生成的ip命令不支持配置can。构建root时,勾选iproute2选项,再次编译生成的文件系统里的ip命令就可以执行了。

至于为什么我用的是物理can1,而Linux里显示的是can0,我估计是把第一个can设备当can0吧。

再请教个qt下can的使用问题。看qt5.6的官方can例程,使用QCanDeivce后,需要确定使用哪个can插件。我仿照这个例程写了个简单界面,看搜到的插件有:peakcan, socketcan, tinycan。我该指定哪个插件呢?
回复 支持 反对

使用道具

匿名  发表于 2020-4-22 10:37:37
回复 支持 反对

使用道具

klshu36 发表于 2020-5-11 02:57:44 来自手机 | 显示全部楼层
socket can
回复

使用道具 举报

klshu36 发表于 2020-5-11 02:58:57 来自手机 | 显示全部楼层
你qt5.6移植成功了吗?显示是qml还是widget?
回复 支持 反对

使用道具 举报

 楼主| any012 发表于 6 天前 | 显示全部楼层
我没有自己移植qt,用的buildroot构建的带qt5.6的文件系统。
之前尝试过移植qt最新版,可好像和gcc版本有关,gcc版本又和内核版本有关...于是放弃了。

虽然用Ip link命令设置波特率及打开can口成功,在qt里用qCanBusDevice的socketcan插件,可以正常发送,但是无法接收。查看qtserialbus源码,发现qt5.6好像不支持有些命令。
最后,还是用新塘官方例程里的c函数。打开及发送好说,接收有点麻烦,是新开了个线程,不停地接收。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU