如何在RK3568工控板的Linux中配置CAN總線

原創(chuàng) 2025-08-09 09:54:36

  在工業(yè)控制和自動化領(lǐng)域,CAN (Controller Area Network) 總線因其高可靠性和實(shí)時性,被廣泛應(yīng)用于各類設(shè)備通信。本文將以維芯科的WTB-RK3568-S工控板為例,詳細(xì)介紹如何在 Linux 環(huán)境中配置和使用 CAN 總線。RK3568 芯片是瑞芯微推出的一款低功耗、高性能的四核ARM SoC,集成了豐富的接口和多媒體功能,使其非常適合用于工業(yè)控制、物聯(lián)網(wǎng)和嵌入式設(shè)備等場景。通過本文的指引,開發(fā)者可以快速上手配置 CAN 總線。

  1. 硬件基礎(chǔ)與驅(qū)動加載

  在開始配置之前,請確保你手中的 維芯科WTB-RK3568-S工控板 上的 CAN 收發(fā)器已正確連接。大多數(shù)工控板會集成 CAN 控制器,其驅(qū)動程序通常已包含在 Linux 內(nèi)核中。我們的任務(wù)是啟用這些驅(qū)動并配置好硬件資源。

  2. 設(shè)備樹 (Device Tree) 配置

  設(shè)備樹(Device Tree) 是 Linux 內(nèi)核用來描述硬件資源的文件,它告訴內(nèi)核有哪些硬件設(shè)備以及如何與它們交互。對于 RK3568,CAN 控制器需要在設(shè)備樹文件中進(jìn)行啟用和配置。

  通常,你可以在 arch/arm64/boot/dts/rockchip/ 目錄下找到你的設(shè)備樹文件,例如 rk3568-xxxx-board.dts。在該文件中,你需要找到或添加如下所示的 CAN 控制器節(jié)點(diǎn)。

