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

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

3天内不再提示

基于恩智浦MPC5744P的CAN驱动开发和测试

嵌入式程序员 来源:嵌入式程序猿 作者:武国平 2021-09-03 11:35 次阅读

摘要

本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试,接口设计,封装为BSP驱动,为之后实现CAN的高层通信打下基础。。

准备工作

安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。

安装S32DS 的SDK, 我们使用最新版3.0.3

CAN

恩智浦的MPC5744P控制器局域网络CAN,跟我们之前使用的恩智浦Kinetis KV, 等系列的flexCAN结构基本是一样的,MPC5744P不仅仅支持经典CAN,还支持CANFD。

从系统框图也可以看出,总体包含消息缓冲RAM,发送仲裁,接收匹配,和协议引擎。要正常与其他CAN设备通信,必须外接收发器。关于MPC5744P的 flexCAN模块的特性可以参考收据手册,这里不在赘述。有四种工作模式,正常模式,监听模式,回环模式,和禁止模式。CAN外设的寄存器比较多,需要多参考查阅手册。

消息缓冲区结构

恩智浦不管是ARM系列还是PA系列架构的片子, flexCAN模块的消息缓冲机制基本都是一样的。这个结构非常重要,是CAN消息数据处理的基础,SDK底层这部分的处理代码就是按照这个结构。自己实现代码也必须是按照这个结构去实现。

更多CAN详细的介绍请参考官方收据手册。

驱动实现

良好的驱动封装,可以方便应用开发,并且可以容易移植到其他项目,代码重用率高,所以数据和接口是你不得不考虑的问题,怎么样方便的实现,还要通用易用。

数据封装

首先根据MPC5744P的CAN外设结构,我们来封装数据结构体,方便后面软件实现开发,可以新建bsp_can.c和bsp_can.h, 在头文件中封装结构体定义。

88563cf6-0be0-11ec-8fb8-12bb97331649.png

在.c文件中定义封装一些变量,这些变量数组也是通用,在多款产品中都采用,大家也可以参照。

886685a2-0be0-11ec-8fb8-12bb97331649.png

可以实现多个CAN口驱动。如果只有一个CAN口,将CAN_PORTS宏定义为1,几个就定义为几。

这个封装大家可以记着,我在多款器件上都是这么封装的,之前在NXP的KE06, KEA, KV46, K64等系列,在ST的F103, F446, H743等等CAN通信都采用这种封装BSP驱动。

初始化

参考官方的例程,根据自己的硬件去实现,做相应修改。我们一般发送接收要采用中断或者DMA实现,这里以中断方式实现,根据实际可能还需要添加滤波,配置缓冲等。

888491dc-0be0-11ec-8fb8-12bb97331649.png

中断回调函数

最主要的就是通信传输回调函数的实现,MPC5744P的回调函数参数有事件,所以可以根据事件来判断是接收还是发送。

责任编辑:haq

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

    关注

    57

    文章

    2717

    浏览量

    463375
  • 通信
    +关注

    关注

    18

    文章

    5971

    浏览量

    135856
  • 封装
    +关注

    关注

    126

    文章

    7784

    浏览量

    142723

原文标题:用这种结构做CAN通信数据封装太爽了

