
CSM431B 產品簡介CSM431B 內部集成有獨立的CANFD控制器,支持通過SPI/UART擴展出兩路CANFD 收發接口,該接口再配合外置的CANFD收發器即可擴展兩路CANFD總線接口。當用戶控 制板上的CANFD控制器資源不夠時,可以通過SPI或UART接口擴展出更多的CANFD總線接口。
除CSM431B外,ZLG致遠電子還有SPI/UART轉單路CAN芯片CSM330A(隔離)與CSM331A(非隔離)及SPI/UART轉雙路CANFD芯片CSM430B(隔離)等產品。CSM系列協議轉換芯片相較于傳統模塊方案,其生產工藝更先進,占板面積更小,同時具備更高的集成度與性能參數,能夠為用戶提供標準、可靠的CAN或CANFD接口擴展方案。

軟硬件準備1. 軟件方面
安裝好虛擬機的電腦;
M3568-T對應的sdk(詳見光盤資料,找FAE索取);
虛擬機鏡像(找FAE索取)。
2. 硬件方面
CSM431B-Eval評估板 1個;
M3568-EV-Board評估底板 1個;
M3568-4GF16GLI-T 核心板 1片;
網線 1根;
工業接頭12V/2A輸出的適配器 1個;
USB轉TypeC線 1根;
杜邦線 若干。
M3568-T核心板移植CSM431B驅動備注:CSM431B支持 UART或者SPI 拓展 CANFD,本文只涉及 SPI拓展 2路CANFD 的相關操作。
1. 認識硬件
1.1 M3568-EV-Board評估套件


可以看到M3568-EV-Board上有一個牛角座的IO拓展口,從 IO擴展座子管腳說明表 中,可以看到有一路SPI0,可用來與CSM431B的SPI相連。
同時會將UART4、UART5復用成GPIO,分別用來連接 CSM431B-Eval評估板 的RST、INT、CFG等引腳。
整理M3568-EV-Board 與 CSM431B-Eval 的杜邦線連接關系如下:

2. CSM431B-Eval評估板


評估板上靠近CSM431B這一側的排針,需要使用杜邦線引出來,接到上述的M3568-EV-Board評估板上的IO拓展座子上。
包括:RST、NSS、INT、SCK、MOSI、MISO、CFG。注意這些引腳要跟M3568-EV-Board評估板上的IO拓展座子引腳一一對應,不要連錯了。
整理 CSM431B-Eval 與 M3568-EV-Board 的杜邦線連接關系如下:


因為CSM431B芯片內部是不帶CAN收發器的,所以評估板需要獨立供電,讓底板上的CAN收發器也正常工作。
另外還需要引一根杜邦線,將 CSM431B-Eval評估板的GND 與 M3568-EV-Board評估板上的IO拓展座子的GND連接共地,以及注意跳線帽的連接。
2. 內核修改
內核修改基于我司【光盤資料】M3568-T 在線資料包 中的sdk包。
2.1 設備樹
#進入kernel目錄之后,執行以下命令vi ./arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
下列是rk3568-evb1-ddr4-v10.dtsi需要修改的內容:
//屏蔽掉默認的UART4、UART5的功能/*&uart4 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart4m1_xfer>;};&uart5 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart5m1_xfer>;};*///spi總線添加csm400b_spi設備描述&spi0 {pinctrl-names = "default";pinctrl-0 = <&spi0m1_pins &spi0m1_cs0>; /* only cs0, so reg can only be configured as 0 */status = "okay";csm400b_spi: csm400b-spi@0{pinctrl-names = "default";pinctrl-0 = <&csm431b_gpio>;compatible = "zhiyuan,csm400b-spi";reg = <0>;gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW /* for rst */&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; /* for cfg */interrupt-parent = <&gpio3>;interrupts = <RK_PB1 IRQ_TYPE_LEVEL_LOW>; /* for interrupt GPIO */spi-max-frequency = <3000000>;gid = <0>; /* if gid = <1> , just using can0, else if gid = <0>, using can0 and can1 */status = "okay";};};//將UART4、UART5復用成GPIO&pinctrl {csm431bgpio {csm431b_gpio:csm431b-gpio {rockchip,pins =//RST<3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>,//INT<3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>,//CFG<3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;};};};
2.2 添加驅動
將csm400b_spi.c、csm400b_spi.h拷貝到kernel/drivers/net/can目錄
CSM430B、CSM431B的驅動文件可以在我司官網下載:
https://www.zlg.cn/Power/Down/down/id/351.html
驅動文件路徑:CSM430B&CSM431B_driver\spi

修改kernel/drivers/net/can/Makefile
+ obj-$(CONFIG_CAN_CSM400B) += csm400b_spi.o修改kernel/drivers/net/can/Kconfig
config CAN_CSM400Btristate "zlg csm400b to can device"depends on TTY && SERIAL_DEV_CTRL_TTYPORT && SERIAL_DEV_BUShelpSupport for ZLG CSM400B to CAN interfaces.This is a CAN device driver which registers as an serial、spi adapterand gpiochip to expose these functions of the CSM400B.
修改linux內核配置make menuconfig
CONFIG_SERIAL_DEV_BUS=yCONFIG_SERIAL_DEV_CTRL_TTYPORT=yCONFIG_CAN_CSM400B=y
編譯內核
./build.sh kernel3. 編譯燒錄實測
將上述編譯出來的內核燒錄到核心板評估板上,在板子上執行以下命令進行測試:
#查看驅動加載情況。正常會出現"spi check ok"dmesg | grep csm400b#因為M3568-EV-Board評估板本身有2路CAN,所以通過拓展出來的2路CANFD就是CAN3、CAN4#配置CAN3、CAN4ip link set can3 downip link set can3 type can bitrate 1000000 dbitrate 5000000 fd onip link set can3 upip link set can4 downip link set can4 type can bitrate 1000000 dbitrate 5000000 fd onip link set can4 up
將CSM431B評估板拓展出來的2路CANFD接口的CANH、CANL,與我司的 USBCANFD-200U USB接口CAN FD卡相連。
在M3568-T板子上執行命令,測試CSM431B評估板拓展出來的CAN3、CAN4與 USBCANFD-200U 的通訊效果。


測試結果截圖:拓展出來的2路CANFD通訊均正常。








