瑞萨单片机CAN口复用唤醒

目前笔者在公司实习接触到了瑞萨单片机
经过了一个月的踩坑已经对瑞萨单片机的开发有了一定的了解,现在刚好走到了瑞萨单片低功耗阶段
写这篇避坑博客的主要原因是——上班时间想摸鱼了。。。。
顺便帮助大家了解一下瑞萨单片机的部分内容~

想必大家接触瑞萨单片机一定是生产过程中需要,在此笔者假设读者已经有了一定基础。
本篇文章只提供思路,具体如何使用还需要大家自己界定。

瑞萨单片机睡眠模式

笔者的瑞萨开发板芯片为rh850系列(F1KMS4)

环境:CS+和smart configurator(后文称之为smart)
在smart里看到的睡眠方式有两种:
sleep和deep sleep(即为睡眠和深度睡眠)

CAN总线唤醒的原理

目前smart支持的can唤醒只有普通睡眠模式内存在
在深度睡眠的情况下是不支持can唤醒的

然而:大家可以通过将can口复用为外部中断GPIO口实现唤醒

由于CS+软件新建步骤太过繁琐(主要是坑太多),在这里不单独介绍。有需要的同学可以百度出来哈哈哈

外部GPIO口唤醒步骤

1.添加端口复用:
在smart的conmponents中添加外部中断组件Interrupt Controller (INTC)。

然后在smart的右方芯片图中找到你所使用的CAN接口的RX口右键,就能看到INTPxx的选项,这是的你就可以继续在组件中选择具体的INTP了。

2.添加睡眠唤醒:
在这里插入图片描述

在smart的conmponents中添加低功耗组件Stand-By Controller (STBC) 。

然后你就会看到睡眠模式和唤醒源选择了,选择Port作为唤醒源,勾选上你在上一步所选的INTP。

然后生成代码!
接下来就需要对程序进行操作了

3.首先在低功耗初始化中断中加入外部中断源
注意
需要注意的是这两行函数,请替换为你自己生成的函数(在Config.INTC.c中有你自己的函数名)!
这两行函数的意思就是:创建中断源,然后开启外部中断。

4.然后在主函数中开启,只需等待CAN的到来即可啦
在这里插入图片描述
图中圈中前3个函数含义:准备睡眠,开始睡眠,关闭外部中断

切记注意:结束睡眠后一定要重新初始化CAN口(图中是R_canfd_init())和打开中断使能(图中是EI())。只有这样才能正常恢复到接收CAN状态和接收CAN后中断的状态。

注意事项

笔者在这里只写了低功耗的步骤,新建工程、中断使用等一系列步骤已经被省略(主要还是因为目前步骤太过繁琐)
瑞萨的开发人员似乎并没有把smart和CS+做的很完善,笔者在使用过程中踩过了太多的坑,很多本应是芯片厂商解决的问题居然抛给了用户去解决,不得不说小X本真的恶心啊。

简单的提供一下中断的思路

寄存器打开详细中断,boot内添加中断入口,boot内全局中断置1,主函数内打开中断使能EI();

猜你喜欢

转载自blog.csdn.net/weixin_45830602/article/details/122843918
今日推荐