0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【玩转多核异构】双核高速率CAN-FD评测——飞凌嵌入式

飞凌嵌入式 ? 2023-02-17 11:34 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为了能够让更多的工程师朋友了解多核异构处理器飞凌嵌入式特别推出了【玩转多核异构】专题,帮助大家解决在多核异构处理器的开发过程中遇到的问题。【玩转多核异构】专题持续更新中,欢迎您的持续关注。

引言

凭借实时性、抗干扰性和安全性等优点,CAN2.0在工业及汽车行业得到了广泛应用,但其最高速率仅为1Mbit/s,每帧最多只能传输8字节的有效数据,报文中只有约50%的带宽用于有效数据传输。然而随着产业的发展,各种传感器控制器数量的增多,总线上的数据量也激增,这使得CAN2.0总线在传输速率和带宽方面的缺点暴露的更加明显,于是就诞生了CAN-FD。

CAN-FD在传输速率和带宽方面有了明显的提升,波特率可高达8Mbit/s,每帧可多达64字节有效数据,传输效率可提高至约80%,能够进一步提高总线的实时性,拓宽总线的数据带宽,提升总线的传输效率。

在飞凌嵌入式OKMX8MP-C开发板上有两路CAN-FD,小编今天就基于这款开发板以处理器的M核与A核各控制一路CAN-FD互相通信为例,从应用角度讲述M核和A核如何控制CAN-FD高速通信。

21d8671f54b8429ead9027e1b9f98bfb~noop.image?_iz=58558&from=article.pc_detail&x-expires=1677205373&x-signature=OtReypJ9%2BnJEL0stxADkVCq5%2F6Q%3DOKMX8MP-C开发板

飞凌嵌入式OKMX8MP-C开发板所搭载的NXP i.MX8M Plus处理器具备强悍的性能,集成4个主频最高可达1.8GHz(工业级主频为1.6GHz)Arm Cortex-A53多任务核和1个Cortex-M7实时核,不管是对数据的高速吞吐、处理,还是复杂的人机交互界面处理,都能从容应对。

一、M核CAN-FD

1. CAN-FD初始化

CAN-FD初始化主要包括总线时钟,管脚和相应寄存器的初始化。具体如下:

(1)CAN总线时钟:

现将CAN总线倍频到800MHz,再10分频到80MHz。

CLOCK_SetRootMux(kCLOCK_RootFlexCan1, kCLOCK_FlexCanRootmuxSysPll1); // 设置CAN1总线时钟为800MHz CLOCK_SetRootDivider(kCLOCK_RootFlexCan1, 2U, 5U); // 分频因子为2*5=10,设置CAN1总线时钟为80MHz

(2)管脚配置:

选择CAN1的发送管脚为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支持可变速率,即控制区和数据区的波特率可以不一致,控制区最大为1Mbit/s;数据区最大为8Mbit/s。后续程序根据总线时钟和设置的波特率,分配时段设置的seg1,seg2等数值。

pConfig->bitRate = 1000000U; // CAN-FD控制区波特率为1Mbit/s pConfig->bitRateFD = 8000000U; // CAN-FD数据区波特率为8Mbit/s

(4)CAN-FD使能:

除了使能CAN-FD,可变波特率也需要使能,否则数据区的最大速率和控制区的速率一样,最大为1Mbit/s。

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

(5)关闭自回环:

如果开启了自回环,那么CAN1数据会在芯片内回环,不会到外部管脚,在程序调试时可以排除外部端子的干扰,但真实应用时,需要关闭自回环,从外部管脚收发数据。

pConfig->enableLoopBack = false; // 不回环,使用外部管脚

(6)帧格式:

本次我们使用11位标准数据帧,小伙伴也在后续试试扩展帧。需要设置自己的ID,便于总线上其他设备识别。

mbConfig.format = kFLEXCAN_FrameFormatStandard; // 11位标准帧,非扩展帧 mbConfig.type = kFLEXCAN_FrameTypeData; // 数据帧 非远程帧 mbConfig.id = FLEXCAN_ID_STD(rxIdentifier); // 帧ID 用于区别总线中不同的设备

(7)接收过滤:

用户可设置接收过滤规则,这样就可以只接收特定帧ID的数据,减少应用处理的数据量。

rxIdentifier = 0; FLEXCAN_SetRxMbGlobalMask(EXAMPLE_CAN, FLEXCAN_RX_MB_STD_MASK(rxIdentifier, 0, 0));//接收所有ID数据

2. CAN-FD收发流程

本次测试M核做主站,CAN1先发送一帧包含64字节数据,A核CAN2收到,将64字节数据再次发送,M核CAN1接收。对比发送和接收的64字节数据是否一致。重复100次。

(1)CAN-FD发送数据:

EXAMPLE_CAN表示为CAN1,flexcanHandle为CAN实例,包含了发送接收回调函数,txXfer为要发送的64字节数据。

FLEXCAN_TransferFDSendNonBlocking(EXAMPLE_CAN, &flexcanHandle, &txXfer); // CAN-FD发送数据

(2)CAN-FD接收数据:

