本例程主要講解 CANFD 總線異構通訊簡單實例。把 CANFD 分配給 M4 核,然后另外一塊開發板發送,M4 接收 CANFD 數據并通過異構通訊方式發送給 A7 在終端回顯。
1.硬件資源
USB-TTL Debug 線兩根
兩塊開發板
開發板配件
2.軟件資源
Linux 5.4.31
STM32CubeIDE 1.3.0
STM32CubeMX5.6.0
3.環境準備
預先安裝好 CubeIDE,CubeMX 等開發軟件。
4.操作步驟
4.1.A7 核操作
由于 CAN 可以被 A7 和 m4 同時使用,現在是要分配給 m4,所以在 A7 端通過設備樹把 CAN 分配給 m4。操作步驟如下:
1) 配置設備樹
進入內核源碼目錄 stm32mp15xc-kernel5.4/arch/arm/boot/dts,vim 打開stm32mp15xx-ya157c.dtsi 設備樹文件,把 can1 分配給 m4,并屏蔽掉 A7 端的 can1。
接著配置資源管理器,分配異構通訊的 SRAM。
2) 編譯并更新設備樹
配置完成之后編譯并拷貝對應設備樹到 bootfs 分區。
另官方已經默認配置了 RPMSG_TTY 驅動。
4.2.M4 核操作
創建一個 STM32 工程,在 STM32CubeMX 里,依次配置 CANFD 用于發送報文、以及配置 IPCC 和 OPENAMP 用于通信。
圖 4-1.配置 IPCC
圖 4-2.配置 openamp
圖 4-3.CANFD 配置
注意配置 IPCC 時,需要在 NVIC Settings 選項卡里,將 IPCC RX1 occupiedinterrupt 和 IPCC TX1 free interrupt 的使能勾選上,不然后面的 OPENAMP 的 Activated始終為灰色,無法激活。這里計劃創建兩個 RPMsg tty 通道,一個用來傳輸 canfd 報文,一個用來統計 canfd報文的數量。
初始化兩個 RPMsg tty 虛擬串口 。
注冊回調函數以按通道接收消息 。
設置 canfd 接收濾波器和發送數據 buf,并注冊回調函數和 canfd 接收中斷。
主函數輪詢 RPMsg 消息 OPENAMP_check_for_message() 查詢 MailBox 狀態 ,主函數并根據運行時間向外發送報文同時不停的查詢接收報文。
當 M4 核接收到 canfd 報文的時候,存入 buf,主函數檢測到有 buf 數據,就會調用虛擬串口發送給 A7 端。
4.3.測試步驟
J12 的 CANH、CANL 引腳和同類型的板子 CANH、CANL 相連,把編譯生成的 M4 固件拷貝到 A7,并啟動固件.....
原文標題:應用開發筆記|MYD-YA157-V2開發板CAN BUS 總線通信實例
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
CAN
+關注
關注
57文章
2770瀏覽量
464398 -
通信
+關注
關注
18文章
6072瀏覽量
136433 -
bus
+關注
關注
0文章
121瀏覽量
47707
原文標題:應用開發筆記|MYD-YA157-V2開發板CAN BUS 總線通信實例
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論