国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1734|回復(fù): 0
打印 上一主題 下一主題

多核異構(gòu)-雙核高速率CAN-FD評測

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2023-2-17 15:37:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

憑借實時性、抗干擾性和安全性等優(yōu)點(diǎn),CAN2.0在工業(yè)及汽車行業(yè)得到了廣泛應(yīng)用,但其最高速率僅為1Mbit/s,每幀最多只能傳輸8字節(jié)的有效數(shù)據(jù),報文中只有約50%的帶寬用于有效數(shù)據(jù)傳輸。然而隨著產(chǎn)業(yè)的發(fā)展,各種傳感器和控制器數(shù)量的增多,總線上的數(shù)據(jù)量也激增,這使得CAN2.0總線在傳輸速率和帶寬方面的缺點(diǎn)暴露的更加明顯,于是就誕生了CAN-FD。


CAN-FD在傳輸速率和帶寬方面有了明顯的提升,波特率可高達(dá)8Mbit/s,每幀可多達(dá)64字節(jié)有效數(shù)據(jù),傳輸效率可提高至約80%,能夠進(jìn)一步提高總線的實時性,拓寬總線的數(shù)據(jù)帶寬,提升總線的傳輸效率。


在飛凌嵌入式OKMX8MP-C開發(fā)板上有兩路CAN-FD,小編今天就基于這款開發(fā)板以處理器的M核與A核各控制一路CAN-FD互相通信為例,從應(yīng)用角度講述M核和A核如何控制CAN-FD高速通信。




飛凌嵌入式OKMX8MP-C開發(fā)板所搭載的NXP i.MX8M Plus處理器具備強(qiáng)悍的性能,集成4個主頻最高可達(dá)1.8GHz (工業(yè)級主頻為1.6GHz)的Arm Cortex-A53多任務(wù)核和1個Cortex-M7實時核,不管是對數(shù)據(jù)的高速吞吐、處理,還是復(fù)雜的人機(jī)交互界面處理,都能從容應(yīng)對。


01

M核CAN-FD

1. CAN-FD初始化

CAN-FD初始化主要包括總線時鐘,管腳和相應(yīng)寄存器的初始化。具體如下:


(1)CAN總線時鐘:

現(xiàn)將CAN總線倍頻到800MHz,再10分頻到80MHz。

CLOCK_SetRootMux(kCLOCK_RootFlexCan1, kCLOCK_FlexCanRootmuxSysPll1); // 設(shè)置CAN1總線時鐘為800MHz  CLOCK_SetRootDivider(kCLOCK_RootFlexCan1, 2U, 5U);   // 分頻因子為2*5=10,設(shè)置CAN1總線時鐘為80MHz

(2)管腳配置:

選擇CAN1的發(fā)送管腳為32腳,接收管腳為34腳。

IOMUXC_SetPinMux(IOMUXC_SAI2_TXC_CAN1_RX, 0U); // CAN1 RX  IOMUXC_SetPinMux(IOMUXC_SAI2_RXC_CAN1_TX, 0U); // CAN1 TX

(3)CAN波特率:

CAN-FD支持可變速率,即控制區(qū)和數(shù)據(jù)區(qū)的波特率可以不一致,控制區(qū)最大為1Mbit/s;數(shù)據(jù)區(qū)最大為8Mbit/s。后續(xù)程序根據(jù)總線時鐘和設(shè)置的波特率,分配時段設(shè)置的seg1,seg2等數(shù)值。

pConfig->bitRate = 1000000U;   // CAN-FD控制區(qū)波特率為1Mbit/s  pConfig->bitRateFD = 8000000U;   // CAN-FD數(shù)據(jù)區(qū)波特率為8Mbit/s

(4)CAN-FD使能:

除了使能CAN-FD,可變波特率也需要使能,否則數(shù)據(jù)區(qū)的最大速率和控制區(qū)的速率一樣,最大為1Mbit/s。

base->MCR |= CAN_MCR_FDEN_MASK;  // CAN-FD使能  fdctrl |= CAN_FDCTRL_FDRATE_MASK; // 可變波特率使能

(5)關(guān)閉自回環(huán):