DTS:

  // CAN1 控制器配置

  &can1 {

  compatible = "rockchip,rk3568-can-2.0"; // 兼容性,匹配驅(qū)動程序

  assigned-clocks = <&cru clk_can1="">; // 指定時鐘源

  assigned-clock-rates =<200000000>; // 設(shè)置時鐘頻率為 200MHz

  pinctrl-names = "default"; // 引腳控制名稱

  pinctrl-0 = <&can1m1_pins>; // 指定 CAN1 的引腳配置

  status = "okay"; // 啟用此設(shè)備節(jié)點(diǎn)

  };

  // CAN2 控制器配置

  &can2 {

  compatible = "rockchip,rk3568-can-2.0"; // 兼容性,匹配驅(qū)動程序

  assigned-clocks = <&cru clk_can2="">; // 指定時鐘源

  assigned-clock-rates =<200000000>; // 設(shè)置時鐘頻率為 200MHz

  pinctrl-names = "default"; // 引腳控制名稱

  pinctrl-0 = <&can2m0_pins>; // 指定 CAN2 的引腳配置

  status = "okay"; // 啟用此設(shè)備節(jié)點(diǎn)

  };


  這段配置定義了兩個 CAN 控制器:CAN1 和 CAN2。status = "okay" 確保了這兩個控制器在系統(tǒng)啟動時會被啟用。assigned-clock-rates 設(shè)置的時鐘頻率是 CAN 波特率計算的基礎(chǔ),這里我們設(shè)置為 200MHz。pinctrl-0 則指向了具體的 GPIO 引腳配置,確保 CAN_TX 和 CAN_RX 引腳能夠正常工作。完成修改后,你需要重新編譯設(shè)備樹并更新到工控板上。

  3. 內(nèi)核 defconfig 配置

  除了設(shè)備樹,我們還需要在內(nèi)核配置文件中啟用相應(yīng)的 CAN 驅(qū)動模塊。找到你的內(nèi)核 defconfig 文件(通常是 rockchip_defconfig),并確保以下配置項(xiàng)被設(shè)置為 y:

  CONFIG_CAN=y // 啟用 Linux 內(nèi)核的 CAN 核心支持

  CONFIG_CAN_DEV=y // 啟用 CAN 設(shè)備驅(qū)動框架

  CONFIG_CAN_ROCKCHIP=y // 啟用 Rockchip 的 CAN 控制器驅(qū)動

  CONFIG_CANFD_ROCKCHIP=y // 啟用 Rockchip 的 CAN-FD 支持(可選)

  這些配置項(xiàng)將使能 Linux 內(nèi)核中的 CAN 子系統(tǒng),并加載針對 Rockchip 芯片的專用 CAN 驅(qū)動,從而讓系統(tǒng)能夠識別和操作 CAN 控制器。修改后,同樣需要重新編譯內(nèi)核并更新到工控板。

  4. 配置與測試

  在完成設(shè)備樹和內(nèi)核的配置并重新啟動系統(tǒng)后,CAN 設(shè)備應(yīng)該被正確識別為 can0 和 can1。接下來,我們可以使用 ip 和 can-utils 工具來配置和測試 CAN 總線。

  4.1 安裝can-utils工具包

  首先,你需要安裝 can-utils 工具包:

  sudo apt-get install can-utils

  配置 CAN 接口,使用 ip 命令配置 CAN 接口的波特率并將其啟用。我們將兩個接口都設(shè)置為 1Mbps 的波特率。

  # 配置 can0 接口,波特率為 1Mbps 并啟用

  sudo ip link set can0 up type can bitrate 1000000

  # 配置 can1 接口,波特率為 1Mbps 并啟用

  sudo ip link set can1 up type can bitrate 1000000

  執(zhí)行上述命令后,你可以使用 ip link show can0 或 ip -details link show can1 查看接口狀態(tài),確認(rèn)它們已成功啟動。

  發(fā)送與接收測試。接下來,我們進(jìn)行簡單的環(huán)回測試,以驗(yàn)證 CAN 總線是否正常工作。如果你有兩個物理 CAN 接口并已將其連接,你可以通過一個接口發(fā)送,另一個接口接收來測試。

  4.2 測試步驟:

  在一個終端中,啟動 candump 命令監(jiān)聽 can0 接口:

  candump can0

  此時終端將等待接收來自 can0 的數(shù)據(jù)。在另一個終端中,向 can1 接口發(fā)送一條 CAN 報文:

  cansend can1 123#1122334455667788

  這條命令發(fā)送的報文 ID 為 123,數(shù)據(jù)為 1122334455667788。

  你可以在第一個終端中看到 can0 接收到了這條報文,這證明了兩個 CAN 接口間的通信是成功的。輸出類似這樣:

  can0 123 [8] 11 22 33 44 55 66 77 88

  為了進(jìn)行反向測試,我們在 can1 上啟動監(jiān)聽:

  candump can1

  在新的終端中,向 can0 發(fā)送一條報文:

  cansend can0 123#1122334455667799

  在 candump 的終端中,你將看到 can1 接收到了這條報文,至此,CAN 雙向通信測試成功。

  5. 總結(jié)

  通過以上步驟,你可以在 維芯科的WTB-RK3568-S工控板 上成功配置和使用 CAN 總線。這些基礎(chǔ)配置和測試方法對于后續(xù)的 CAN 應(yīng)用開發(fā)至關(guān)重要。

  杭州維芯科電子有限公司作為專業(yè)的主板設(shè)計公司,在RK芯片上,歡迎隨時聯(lián)系維芯科,我司提供的自主設(shè)計RK3568核心板,穩(wěn)定可靠的工控機(jī)。


相關(guān)產(chǎn)品>

  • RK3588工控板

    ●CPU:Rockchip RK3588●架構(gòu):四核Cortex-A76 + 四核Cortex-A55●NPU:6TOPS●內(nèi)存:4GB 8GB 16GB LPDDR4x●Flash:32GB


    了解詳情
    RK3588工控板
  • 瑞芯微RK3588核心板

    ●CPU:RK3588 RK3588J●架構(gòu):四核Cortex-A76 +四核Cortex-A55●NPU:6TOPS●RAM:4GB(默認(rèn)) 8GB 16GB LPDDR4x●ROM:32GB(默認(rèn)


    了解詳情
    瑞芯微RK3588核心板
  • G2L工業(yè)網(wǎng)關(guān)

     CPU:瑞薩G2L 架構(gòu):Cortex A55 主頻:1 2GHz 內(nèi)存:2Gyte DDR4工業(yè)級 Flash:16Mbyte SPI f...


    了解詳情
    G2L工業(yè)網(wǎng)關(guān)
  • AM6254工控板

    ●CPU:TI AM62XCortex A53 單核 雙核 四核●架構(gòu):Cortex A53●主頻:1 4GHZ●內(nèi)存:2GByte ...


    了解詳情
    AM6254工控板