本例程主要講解 CANFD 總線異構(gòu)通訊簡單實例。把 CANFD 分配給 M4 核,然后另外一 塊開發(fā)板發(fā)送,M4 接收 CANFD 數(shù)據(jù)并通過異構(gòu)通訊方式發(fā)送給 A7 在終端回顯。
2. 硬件資源
USB-TTL Debug 線兩根
兩塊開發(fā)板?
開發(fā)板配件
3. 軟件資源?
Linux 5.4.31?
STM32CubeIDE 1.3.0
STM32CubeMX5.6.0
4. 環(huán)境準(zhǔn)備?
預(yù)先安裝好 CubeIDE,CubeMX 等開發(fā)軟件。
5. 操作步驟
5.1.A7 核操作?
由于 CAN 可以被 A7 和 m4 同時使用,現(xiàn)在是要分配給 m4,所以在 A7 端通過設(shè)備樹 把 CAN 分配給 m4。操作步驟如下:
1) 配置設(shè)備樹?
進(jìn)入內(nèi)核源碼目錄 stm32mp15xc-kernel5.4/arch/arm/boot/dts,vim 打開 stm32mp15xx-ya157c.dtsi 設(shè)備樹文件,把 can1 分配給 m4,并屏蔽掉 A7 端的 can1。
接著配置資源管理器,分配異構(gòu)通訊的 SRAM。
2) 編譯并更新設(shè)備樹?
配置完成之后編譯并拷貝對應(yīng)設(shè)備樹到 bootfs 分區(qū)。
另官方已經(jīng)默認(rèn)配置了 RPMSG_TTY 驅(qū)動。
5.2.M4 核操作
創(chuàng)建一個 STM32 工程,在 STM32CubeMX 里,依次配置 CANFD 用于發(fā)送報文、以 及配置 IPCC 和 OPENAMP 用于通信。
圖 5-1. 配置 IPCC
圖 5-2. 配置 openamp
圖 5-3.CANFD 配置
注意配置 IPCC 時,需要在 NVIC Settings 選項卡里,將 IPCC RX1 occupied interrupt 和 IPCC TX1 free interrupt 的使能勾選上,不然后面的 OPENAMP 的 Activated 始終為灰色,無法激活。這里計劃創(chuàng)建兩個 RPMsg tty 通道,一個用來傳輸 canfd 報文,一個用來統(tǒng)計 canfd 報文的數(shù)量。
初始化兩個 RPMsg tty 虛擬串口 。
注冊回調(diào)函數(shù)以按通道接收消息 。
設(shè)置 canfd 接收濾波器和發(fā)送數(shù)據(jù) buf,并注冊回調(diào)函數(shù)和 canfd 接收中 斷。
主函數(shù)輪詢 RPMsg 消息 OPENAMP_check_for_message() 查詢 MailBox 狀態(tài) ,主 函數(shù)并根據(jù)運行時間向外發(fā)送報文同時不停的查詢接收報文。
當(dāng) M4 核接收到 canfd 報文的時候,存入 buf,主函數(shù)檢測到有 buf 數(shù)據(jù), 就會調(diào)用虛擬串口發(fā)送給 A7 端。
5.3. 測試步驟?
J12 的 CANH、CANL 引腳和同類型的板子 CANH、CANL 相連,把編譯 生成的 M4 固件拷貝到 A7,并啟動固件 .....
獲取完整 MYD-YA157-V2 開發(fā)板 CAN BUS 總線通信實例應(yīng)用開發(fā)筆記
下載地址:http://www.myir-tech.com/soft.asp?id=1197