EXAMPLE_CAN表示为CAN1,flexcanHandle为CAN实例,包含了发送接收回调函数,rxXfer为接收的64字节数据。

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

(3)接收和发送数据对比:

for (j = 0U; j <= DLC; j++) // 对比收发数据,不一致打印 { if(txXfer.framefd->dataWord[j] != rxXfer.framefd->dataWord[j]) { LOG_INFO("Data mismatch !!! j=%d \r\n",j); } }

二、A核CAN-FD

A核设备树中保留CAN2,内核解析设备树在 /dev下生成can0。设置波特率后使能can0节点,应用程序中open函数打开接口,write函数发送数据,read函数接收数据。我们把CAN接口的示例已经作为一个跨平台的综合演示程序,小伙伴们可以直接加参数调用即可。

1. 分配节点

(1)M核独享CAN1,A核独享CAN2,修改设备树,在设备树OK8MP-C.dts中,删除CAN1设备节点,保留CAN2设备节点。编译新的设备树;

(2)将生成的OK8MP-C.dtbImage拷贝至开发板的 /run/media/mmcblk2p1/ 目录下,输入sync命令同步后重启开发板;

(3)通过A核串口输入命令uname -r ,显示内核版本,将 /lib/modbule目录下文件夹名称改为内核版本,这样才能自动加载模块生成can0节点,重启开发板。

5d2ed7af2ef241c49beef4ea049076a8~noop.image?_iz=58558&from=article.pc_detail&x-expires=1677205373&x-signature=SArW66WModoKg%2BRk6p3nwhjN2pE%3D

8360162841014592bab234e939d8dd8f~noop.image?_iz=58558&from=article.pc_detail&x-expires=1677205373&x-signature=FqLPD04wWmvLm9evJbJ4JYJll%2FM%3D

2. 演示Demo

进程名can_demo

使用方法:./can_demo设备名 [参数选项]… …

6fcdcabf67c64fb287ea2f341e4c86c2~noop.image?_iz=58558&from=article.pc_detail&x-expires=1677205373&x-signature=SktElvA9upyInbY9dcQ9Y8SoA9g%3D

本次测试接口为can0(对应开发板CAN2),控制区波特率为1Mbit/s,数据区最大为8Mbit/s,11位标准帧,不过滤帧ID,不主动发数据,不回环。因此命令为:

./can_demo can0-b 1000 -fd 8000。

三、程序验证

1. 硬件连接

使用杜邦线将CAN1和CAN2的can-H短接,同时将can-L短接,注意不要接反。

4285243ec7dc41e699c1e1702d7d6c5c~noop.image?_iz=58558&from=article.pc_detail&x-expires=1677205373&x-signature=2P7wbWUXTkaG10Uo86fxItMMWb8%3D

2. M核程序

修改uboot环境变量设置M核自启动,同时将M核程序forlinx_m7_tcm_firmware.bin;

放到/run/media/mmcblk2p1/目录下。详细操作可看上篇文章【玩转多核异构】M核程序的启动、编写和仿真——飞凌嵌入式。

3. A核程序

(1)使用串口Xmodem,网络FTP,SCP,U盘,TF卡等多种方式,将can_demo从电脑拷贝至核心板默认目录下,输入以下命令修改权限;

chmod 777 can_demo

(2)输入以下命令,A核应用程序can_demo将设置波特率后打开can0节点,等待M核发送的数据,再将接收的数据通过CAN2发送给M核。

./can_demo can0 -b 1000 -fd 8000

4. 实际测试

(1)OKMX8MP-C开发板重新上电后,M核程序启动,完成CAN1初始化后,在M核调试串口输出信息,等待按键;

(2)在A核调试串口输入以下命令,CAN2将处于接收的状态:

./can_demo can0 -b 1000 -fd 8000

(3)在M核串口按下键A或a,M核CAN1发送64字节数据,A核CAN2接收数据,并将接收的数据再次发送,M核CAN1接收后和发送数据对比,输出结果。循环100次;

(4)通过测试可以看到,依托i.MX8M Plus强大的性能,双核都以8Mbit/s的高速率发送大量数据,均没有出现异常。

