3k0300支持4路CANFD,从原理图来看,只是把TX和RX放出来了,并没有差分收发器IC。
为了测试CAN功能,必须先做一个驱动板。
两路CANFD挤在一个6P的PH2.0端子上,另外还有3.3V的VCC和GND。
IC选用了川土微的IS3050,原因无他,只是公司有一些闲散的编带可以偷偷薅一点来用。一块驱动板用两颗IS3050,貌似这颗IC不便宜,主要成本都在这里了。(后来才发现公司还有川土微的双路CAN收发器,不过已经测完了,算了)
IS3050低压端用6P的PH2.0端子上的3.3V VCC,但高压端需要额外供电,所以再做一个USBC接口的电源输入,由于只需要电源,就用一个6P的封装,y1s1,比microusb好焊接。这次我忘记把引脚拉长愣是焊接上了,没有连焊,放在microusb根本做不到。
6P的PH2.0端子我刷了个心眼,一开始用贴片,后来改了。事实证明这个决定是明智的,我买的插接线是同向的,所以我只能反过来装。
这是立创EDA专业版的图纸,已经修复了6P的PH2.0端子同向问题。
先用短接线把两路CAN短接起来,测试一下互相收发:
测试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
测试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下,数据域只能支持到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
开发了一个C++板端程序,接收CAN数据,通过UDP组播出去。程序后面补上。
上位机用Qt开发,加入组播,获取数据
更多回帖