本例程主要講解 CANFD 總線異構(gòu)通訊簡(jiǎn)單實(shí)例。把 CANFD 分配給 M4 核,然后另外一塊開發(fā)板發(fā)送,M4 接收 CANFD 數(shù)據(jù)并通過異構(gòu)通訊方式發(fā)送給 A7 在終端回顯。
1.硬件資源
USB-TTL Debug 線兩根
兩塊開發(fā)板
開發(fā)板配件
2.軟件資源
Linux 5.4.31
STM32CubeIDE 1.3.0
STM32CubeMX5.6.0
3.環(huán)境準(zhǔn)備
預(yù)先安裝好 CubeIDE,CubeMX 等開發(fā)軟件。
4.操作步驟
4.1.A7 核操作
由于 CAN 可以被 A7 和 m4 同時(shí)使用,現(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è)備樹
配置完成之后編譯并拷貝對(duì)應(yīng)設(shè)備樹到 bootfs 分區(qū)。
另官方已經(jīng)默認(rèn)配置了 RPMSG_TTY 驅(qū)動(dòng)。
4.2.M4 核操作
創(chuàng)建一個(gè) STM32 工程,在 STM32CubeMX 里,依次配置 CANFD 用于發(fā)送報(bào)文、以及配置 IPCC 和 OPENAMP 用于通信。
圖 4-1.配置 IPCC
圖 4-2.配置 openamp
圖 4-3.CANFD 配置
注意配置 IPCC 時(shí),需要在 NVIC Settings 選項(xiàng)卡里,將 IPCC RX1 occupiedinterrupt 和 IPCC TX1 free interrupt 的使能勾選上,不然后面的 OPENAMP 的 Activated始終為灰色,無法激活。這里計(jì)劃創(chuàng)建兩個(gè) RPMsg tty 通道,一個(gè)用來傳輸 canfd 報(bào)文,一個(gè)用來統(tǒng)計(jì) canfd報(bào)文的數(shù)量。
初始化兩個(gè) RPMsg tty 虛擬串口 。
注冊(cè)回調(diào)函數(shù)以按通道接收消息 。
設(shè)置 canfd 接收濾波器和發(fā)送數(shù)據(jù) buf,并注冊(cè)回調(diào)函數(shù)和 canfd 接收中斷。
主函數(shù)輪詢 RPMsg 消息 OPENAMP_check_for_message() 查詢 MailBox 狀態(tài) ,主函數(shù)并根據(jù)運(yùn)行時(shí)間向外發(fā)送報(bào)文同時(shí)不停的查詢接收?qǐng)?bào)文。
當(dāng) M4 核接收到 canfd 報(bào)文的時(shí)候,存入 buf,主函數(shù)檢測(cè)到有 buf 數(shù)據(jù),就會(huì)調(diào)用虛擬串口發(fā)送給 A7 端。
4.3.測(cè)試步驟
J12 的 CANH、CANL 引腳和同類型的板子 CANH、CANL 相連,把編譯生成的 M4 固件拷貝到 A7,并啟動(dòng)固件.....
原文標(biāo)題:應(yīng)用開發(fā)筆記|MYD-YA157-V2開發(fā)板CAN BUS 總線通信實(shí)例
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
CAN
+關(guān)注
關(guān)注
57文章
2696瀏覽量
463161 -
通信
+關(guān)注
關(guān)注
18文章
5950瀏覽量
135787 -
bus
+關(guān)注
關(guān)注
0文章
120瀏覽量
47519
原文標(biāo)題:應(yīng)用開發(fā)筆記|MYD-YA157-V2開發(fā)板CAN BUS 總線通信實(shí)例
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論