以上就是小编为小伙伴带来的基于飞凌嵌入式OKMX8MP-C开发板双核控制CAN-FD的使用方法了,是不是感觉性能很强大呢?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5161

    文章

    19764

    浏览量

    319387
  • 通信
    +关注

    关注

    18

    文章

    6215

    浏览量

    138127
  • 开发板
    +关注

    关注

    25

    文章

    5758

    浏览量

    106141
  • 多核异构
    +关注

    关注

    0

    文章

    20

    浏览量

    5547
  • CANFD
    +关注

    关注

    0

    文章

    90

    浏览量

    5419
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    3.6Mbps稳定带宽:嵌入式T536核心板8路CAN-FD技术方案解析

    【基于飞嵌入式T536核心板的8路CAN-FD技术展示方案】通过多核架构优化、协议栈深度调优与并行处理技术,成功破解八路CAN-FD高带宽
    的头像 发表于 06-27 10:00 ?2253次阅读
    3.6Mbps稳定带宽:<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T536核心板8路<b class='flag-5'>CAN-FD</b>技术方案解析

    嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位嵌入式技术领域的技术专家、企业代表和
    的头像 发表于 04-28 13:57 ?3441次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI技术论坛圆满结束

    如何从传统的CAN用法中设置CAN-FD

    您好 NXP: 我们在 s32k312 平台中使用了经典的 CAN 总线(2.0/固定 8 字节数据),现在我们想升级 CAN-FD 格式。我设置了 CAN-FD 参数(经典 CAN
    发表于 04-14 11:32

    嵌入式「2025嵌入式及边缘AI技术论坛」议程公布

    4月22日,嵌入式“2025嵌入式及边缘AI技术论坛”将在深圳举行,论坛以“新生态,智未来”为主题,旨在汇聚行业智慧,探讨嵌入式技术与边
    的头像 发表于 04-02 15:12 ?715次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>「2025<b class='flag-5'>嵌入式</b>及边缘AI技术论坛」议程公布

    智能配电新纪元:基于飞嵌入式T536核心板的DTU解决方案

    异构处理器设计的DTU方案日益成为主流,其中实时与控制的协同工作,为配电系统的实时监控与高效管理提供了有力保障。在此背景下,
    发表于 03-31 14:26

    嵌入式携手瑞芯微成为2025年全国大学生嵌入式大赛命题企业

    近日,保定嵌入式技术有限公司(以下简称“嵌入式”)携手瑞芯微电子股份有限公司(以下简称“
    的头像 发表于 03-19 16:32 ?787次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>携手瑞芯微成为2025年全国大学生<b class='flag-5'>嵌入式</b>大赛命题企业

    智能配电新纪元:基于飞嵌入式T536核心板的DTU解决方案

    在国网新规的推动下,采用多核异构处理器设计的DTU方案日益成为主流,其中实时与控制的协同工作,为配电系统的实时监控与高效管理提供了有力保障。在此背景下,
    的头像 发表于 03-05 10:34 ?1305次阅读
    智能配电新纪元:基于飞<b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T536核心板的DTU解决方案

    嵌入式荣获瑞芯微2024年度优秀合作奖

    嵌入式荣获瑞芯微“2024 年度优秀合作奖”,这一荣誉不仅是对嵌入式过去一年与瑞芯微紧密
    的头像 发表于 02-21 10:53 ?932次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>荣获瑞芯微2024年度优秀合作奖

    嵌入式2024年度盘点】乘风破浪,奋力前行

    2024年即将落下帷幕,回首这一年,嵌入式乘风破浪,奋力前行,创造了发展新篇章,站在2025年的开端,让我们重温
    的头像 发表于 01-04 13:22 ?891次阅读
    【<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2024年度盘点】乘风破浪,奋力前行

    嵌入式受邀亮相瑞萨2024工业技术研讨会

    嵌入式作为瑞萨电子的生态合作伙伴,给2024瑞萨电子MCU/MPU工业技术研讨会的现场观众带去了基于RZ/G2L高性能多核异构处理器设计
    的头像 发表于 12-07 14:27 ?789次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>受邀亮相瑞萨2024工业技术研讨会

    【RK3562J开发笔记】MCP2518FD外部CAN-FD控制器的调试方法

    MCP2518FD是一款在各行业中都有着广泛应用的CAN-FD控制器芯片,本文就将为大家介绍如何在嵌入式RK3562J开发板上适配MCP
    的头像 发表于 12-07 14:22 ?2008次阅读
    【RK3562J开发笔记】MCP2518<b class='flag-5'>FD</b>外部<b class='flag-5'>CAN-FD</b>控制器的调试方法

    嵌入式OK3576-C开发板体验】开箱报告

    (12Gbps)和扩展PCIe NVMe/SATA SSD固态硬盘,提供高效的数据存储和读取能力,满足工控设备对大容量存储的需求。 1.3、工业级属性 稳定性:核心板通过了嵌入式实验室严苛的工业环境测试
    发表于 10-10 09:22

    嵌入式「在线文档」功能上线 | 开放灵活,尽在掌握

    在忙碌的研发过程中,效率十分关键,嵌入式深知“便捷获取最新资料”的重要性,为此全新上线【在线文档】功能——进入
    的头像 发表于 09-13 09:46 ?697次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>「在线文档」功能上线 | 开放灵活,尽在掌握

    再见深圳!嵌入式技术创新日圆满落幕

    2024年8月26日下午,嵌入式技术创新日深圳站在深圳威尼斯英迪格酒店盛大举行,此次活动汇聚了近200位嵌入式技术领域的专家和企业代表,共享嵌入
    的头像 发表于 08-29 16:35 ?1413次阅读
    再见深圳!<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>技术创新日圆满落幕

    嵌入式技术创新日(深圳站)精彩回顾

    2024年8月26日下午,嵌入式技术创新日深圳站在深圳威尼斯英迪格酒店盛大举行,此次活动汇聚了近200位嵌入式技术领域的专家和企业代表,共享嵌入
    发表于 08-28 09:06