瑞萨RA MCU&立创EDA训练营——自制瑞萨开发板

前言

本着学习(bai piao)的态度,笔者参加了立创EDA联合瑞萨RA生态工作室的训练营活动,本次训练营没有固定方向,参加者们可以根据自己的需要随意设计,不少大佬们设计了很多高大上的产品,大家可以去立创竞赛与活动中心围观——传送门。笔者根据自己的毕设,准备做一个语音识别的智能家居(dian zi la ji)。

硬件制作

笔者使用的是瑞萨RA系列的 R7FA2E1A72DFL,48pin的MCU,相对于32狂涨价的当下来说,瑞萨的单片机价格还算是能接受,这个芯片官方售价8块一片。由于瑞萨有自己的生产线,所以存货还算充足。而且其内核也是ARM的,开发流程类似STM32的HAL库开发,也有一个类似STM32 CobeMX的配置软件,可以根据功能雪球直接使用图形化的引脚配置,所以上手难度还是不算太大。

照猫画虎原理图

拿到一款新的单片机,想用它来做东西,首先就需要搭建出该芯片能正常启动的最小系统电路,上面提到过瑞萨此系列芯片有些类似STM32;当然这个类似也包括最小系统在内。学习51单片机的时候老师会告诉我们单片机的最小系统包括三个部分,分别是电源电路(提供给单片机所需的电源)、复位电路(提供给单片机的硬件复位)、晶振电路(提供给单片机一个时钟基准)。笔者选用的这款芯片除了这三要素以外,还需要一个和STM32一样的BOOT选择电路,用来选择单片机的启动方式。有关BOOT电路的介绍可以参考此文——探究 STM32 的三种 BOOT(启动) 模式并实例验证。到这里就捋清楚了此芯片的最小系统构成了。然后就需要根据芯片手册的参考电路或者硬件指南的参数要求来设置电路元器件的具体参数,此芯片的设计指南可以在瑞萨RA的论坛找到——

在这里插入图片描述

电源电路

由于此芯片是支持宽电压的,数据手册标注的是1.6-5.5V的电压都可以使此芯片工作。
在这里插入图片描述笔者使用的是Typec接口,然后使用充电宝或者电脑USB口提供一个5V输入并作为单片机最小系统的供电电压,并根据芯片指南,放置100nf的滤波电容,来确保输入电压的稳定。由于笔者后面使用的了一个3,3V的光耦用来隔离,以保护MCU的IO,所以还需要一个3.3V的电源。这里笔者采用的是AMS1117的LDO线性稳压。
在这里插入图片描述
有关3.3V的线性稳压电路立创的开源广场还有很多,笔者上一次训练营使用过一个友顺的LDO,也很好用。
在这里插入图片描述

在这里插入图片描述

晶振电路

搞定电源后,接下来就是晶振电路了,晶振的震荡为单片机的运行提供了时钟基准,因此在原理图设计的时候一定要选择合适频率的晶振,而且在PCB绘制的过程中要尽可能的贴近MCU的外部晶振引脚。好在此芯片的内部晶振完全够用,所以笔者后面将此部分电路空贴了。
在这里插入图片描述
在这里插入图片描述

复位电路

参照快速设计手册,根据其复位电路的要求,完成复位电路的原理图。
在这里插入图片描述
在这里插入图片描述

MD(BOOT)选择电路

同样参考快速入门手册,完成MD选择电路。
在这里插入图片描述
在这里插入图片描述
至此,最小系统的电路就完成了,然后继续根据自己的需求以及IO的功能来设计外围电路了。

外设电路

在设计外设电路前,需要知道每个GPIO口的复用功能才行,RA的芯片的复用功能十分多样,那么要怎样才知道IO口复用功能呢,最常用的方案当然是查看芯片手册,但是芯片手册是全英语的,对于英语不太OK的同学而言不是很友好,这里笔者在推荐另外一种查看芯片复用功能的方式,保证准确。这里需要借助之前提到的类似STM32CubeMX的配置软件,打开配置软件,然后选择芯片型号,然后按照下图就可以看见所有IO口的功能了。
在这里插入图片描述
这里笔者使用了一组I2C,两组UART、还有四路PWM、以及三路电容检测。同时,为了方便后面扩展还将所有IO口用排针引出了。这里笔者后悔的是没在板子上集成USB转TTL的电路,当时已经投板了,只好有单独在开源广场找了一个USB-TTL的乞丐银版本。这里借用的是这个大佬的开源工程,实测可用——传送门
在这里插入图片描述

原理图一览

在这里插入图片描述

PCB一览

在这里插入图片描述
完成PCB后,笔者在嘉立创下单了PCB,立创商城下单了元器件,有一说一,立创这一条龙服务是真的舒服,而且立创专业版又上线3D外壳制作和打印功能,对于笔者这种没有学过3D建模的小白来说简直不要太友好,半小时搞定外壳。
下面是效果图:
在这里插入图片描述

焊接

焊接过程中一定要先焊接电源部分,确认电源部分OK后再焊接后面的部分。
在这里插入图片描述

代码调试

作为点灯大师的一员,笔者在设计PCB的时候专门留了两个灯作为快乐源泉。代码编辑可以使用Keil MDK也可以使用瑞萨的编辑器e2 studio。开发流程都一样。首先配置IO,生成代码,然后在main中写逻辑代码。
初始化IO
在这里插入图片描述
在生成的代码中写逻辑部分。
在这里插入图片描述
在这里插入图片描述

void hal_entry(void)
{
    /* TODO: add your own code here */
    while(1)
    {
    R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); // NOLINT
    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_01, BSP_IO_LEVEL_LOW);
    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_00, BSP_IO_LEVEL_LOW);
    R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); // NOLINT
    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_00,
    BSP_IO_LEVEL_HIGH);
    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_01,
       BSP_IO_LEVEL_HIGH);
    }

然后就是编译下载,最后可以看见两个LED开始闪烁。

实物效果

在这里插入图片描述

总结

有关前期的PCB制作就简单记录到此,文中如果有不妥之处欢迎大家指正,后面会根据笔者自己的学习进度进行其他功能的更新。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值