查看: 4228|回复: 1

[LPC双核挑战赛] 【LPC54114-lite开发板学习】- 5-双核通讯之邮箱

[复制链接]
  • TA的每日心情
    擦汗
    4 小时前
  • 签到天数: 2395 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    56

    主题

    5289

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    25953
    最后登录
    2025-8-10
    发表于 2018-5-9 23:06:52 | 显示全部楼层 |阅读模式
    LPC54114的M4核心和M0+核心之间的通讯方式如下图所示:
    0001.png
    工作机制如下图所示:
    0002.png
    SDK中提供了相应的函数:
    0003.png
    接下来就在之前创建的工程上实现邮箱通讯。
    0004.png
    在M0+内核的主函数所在文件中,包含"fsl_mailbox.h",以便使用邮箱相关函数,main函数中主循环之前初始化邮箱并使能邮箱中断,主循环中通过邮箱把ADC采集到的温度值发送给M4内核。
    0005.png
    本来想在main_cm0p.c文件中添加中断处理函数,添加后发现重复定义了,仔细查看了解到,项目中已经集成好了多核心管理的函数,其中mcmgr_internal_core_api_lpc54114.c中已经定义好了中断处理函数。既然定义好了,就先不管它了,反正我要做的是让M0内核发送,M4接收。
    0006.png
    在M4内核中同样包含头文件和初始化邮箱使能中断。M4的中断函数同样已经定义了,在中断中设置一个断点,调试一下看看。
    0007.png
    已经获取到AD值了。通过调试发现,前5个邮箱中断的数据并不是AD值,从6个开始才是ADC的值。再次仔细阅读代码跟踪调试,对代码有了一些了解。原来工程中的mcmgr文件夹中的文件就是多核心管理用的,也就是说原厂已经在SDK中搭建了一个多核心管理框架,用来管理双核通讯,其中包括中断服务函数了,但是这个框架使用了邮箱传递的数据的高16bit作为事件类型,低16bit作为数据值,所以AD值之前的5个邮箱数据是这个框架用来表示m0内核启动成功,数据发送准备好等等信息用的。所以如果双核之间只传递半字(16bit)的数据可以用这个框架,只需要自己定义不同的事件回调函数并使用MCMGR_RegisterEvent函数进行安装就可以了。并且main函数中的邮箱初始化和中断使能也是不需要的,框架已经自动调用了,只需要包含头文件和MAILBOX_SetValue发送数据就可以了。
    0008.png
    在M4内核主文件中添加AD的处理函数,如果接收到的AD数值大于0x7FF,则给M0回送一个2,否则回送一个1,注意这里不能回送0,因为邮箱发送的数据不能为0。
    0009.png
    M0内核做同样的处理,接收到M4通过邮箱发送过来的数据如果大于1,点亮LD10,否则熄灭LD10。
    程序下载到开发板后,就可以通过调节滑动电阻的位置来控制led的量灭。
    至此,LPC54114的双核通讯已经实现了,两个核心之间相互传送了16bit的数据,个人考虑,如果需要传送32bit的数据,就不能依赖官方的这个双核管理框架了,需要在工程中删除框架相关代码,自己实现,好在也没有多复杂。
    代码:
    SmartLock_MailBox.zip (4.71 MB, 下载次数: 12)

    评分

    参与人数 1 +2 收起 理由
    doatello + 2

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-6-16 09:38
  • 签到天数: 589 天

    连续签到: 1 天

    [LV.9]以坛为家II

    3

    主题

    1039

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2387
    最后登录
    2020-6-16
    发表于 2018-5-10 08:46:12 | 显示全部楼层
    虽然还没看完帖子,先给你点赞!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-10 14:55 , Processed in 0.085144 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表