文章出处:【微信号:InterruptISR,微信公众号:嵌入式程序员】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FRDM-MCXA153 RT-Thread开发实战(六):I2C总线开发与应用

    rt-threadsp xpmcxmcxafrdm-mcxa153 目录下打开scons环境,配置IIC驱动和SSD1306 OLED。  I2C配置  FRDM-MCXA153开发
    的头像 发表于 11-21 09:26 664次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>FRDM-MCXA153 RT-Thread<b class='flag-5'>开发</b>实战(六):I2C总线<b class='flag-5'>开发</b>与应用

    基于MCX N系列MCU的应用示例

    全新MCX微控制器系列,为新一代工业与物联网广泛的应用赋能,受到广大边缘智能开发者的青睐。
    的头像 发表于 10-25 14:26 439次阅读

    和采埃孚合作开发基于SiC的电动汽车牵引逆变器解决方案

    半导体宣布与电动汽车领域领先企业采埃孚股份公司(ZF Friedrichshafen AG)合作下一代基于SiC的电动汽车(EV)牵引逆变器解决方案。解决方案采用先进的GD
    的头像 发表于 08-27 09:48 1093次阅读

    【龙芯2K0300蜂鸟板试用】CAN接口驱动板设计、CANFD测试CAN C++程序驱动测试

    绘制接口板 3k0300支持4路CANFD,从原理图来看,只是把TX和RX放出来了,并没有差分收发器IC。 为了测试CAN功能,必须先做一个驱动板。 两路CANFD挤在一个6P
    发表于 08-25 21:09

    举办汽车生态技术峰会,并发布全新S32 CoreRide开放平台

    半导体于杭州举办为期两日的汽车生态技术峰会,并发布全新S32 CoreRide开放平台。
    的头像 发表于 05-31 09:23 3151次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>举办汽车生态技术峰会,并发布全新S32 CoreRide开放平台

    在杭州召开汽车生态技术峰会,推出全新S32 CoreRide开放平台

    峰会上,正式在中国发布了S32 CoreRide开放平台,该平台融合了成熟的S32计算、网络、系统电源管理技术,以及来自
    的头像 发表于 05-30 16:59 1279次阅读

    FRDM-MCXN947开发实践指南》上线啦

    RT-Thread率先支持NXPFRDM-MCXN947,并联合半导体推出了NXPFRDM-MCXN947开发板评测活动。测评活动顺利完成,并且有了不错的产出,我们将大家的测试
    的头像 发表于 05-13 18:19 500次阅读
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>FRDM-MCXN947<b class='flag-5'>开发</b>实践指南》上线啦

    发布S32 CoreRide开放平台,旨在突破SDV开发的集成障碍

    近日,(NXP)近日发布了其S32 CoreRide开放平台,这一创新性的平台旨在突破软件定义汽车(SDV)开发的集成障碍,为汽车行业带来前所未有的变革。
    的头像 发表于 03-29 11:18 12w次阅读

    发布年度企业可持续发展报告

    ESG目标方面的年度进展。 总裁兼首席执行官Kurt Sievers表示:“作为一家全球性科技公司,我们拥有得天独厚的机遇去引领和开发创新解决方案,助力塑造更加可持续的未来。在所有团队成员、合作伙伴和客户的帮助与持续奉献下
    的头像 发表于 03-29 09:36 948次阅读

    NVIDIA TAO工具套件功能与eIQ机器学习开发环境的集成

    半导体宣布与NVIDIA合作,将NVIDIA经过训练的人工智能模型通过eIQ机器学习开发环境部署到广泛的边缘处理产品组合中。
    的头像 发表于 03-22 09:11 939次阅读

    RT-Thread成为注册合作伙伴,共同赋能工业与物联网应用开发

    前不久,半导体加入RT-Thread全球合作伙伴计划,成为RT-Thread高级会员合作伙伴。同时,RT-Thread现已成为注册合作伙伴。
    的头像 发表于 03-15 09:15 834次阅读

    发布新一代智能语音技术组合的语音识别引擎

    发布新一代智能语音技术组合的语音识别引擎。本文将探讨开发人员在嵌入式语音控制设计中面临的挑战、新的Speech to Inten
    的头像 发表于 01-26 09:15 718次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>发布新一代智能语音技术组合的语音识别引擎

    与MicroEJ共同开发新平台加速器

    与MicroEJ共同开发的新平台加速器,利用具有标准API的软件容器,为工业和物联网边缘应用带来与智能手机类似的软件设计灵活性,帮助客户大幅降低开发成本,缩短产品上市时间。
    的头像 发表于 01-22 10:16 689次阅读

    首席车载网络架构师开讲:CAN SIC与CAN XL芯片如何赋能未来汽车网络?

    ,让车载网络架构的技术升级之路更通畅,推出了完整的解决方案。其中,用于提升信号质量的CAN SIC芯片,以及能够将CAN网络的传输速率提升至20Mb的
    的头像 发表于 12-01 09:15 1191次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>首席车载网络架构师开讲:<b class='flag-5'>CAN</b> SIC与<b class='flag-5'>CAN</b> XL芯片如何赋能未来汽车网络?

    IAR全面支持半导体全新电机控制芯片S32M2

    IAR Embedded Workbench for Arm已全面支持最新的S32系列,可加速软件定义汽车的车身和舒适性应用的开发
    的头像 发表于 11-27 09:27 1451次阅读