如果開啟了自回環(huán),那么CAN1數(shù)據(jù)會在芯片內(nèi)回環(huán),不會到外部管腳,在程序調(diào)試時可以排除外部端子的干擾,但真實應(yīng)用時,需要關(guān)閉自回環(huán),從外部管腳收發(fā)數(shù)據(jù)。

pConfig->enableLoopBack       = false; // 不回環(huán),使用外部管腳

(6)幀格式:

本次我們使用11位標(biāo)準(zhǔn)數(shù)據(jù)幀,小伙伴也在后續(xù)試試擴(kuò)展幀。需要設(shè)置自己的ID,便于總線上其他設(shè)備識別。

mbConfig.format = kFLEXCAN_FrameFormatStandard; // 11位標(biāo)準(zhǔn)幀,非擴(kuò)展幀  mbConfig.type   = kFLEXCAN_FrameTypeData;       // 數(shù)據(jù)幀 非遠(yuǎn)程幀      mbConfig.id     = FLEXCAN_ID_STD(rxIdentifier); // 幀ID 用于區(qū)別總線中不同的設(shè)備

(7)接收過濾:

用戶可設(shè)置接收過濾規(guī)則,這樣就可以只接收特定幀ID的數(shù)據(jù),減少應(yīng)用處理的數(shù)據(jù)量。

rxIdentifier = 0;FLEXCAN_SetRxMbGlobalMask(EXAMPLE_CAN, FLEXCAN_RX_MB_STD_MASK(rxIdentifier, 0, 0));//接收所有ID數(shù)據(jù)

2. CAN-FD收發(fā)流程

本次測試M核做主站,CAN1先發(fā)送一幀包含64字節(jié)數(shù)據(jù),A核CAN2收到,將64字節(jié)數(shù)據(jù)再次發(fā)送,M核CAN1接收。對比發(fā)送和接收的64字節(jié)數(shù)據(jù)是否一致。重復(fù)100次。


(1)CAN-FD發(fā)送數(shù)據(jù):

EXAMPLE_CAN表示為CAN1,flexcanHandle為CAN實例,包含了發(fā)送接收回調(diào)函數(shù),txXfer為要發(fā)送的64字節(jié)數(shù)據(jù)。

FLEXCAN_TransferFDSendNonBlocking(EXAMPLE_CAN, &flexcanHandle, &txXfer);   // CAN-FD發(fā)送數(shù)據(jù)  

(2)CAN-FD接收數(shù)據(jù):

EXAMPLE_CAN表示為CAN1,flexcanHandle為CAN實例,包含了發(fā)送接收回調(diào)函數(shù),rxXfer為接收的64字節(jié)數(shù)據(jù)。

FLEXCAN_TransferFDReceiveNonBlocking(EXAMPLE_CAN, &flexcanHandle, &rxXfer); // CAN-FD接收函數(shù)

(3)接收和發(fā)送數(shù)據(jù)對比:

for (j = 0U; j <= DLC; j++) // 對比收發(fā)數(shù)據(jù),不一致打印  {    if(txXfer.framefd->dataWord[j] != rxXfer.framefd->dataWord[j])      {          LOG_INFO("Data mismatch !!! j=%d \r\n",j);      }  }

02

A核CAN-FD

A核設(shè)備樹中保留CAN2,內(nèi)核解析設(shè)備樹在 /dev下生成can0。設(shè)置波特率后使能can0節(jié)點(diǎn),應(yīng)用程序中open函數(shù)打開接口,write函數(shù)發(fā)送數(shù)據(jù),read函數(shù)接收數(shù)據(jù)。我們把CAN接口的示例已經(jīng)作為一個跨平臺的綜合演示程序,小伙伴們可以直接加參數(shù)調(diào)用即可。


1. 分配節(jié)點(diǎn)

(1)M核獨(dú)享CAN1,A核獨(dú)享CAN2,修改設(shè)備樹,在設(shè)備樹OK8MP-C.dts中,刪除CAN1設(shè)備節(jié)點(diǎn),保留CAN2設(shè)備節(jié)點(diǎn)。編譯新的設(shè)備樹;


(2)將生成的OK8MP-C.dtb和Image拷貝至開發(fā)板的

/run/media/mmcblk2p1/ 目錄下,輸入sync命令同步后重啟開發(fā)板;


