牛卧堂MCU技术交流

标题: ifconfig can0 up无法启动nuc972的can。 [打印本页]

作者: any012    时间: 2020-4-18 16:38
标题: ifconfig can0 up无法启动nuc972的can。
自己做的板子,用的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
请问您用的是can1,为何用ifconfig can0 up?
作者: admin    时间: 2020-4-21 11:17
  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
可以参考下上面的
作者: 匿名    时间: 2020-4-21 14:46
该问题解决了。

执行 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
参考下这个页面?
http://qt5.digitser.net/5.12/zh-CN/qtcanbus-backends.html
作者: klshu36    时间: 2020-5-11 02:57
socket can
作者: klshu36    时间: 2020-5-11 02:58
你qt5.6移植成功了吗?显示是qml还是widget?
作者: any012    时间: 2020-5-21 11:59
我没有自己移植qt,用的buildroot构建的带qt5.6的文件系统。
之前尝试过移植qt最新版,可好像和gcc版本有关,gcc版本又和内核版本有关...于是放弃了。

虽然用Ip link命令设置波特率及打开can口成功,在qt里用qCanBusDevice的socketcan插件,可以正常发送,但是无法接收。查看qtserialbus源码,发现qt5.6好像不支持有些命令。
最后,还是用新塘官方例程里的c函数。打开及发送好说,接收有点麻烦,是新开了个线程,不停地接收。
作者: 匿名    时间: 2020-6-29 09:00
请问你用的是带C后缀的芯片么
作者: any012    时间: 2023-2-7 10:26
游客 116.24.66.x 发表于 2020-6-29 09:00
请问你用的是带C后缀的芯片么

是带C后缀的芯片。

现在是在qt程序中用system(ip link set can0 type can bitrate 500000);  system(ifconfig can0 up);来实现打开can及设置波特率的。接收发送用socketcan.





欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2