龙芯技术社区
直播中

tinnu

8年用户 133经验值
擅长:可编程逻辑 嵌入式技术 控制/MCU
私信 关注
[2K系列]

【龙芯2K0300蜂鸟板试用】CAN接口驱动板设计、CANFD测试、CAN C++程序驱动测试

绘制接口板

  • 3k0300支持4路CANFD,从原理图来看,只是把TX和RX放出来了,并没有差分收发器IC。

    CAN网

  • 为了测试CAN功能,必须先做一个驱动板。

    CAN 3D.png

  • 两路CANFD挤在一个6P的PH2.0端子上,另外还有3.3V的VCC和GND。

    6p ph2.0.png

  • IC选用了川土微的IS3050,原因无他,只是公司有一些闲散的编带可以偷偷薅一点来用。一块驱动板用两颗IS3050,貌似这颗IC不便宜,主要成本都在这里了。(后来才发现公司还有川土微的双路CAN收发器,不过已经测完了,算了)

    IS3050
    IS3050

  • IS3050低压端用6P的PH2.0端子上的3.3V VCC,但高压端需要额外供电,所以再做一个USBC接口的电源输入,由于只需要电源,就用一个6P的封装,y1s1,比microusb好焊接。这次我忘记把引脚拉长愣是焊接上了,没有连焊,放在microusb根本做不到。

  • 6P的PH2.0端子我刷了个心眼,一开始用贴片,后来改了。事实证明这个决定是明智的,我买的插接线是同向的,所以我只能反过来装。

    CAN back.jpg

  • 这是立创EDA专业版的图纸,已经修复了6P的PH2.0端子同向问题。

  • *附件:ProProject_loongson-CANFD-ext_2024-08-25.epro.7z

测试

  • 先用短接线把两路CAN短接起来,测试一下互相收发:

    CAN FRONT.jpg

  • 测试CAN通信

    ifconfig can0 down
    ip link set can0 type can bitrate 250000 restart-ms 100
    ifconfig can0 up
    candump can0
    
    ifconfig can1 down
    ip link set can1 type can bitrate 250000 restart-ms 100
    ifconfig can1 up
    cansend can1 123#1122334455667788
    

    测试CAN.png

  • 测试CANFD通信

    ifconfig can0 down
    ip link set can0 type can bitrate 500000 dbitrate 2000000 fd on
    ifconfig can0 up
    candump can0
    
    ifconfig can1 down
    ip link set can1 type can bitrate 500000 dbitrate 2000000 fd on
    ifconfig can1 up
    cansend can1 300##0aa04000100100017aa04000100100017
    

    测试CANFD.png

  • 测试中发现目前CANFD下,数据域只能支持到800000以上

    ip link set can2 type can bitrate 500000 sample-point 0.8 dbitrate 750000 dsample-point 0.8 fd on
    ip link set can2 type can bitrate 500000 sample-point 0.8 dbitrate 800000 dsample-point 0.8 fd on
    
    • 分别测试750000和800000会报错

    测试CAN fail.png

程序测试

  • 开发了一个C++板端程序,接收CAN数据,通过UDP组播出去。程序后面补上。

  • 上位机用Qt开发,加入组播,获取数据

    软件测试.png

eefans-loongarch04-2024-08-25_18.40.37

回帖(2)

jf_38522704

2024-8-26 11:55:37
可以更新bsp 里面的uImage(bsp 地址 https://pan.baidu.com/s/1qMp1Mjhdm0OAQJRxYuY27Q?pwd=1234 提取码:1234)
或者从 https://gitee.com/open-loongarch/linux-5.10 下载代码编译个新的内核,然后加载 driver/net/can/ls_canfd里面的canfd 驱动,支持 10Mpbs
举报

安东

2024-9-19 19:36:13
想问一下楼主,有没有测试过,先发再收,是否正常,我这里两块板卡通过can1连接,卡1先发,卡2收不到数据,必须卡2先执行收,卡1再发才行。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分