(3)通過A核串口輸入命令uname -r ,顯示內(nèi)核版本,將 /lib/modbule目錄下文件夾名稱改為內(nèi)核版本,這樣才能自動加載模塊生成can0節(jié)點(diǎn),重啟開發(fā)板。







2. 演示Demo

進(jìn)程名:can_demo
使用方法:./can_demo設(shè)備名 [參數(shù)選項]… …



本次測試接口為can0(對應(yīng)開發(fā)板CAN2),控制區(qū)波特率為1Mbit/s,數(shù)據(jù)區(qū)最大為8Mbit/s,11位標(biāo)準(zhǔn)幀,不過濾幀ID,不主動發(fā)數(shù)據(jù),不回環(huán)。因此命令為:



./can_demo can0-b 1000 -fd 8000。

03

程序驗證

1. 硬件連接

使用杜邦線將CAN1和CAN2的can-H短接,同時將can-L短接,注意不要接反。




2. M核程序

修改uboot環(huán)境變量設(shè)置M核自啟動,同時將M核程序forlinx_m7_tcm_firmware.bin;

放到/run/media/mmcblk2p1/目錄下。詳細(xì)操作可看上篇文章《【玩轉(zhuǎn)多核異構(gòu)】M核程序的啟動、編寫和仿真


3. A核程序

(1)使用串口Xmodem,網(wǎng)絡(luò)FTP,SCP,U盤,TF卡等多種方式,將can_demo從電腦拷貝至核心板默認(rèn)目錄下,輸入以下命令修改權(quán)限;



chmod 777 can_demo

(2)輸入以下命令,A核應(yīng)用程序can_demo將設(shè)置波特率后打開can0節(jié)點(diǎn),等待M核發(fā)送的數(shù)據(jù),再將接收的數(shù)據(jù)通過CAN2發(fā)送給M核。



./can_demo can0 -b 1000 -fd 8000

4. 實際測試

(1)OKMX8MP-C開發(fā)板重新上電后,M核程序啟動,完成CAN1初始化后,在M核調(diào)試串口輸出信息,等待按鍵;


(2)在A核調(diào)試串口輸入以下命令,CAN2將處于接收的狀態(tài):



./can_demo can0 -b 1000 -fd 8000

(3)在M核串口按下鍵A或a,M核CAN1發(fā)送64字節(jié)數(shù)據(jù),A核CAN2接收數(shù)據(jù),并將接收的數(shù)據(jù)再次發(fā)送,M核CAN1接收后和發(fā)送數(shù)據(jù)對比,輸出結(jié)果。循環(huán)100次;


(4)通過測試可以看到,依托i.MX8M Plus強(qiáng)大的性能,雙核都以8Mbit/s的高速率發(fā)送大量數(shù)據(jù),均沒有出現(xiàn)異常。





您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线视频线视频免费网站 | 欧美精品网址 | 中文字幕日本一区久久 | 国产一级视频在线观看网站 | 自拍偷拍欧美图片 | 欧美亚洲91 | 三a级毛片 | 国产90后美女露脸在线观看 | 国产日韩亚洲欧美 | 在线看免费观看韩国特黄一级 | 欧美成人手机在线视频 | 国产午夜视频在线观看 | 欧美一级日韩一级亚洲一级 | 嫩草影院在线观看精品视频 | 精品美女激情视频线播放 | 黄色在线观看国产 | 在线播放色 | 欧洲欧洲黄页网址免费 | 国产露出调教91 | 最新国产精品 | 国产毛片视频 | 青青草针对华人 | 日本韩国欧美在线 | 日日射日日操 | 欧美成人亚洲综合精品欧美激情 | 99re8这里有精品热视频免费 | 日韩视频在线免费观看 | 男人天堂导航 | 91在线免费视频观看 | 91精品国产福利在线观看性色 | 日本最新新片在线观看免费 | www国产永久免费视频看看 | 亚洲精品网站在线观看不卡无广告 | 一区二区精品久久 | 日本视频在线观看不卡高清免费 | 91精品中文字幕 | caobi在线观看| 日韩免费观看的一级毛片 | 日本人乱人乱亲乱色视频观看 | 五月国产综合视频在线观看 | 五月天国产精品 |