首页资源分类嵌入式处理器瑞萨单片机 > 瑞萨电子低功耗MCU实战手册

瑞萨电子低功耗MCU实战手册

已有 445117个资源

下载专区

文档信息举报收藏

标    签:RL78R7F0C802

分    享:

文档简介

EEworld基于两届瑞萨电子设计大赛分享的成果,整理制作成这本书,书中的代码和例程都是实战的结果,本书主要由以下几个部分组成

1、RL78/G14和R7F0C80212两种MCU的介绍

2、CubeSuite+和e2studio开发环境的使用

3、RL78/G14和R7F0C80212单片机的例程展示

4、网友DIY成果和代码分享

文档预览

瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 1 目录 瑞萨电子低功耗 MCU 实战手册 序言..................................................................................................................................... 4 本书的使用方法................................................................................................................ 5 第一部分 瑞萨电子 R7F0C80212 MCU 开发实战.................................................... 6 第一章 R7F0C80212 MCU 简介和开发套件介绍............................................................................... 6 1.1 R7F0C80212 MCU 简介............................................................................................................. 6 1.2 R7F0C80212 开发套件介绍....................................................................................................... 9 第二章 R7F0C80212 开发环境搭建和编程简单入门....................................................................... 11 2.1 CubeSuite+ 软件安装...............................................................................................................11 2.2 在 CubeSuite+ 中添加 R7F0C80212 开发环境..................................................................14 2.3 利用 CubeSuite+ 中的代码生成工具 code generator 编写闪灯程序 .......................... 16 2.4 Cubesuite+ 软件中的软件仿真器...........................................................................................21 2.5 硬件仿真器 EZ-cube 的使用....................................................................................................24 2.6 R7F0C80212 中断和按键中断解析.........................................................................................32 2.7 R7F0C80212 时钟系统详解.....................................................................................................35 2.8 R7F0C80212 的串口开发例程.................................................................................................36 2.9 R7F0C80212 目标板补充资料.................................................................................................38 第三章 EEworld 论坛网友 DIY 作品....................................................................................................39 3.1 计步器............................................................................................................................................39 3.2 ADC 控制 PWM 调光................................................................................................................46 3.3 智能杯垫.......................................................................................................................................49 3.4 R7F0C80212 通过音频接口与手机通信 ...............................................................................54 3.5 智能学习型万能红外遥控器......................................................................................................56 3.6 智能灯............................................................................................................................................65 3.7 充电电流提示和充满自动断电电路..........................................................................................70 3.8 四轴飞行器...................................................................................................................................75 3.9 超声波测距仪...............................................................................................................................77 3.10 远程门禁系统.............................................................................................................................80 3.11 自行车炫彩风火轮....................................................................................................................83 3.12 EEworld 论坛网友其他精彩 DIY ..........................................................................................95 轻松设计 从瑞萨电子开始 2 瑞萨电子低功耗 MCU 实战手册 第二部分 RL78/G14 开发实战.....................................................................................96 第四章 RL78/G14 简介和开发套件介绍.............................................................................................96 4.1 RL78/G14 简介...........................................................................................................................96 4.2 RL78/G14 开发套件介绍...........................................................................................................98 第五章 搭建 RL78/G14 开发环境和例程............................................................................................99 5.1 RL78/G14 开发环境的安装......................................................................................................99 5.2 瑞萨电子 e2studio 的使用......................................................................................................106 5.3 瑞萨电子自带演示 DEMO 试玩.............................................................................................111 5.4 CubeSuite+ 下测试 RL78/G14 的 blinky 程序 ................................................................118 5.5 点亮 LED.....................................................................................................................................122 第六章 EEworld 论坛网友 DIY 展示..................................................................................................124 6.1 宿舍 ( 楼宇 \ 家庭 ) 智能用电监控、保护系统.....................................................................124 6.2 多功能调试测试助手.................................................................................................................148 6.3 四轴飞行器中无感无刷直流电机电调设计...........................................................................161 6.4 基于 RL78 单片机的巡逻小车.................................................................................................170 6.5 基于瑞萨 RL78 板子的可穿戴便携式心率仪........................................................................174 6.6 360 度旋转的显示时间的广告灯............................................................................................187 6.7 DIY 家用短距离测距兼近距离有人报警闹钟.......................................................................189 6.8 RL78/G14 在无线传感网中的应用........................................................................................191 6.9 DDS 信号发生器.......................................................................................................................207 6.10 基于 LABVIEW 和 RL78 评估板的心电图采集系统.........................................................214 6.11 EEworld 论坛网友创意列表.................................................................................................232 第三部分 瑞萨电子 MCU FAQ.................................................................................. 234 第四部分:瑞萨电子官方参考资料.......................................................................... 236 第七章 R7F0C 应用说明.......................................................................................................................236 第八章 R7F0C 示例...............................................................................................................................238 附录 1 编委信息与后记.............................................................................................. 240 附录 2 版权说明........................................................................................................... 241 轻松设计 从瑞萨电子开始 3 瑞萨电子低功耗 MCU 实战手册 序言 EEworld 社区基于两届瑞萨电子设计大赛网友分享的成果,推出了这本由数十位网友共同分享的心 得和代码汇集而成的《瑞萨电子低功耗 MCU 实战手册》。整理制作这本书的目的是为了扩大分享的成果 , 可以让更多电子爱好者更容易的参与到瑞萨电子单片机的学习中。 书中内容很接地气 , 代码和例程都是实战的结果 , 是一本初学瑞萨电子单片机的比较实用的资料。 本书内容主要由以下几部分组成: ☆ RL78/G14 和 R7F0C80212 两种 MCU 的介绍 ☆ CubeSuite+ 和 e2studio 开发环境的使用 ☆ RL78/G14 和 R7F0C80212 单片机的例程展示 ☆ 网友 DIY 成果及代码分享 希望这本汇集了 EEworld 社区网友们实战瑞萨电子 MCU 心得的电子书,可以帮助你了解、入门 瑞萨电子单片机的设计。最后谢谢 EEworld 社区举办的这两届比赛,以及瑞萨电子及其 FAE 在活动中 对网友们的支持。 EEworld 网友 damiaa 2015 年 03 月 轻松设计 从瑞萨电子开始 4 本书的使用方法 瑞萨电子低功耗 MCU 实战手册 以下的方法,希望能帮助你更快地入手瑞萨电子低功耗 MCU: 1、阅读本书时,如遇到任何问题,请点击对应文章后面的相关帖子,查看相关内容,可以直接和 文章作者交流、讨论; 2、在开发过程中,如果您遇到的问题,可以先阅读本书 FAQ 那一章,那里汇总了 EEworld 论坛 网友在开发过程中遇到的问题及相应解决办法; 我们为您提供了交流平台: ☆瑞萨电子官网:http://cn.renesas.com/ ☆ EEworld 瑞萨电子 DIY 版块 >> 点击进入 ☆瑞萨电子 DIY 活动 QQ 交流群:2804024537 EEworld 论坛组 2015.3 轻松设计 从瑞萨电子开始 5 瑞萨电子低功耗 MCU 实战手册 第一部分 瑞萨电子 R7F0C80212 MCU 开发实战 第一章 R7F0C80212 MCU 简介和开发套件介绍 1.1 R7F0C80212 MCU 简介 概要 瑞萨电子 R7F0C801 至 805 系列微控制器采用了 RL78 内核,在该类产品上同时实现了高速处理 性能与最低的功耗,并且拥有一系列低引脚数的广阔产品阵容,适用于消费产品应用。 高精度 ±2% 片上振荡器(TA = 0 + 40℃)使 CPU 运行可达到 20MHz,同时内置了可选上电复 位和看门狗定时器等功能,有助于系统实现更紧凑的尺寸和低功耗,使整个系统搭建成本更低。 具有 10 和 16 引脚的小型封装,以及 1 KB 至 4 KB 的闪存阵容,更适合于小型家用电器以及通用 消费产品等应用。 模块框图 R7F0C80112ESP, R7F0C80212ESP, R7F0C80512ESP-C 关键特性 轻松设计 从瑞萨电子开始 6 瑞萨电子低功耗 MCU 实战手册 超低功耗科技 ⊙ VDD=2.4 ~ 5.5V 的单电源 ( 因为包括可选择的上电复位(SPOR)电路的检测电压(VSPOR), 所以必须在 2.4 ~ 5.5V 的电压范围内使用。) ⊙ HALT 模式 ⊙ STOP 模式 RL78 CPU 内核 (RL78-S1 内核 ) ⊙ 3 段流水线的 CISC 哈佛体系结构 ⊙ 最短指令执行时间:能在高速(0.05 μs: 以高速内部振荡器时钟 20MHz 运行时)到超低速(0.8 μs: 以 1.25MHz 运行时)之间变换。 ⊙ 地址空间:1M 字节 ⊙ 通用寄存器:8 位寄存器 ×8 ⊙ 内部 RAM:128B,256B, 512B 代码闪存 ⊙ 代码闪存:1KB, 2KB, 4KB ⊙ 内置片上调试功能 高速内部振荡器 ⊙ 可从 20MHz/10MHz/5MHz/2.5MHz/1.25MHz 中选择 ⊙ 高精度 ±2.0% (VDD=2.0 ~ 5.5V、TA=-20 ~ +85° C) 工作环境温度 ⊙ TA=-40 ~ +85° C 电源管理和复位功能 ⊙ 内置可选择的上电复位(SPOR)电路 串行接口 ⊙ CSI:1 个通道 ⊙ UART:1 个通道 定时器 ⊙ 8/16 位定时器:2/4 个通道 ⊙ 12 位间隔定时器注:1 个通道 ⊙ 看门狗定时器: 1 个通道(能以专用低速内部振荡器时钟运行) 轻松设计 从瑞萨电子开始 7 A/D 转换器 ⊙ 8/10 位分辨率 A/D 转换器(VDD=2.4 ~ 5.5V) ⊙ 模拟输入:4/7 个通道 比较器 ⊙ 1 个通道 ⊙ 运行模式:比较器高速模式、比较器低速模式 ⊙ 基准电压只可选择外部基准电压 I/O 端口 ⊙ I/O 端口:8/14 个(N 沟道漏极开路输出 [VDD 耐压 ]:1 个) ⊙ 能进行 N 沟道漏极开路、内部上拉的切换 ⊙ 内置键中断功能 ⊙ 内置时钟输出 / 蜂鸣器输出控制电路 其他 ⊙ 内置十进制校正(BCD)电路 ⊙ ROM,RAM 容量 闪存 ROM 4 KB 2 KB 1 KB RAM 512 B 256 B 128 B 10 引脚 R7F0C80512ESP R7F0C80212ESP R7F0C80112ESP 数据手册 下载地址 1:瑞萨电子官方网站 下载地址 2:EEworld 下载中心 中文版 英文版 瑞萨电子低功耗 MCU 实战手册 16 引脚 R7F0C80542ESP R7F0C80442ESP R7F0C80342ESP >> 查看更多内容 轻松设计 从瑞萨电子开始 8 1.2 R7F0C80212 开发套件介绍 瑞萨电子低功耗 MCU 实战手册 简介 R7F0C80212ESP 目标板 YRCNR7F0 C8021-TB 是使用 E1/E2-CUBE、具有编程功能的在 线调试器进行仿真操作的目标板。 开发套件实物展示(附带光盘 ISO 下载) 特性 包含 R7F0C80212ES MCU 20MHz 片上振荡器作为主时钟,可实现高速操作(@2.7 to 5.5v) 支持 flash 存储器编程(4.5~5.5v)和在线调试 可扩展:外设连接接口,由芯片的各引脚的引出 硬件说明 轻松设计 从瑞萨电子开始 9 各部件布局 原理图 瑞萨电子低功耗 MCU 实战手册 >> 查看更多内容 轻松设计 从瑞萨电子开始 10 瑞萨电子低功耗 MCU 实战手册 第二章 R7F0C80212 开发环境搭建和编程简单入门 推荐视频:瑞萨电子官方关于 CubeSuite+ 开发环境操作视频 2.1 CubeSuite+ 软件安装 玩转一个 MCU,首先要有开发环境,瑞萨电子的 CubeSuite+ 还是很容易上手的。首先,从瑞萨 电子官网下载 CubeSuite+,这样软件版本会比较新,出问题的可能性也小一些。这里为什么说比较新, 而不是最新,先卖一个官子吧。 CubeSuite 下载地址:>>CubeSuite+ 下载 安装 CubeSuite+ 需要微软的 .NET Framework 4 和 Visual C++ 2010 SP1 runtime library, 如果你以前安装其他软件时已经安装过了,就不会有任何提示。如果没有安装过,请按照提示安装。 切记切记!在安装软件的时候,要注意安装目录路径和被安装目录路径都不要含有中文文件名和中 文文件夹。这是安装非中文软件时推荐遵循的规则。还有路径中不能有空格 , 否则容易出现各种稀奇古 怪的问题 , 这一点同样也适用于项目文件存放文件路径。 安装 CubeSuite+ 软件完成后 , 会出现更新界面,首先 CubeSuite+ 更新是必选的(这也就是我之 前为什么说不是最新的原因),然后选择与 RL78 相关的软件,进行更新,当然如果你硬盘空间大的话 也可以全选安装。 轻松设计 从瑞萨电子开始 11 瑞萨电子低功耗 MCU 实战手册         安装完成后,打开 CubeSuite+ 软件,调入例子程序时,会弹出对话框告诉你一个错误。这是因为 例子程序中的 MCU--R7F0C80212 的设备文件在 CubeSuite+ 软件的安装目录中找不到。       在瑞萨电子官网搜索 R7F0C80212,找到设备文件,并下载。         解压缩后将 "Device_Custom" 目录拷贝到 CubeSuite+ 的安装目录中 轻松设计 从瑞萨电子开始 12 瑞萨电子低功耗 MCU 实战手册       重新打开项目,这时就正常了。至此,CubeSuite+ 软件安装完毕。 相关帖子:>> R7F0C80212 套件试用之开发环境搭建 1---cubesuite+ 软件安装 轻松设计 从瑞萨电子开始 13 瑞萨电子低功耗 MCU 实战手册 2.2 在 CubeSuite+ 中添加 R7F0C80212 开发环境 安装好 CubeSuite+,发现建立工程时没有 R7F0C80212 这个系列的芯片,但是 EEworld 论坛 中 ltbytyn 写过这方面的文章:如何让你的 (Cube Suite+) 支持 R7F0C80212,不过好像和新版本有 些出入。为此,我研究了下发现:是一个配置文件不对。下面开始对 CubeSuite+ 进行改造。 改造需要下面这几个文件: 1.common.rar 把这个文件解压缩到你 CubeSuite+ 安装目录下的 CubeSuite+\Device\RL78 文 件夹中; 2.Devicefile.rar 把这个文件解压缩到你 CubeSuite+ 安装目录下的 \CubeSuite+\Device\RL78\ Devicefile 文件夹中; 3.78K_Productlist.rar 把这个文件解压缩到你 CubeSuite+ 安装目录下的 CubeSuite+\Device 文件夹中覆盖同名文件; 完成上述三步后,重新启动一下 CubeSuite+,应该就能在新建工程时看到 R7F0C8021 这个芯 片了。 4.   连接好开发板,新建工程进行调试。如果一切正常的话,应该能够进入调试界面。调试的时候注意 选择好仿真器,然后点击同一个菜单下的 download 即可。 轻松设计 从瑞萨电子开始 14 瑞萨电子低功耗 MCU 实战手册 在调试模式下运行的话,如果一切正常仿真器灯会变绿: 并且 CubeSuite+ 下面会有个“RUN”一直在滚动: 走过的弯路: 1. 如果点调试出现提示:你仿真器的固件太老了,请用光盘中的工具刷 RL78G10_0CD_FW; 2. 如果点调试出现提示:不能连接目标板,请检查杜邦线是否连接正确了,另外就是仿真器上的几 个拨动开关是否正确,特别是最后一个应该选 M3。 相关帖子:>>R7F0C80212 Easy Start 添加 R7F0C80212 开发环境 轻松设计 从瑞萨电子开始 15 瑞萨电子低功耗 MCU 实战手册 2.3 利用 CubeSuite+ 中的代码生成工具 code generator 编写 闪灯程序 经过一天的努力,终于弄明白了瑞萨电子单片机的开发环境以及程序结构。以前没用过日系单片机, 总觉得应该都差不多。这次仔细研究了下 R7F0C80212Easy Start 和 CubeSuit+ 发现:相对于欧美 系来说,日系单片机还是很有特点的,并且还有个插件叫 code generator,这个东西还是很不错的。 下面就从点灯开始一步一步研究如何使用 code generator:code generator 是 CubeSuit+ 套件 中的一个插件,默认情况下是没有打开的,关于打开的方式可以参考 EEworld 坛友“啸风 916636” 的帖子。 设置好后按照通常的方法新建工程,选择我们的 R7F0C80212 芯片,填好工程名和程序的位置后, 点击“确定”创建新的工程。如果一切顺利的话,将会出现如下界面,注意看左上角,会出现 code generator 的选项。且下面 File 里是空的,没有任何代码。 打开该选项的旁边的“+”号展开,可以看到包含两个部分,一个是 Peripheral Function, 另外一 个是 Code Preview。从名字也可以看出,前面那个功能是用来配置各个模块的,后面的功能是配置完 后查看配置代码的。在 Peripheral Function 下面有很多子项目,分别代表了芯片上的各个模块。 轻松设计 从瑞萨电子开始 16 瑞萨电子低功耗 MCU 实战手册 查看 Easy Start 板子的原理图可以看到 D1 LED 灯接在 R7F0C80212 的 P04 脚上,所以我们需 要对该引脚进行配置。 展开 Port Functiong,可以看到其下面有 4 个端口,点击 Port0,此时如果你是新建工程且第一次 使用 code generator 的话,左边会出现如下的配置界面 这个界面是引脚重定向界面,如果不需要引脚的重定向的话,只需要点上面的“Fix settings”就 可以了。然后点击一次“Port Functiong”下面 Port0,此时就会弹出 P0 引脚下面的 5 个引脚的配置图, 由于需要点亮和熄灭 LED 灯,所以这里我们把 P04 配置为 out 并且勾选后面的“OUTPUT”。完成 后点击上面的“Generate Code”, 此时下面会提示创建文件成功。 再次查看 File 菜单下发现多了很多代码。此时如果点击“BUILD 工程”的话,工程就能成功。 轻松设计 从瑞萨电子开始 17 瑞萨电子低功耗 MCU 实战手册 下面我们来看看如何往生成的代码中添加自己的程序,打开“FILE”下的 r_cg_main.c 文件,可 以看到有个 mian 函数,哈哈,没错,我们的代码就加到这里。   我们主要更改两个地方:   在 MAIN 上面加入 轻松设计 从瑞萨电子开始 18 void delay(unsigned int i) { while(i>0) { NOP(); i=i-1; } }   修改 main 函数为 void main(void) { R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ while (1U) { P0.4=1 ; delay(50000); P0.4=0; delay(50000); } /* End user code. Do not edit comment generated here */ } 瑞萨电子低功耗 MCU 实战手册 保存,编译下载。 整个代码工程下载 test.rar 弯路总结: 1、工程默认情况下选择的是使用模拟仿真的,所以如要要用 EZ-CUBE 的话需要在工程中设置一下: 轻松设计 从瑞萨电子开始 19 瑞萨电子低功耗 MCU 实战手册 2、在“TOOLS”菜单设置完 code generator 插件后,最后重启下电脑。这个开发环境有的时候 不能完全关闭,虽然我们看上去好像关闭。这就造成再次打开后还是找不到 code generator。 相关帖子: >>R7F0C80212 Easy Start -- code generator 编写闪灯程序 >>R7F0C80212 套件试用之开发环境搭建 2--- 代码自动生成工具 code generator EEworld 网友 youki12345 的编程思考: (1)CODE GENERATOR 工作原理 CODE GENERATOR 是作为一个插件导入到 CubeSuite+ 里面的。这个东西挺好的用的,基 本上所有外设的寄存器都可以用图形化配置了,用户只需要写自己的应用程序即可。它的原理没有找 到,但是在使用过程中发现它其实就是由一系列模版组成,当你选择了某个功能后,模版就自动加 载那条语句,最后再把这个模版拷贝到用户工作区中。这种方法其实 STM32 也有,不过瑞萨电子 把 CODE GENERATOR 集成到了 CubeSuite+ 里面,使得程序员使用起来很方便。不过 CODE GENERATOR 生产配置代码虽然很方便但其隐藏了细节,对于我等这种喜欢刨根问底的人来说感觉有 点不爽,还是直接配置寄存器来的舒服。 (2) 瑞萨单片机按位使用及声明位置 在瑞萨电子单片机中是可以像 51 一样按位来使用引脚的,比如说点灯程序中我们就可以 P0.4=1 ;P0.4=0 ; 来控制 P0.4 引脚的输出电平。特别是对于寄存器的配置直接写 PU4 = 0xff PMC0 =0x00 就行了,但是问题是 P0.4, PU4, PMC0 的声明在哪呢?它们如何与具体芯片的地址对应呢? 我找了一圈没找到,后来看了瑞萨电子的官方文档才知道,原来所有的秘密都在 #pragma sfr 这句话中, 也就是加上这句话就把 P0.4, PU4 等的声明全部包含了,个人猜想瑞萨电子是把这些申请都包含在了 库中,通过预处理来引入这些库。以前一直以为欧美的 IC 库封装的很好,但其至少还要包含一个头文件。 而瑞萨电子只需要引入一个预编译命令即可。现在看来一山还比一山高,不得不佩服。 相关帖子: >>R7F0C80212 Easy Start -- 编程思考 >>CubeSuite+ 让 Code Generator 真正回归 轻松设计 从瑞萨电子开始 20 瑞萨电子低功耗 MCU 实战手册 2.4 Cubesuite+ 软件中的软件仿真器 看到前面几个帖子都有朋友在开发过程中碰到了硬件问题而导致不能继续。其实可以考虑下软件仿 真,毫不夸张的说:CubeSuite+ 的软件仿真功能是我用过的最好的,它以图形化的方式给出了仿真结果, 一目了然。更值得称赞的是,CubeSuite+ 的软件仿真还提供了类似于 PROTEUS 的功能:给了几个 常用的外围器件。OK,让我们来看看如何启用这个功能强大的软件仿真器吧。 首先打开一个可用的工程,我所使用的就是在前面帖子中编写的点灯程序,如果有不清楚的朋友可 以参考我前面的帖子。打开工程后,首先设置软件仿真,如下图,对着左边的“Debug Tool”点击右 键选择 RL78 Simulator。     这样就设置好了使用软件仿真方式来调试程序。确定程序编写没有问题后,点击 DEBUG->Build&Download 开始下载程序。 这时程序会弹出一个对话框提示说“软件仿真具有局限性……” 轻松设计 从瑞萨电子开始 21 瑞萨电子低功耗 MCU 实战手册      点击确定后,进入软件仿真图形界面。 进入界面后,点击左上角的新建按钮,新建一个“I/O Panel”,然后点击工具栏中的灯,并放“I/ O Panel”中。 对该灯点击右键进入其属性对话框,按如图进行设置,其中 Pin Name 表示该灯是要接到 MCU 的 哪个引脚。由于我们程序中使用的是 P04,所以这里我就选择 P04, 点击确定。 轻松设计 从瑞萨电子开始 22 瑞萨电子低功耗 MCU 实战手册 回到 CubeSuite+ 主界面,点击 F5 或如图所示运行程序 然后再回到软件仿真图形界面,这时可以看到刚才设置的灯正在按照程序设定的方式闪烁。 演示视频 相关帖子: >>R7F0C80212 Easy Start -- 聊聊 RL78 Simulator >>R7F0C80212 套件试用之开发环境搭建 3- 软件仿真 轻松设计 从瑞萨电子开始 23 瑞萨电子低功耗 MCU 实战手册 2.5 硬件仿真器 EZ-cube 的使用 R7F0C80212 套件很贴心地包含了一个简易硬件仿真器 ----EZ-CUBE。与我们常用的仿真调 试器(比如 JLINK)不同,EZ-CUBE 在调试不同的目标芯片系列时,需要加载不同的 EZ-CUBE 固件。 EZ-CUBE 现有固件及版本可以通过 QBEZUTL.EXE 程序查看。固件的更新也是使用这个软件。注意: 更新固件时,EZ-CUBE 仿真器不能连接到目标板。 1、 第一次使用 EZ-CUBE 需要先安装 EZ-CUBE 的驱动程序(在把 EZ-CUBE 插入 PC 之前 安装完),安装方法为从官网下载驱动程序,解压到 CubeSuite+ 软件安装目录下。 2、 再 通 过 USB 电 缆 把 EZ-CUBE 插 入 PC 的 USB 接 口( 此 时 PC 会 识 别 出 EZ-CUBE 为 Renesas Virtual UART)。    ->      -> 3、弹出对话框要求安装驱动程序: 轻松设计 从瑞萨电子开始 24 4、选择前面解压好的 EZ-CUBE 的驱动程序目录: 瑞萨电子低功耗 MCU 实战手册          轻松设计 从瑞萨电子开始 25 5、弹出对话框,选择继续: 瑞萨电子低功耗 MCU 实战手册 6、安装完成! 轻松设计 从瑞萨电子开始 26 瑞萨电子低功耗 MCU 实战手册 7、这时我们在设备管理器中可以看到,在端口下面新增了 Renesas Virtual UART(COM18), 你的电脑可能不是 COM18,没关系,记住串口号,后面的串口通讯中会用到它。   接下来更新 EZ-CUBE 固件。我们前面提到,EZ-CUBE 在调试不同的目标芯片系列时,需要加 载不同的 EZ-CUBE 固件。这个要切记。更换 MCU 时,一定要看看这个固件是否需要更新。 EZ-CUBE 硬件仿真器上面有 5 个拨码开关,用来配置 EZ-CUBE 硬件仿真器的功能。同时 EZCUBE 硬件仿真器上面有一个 3 孔插座,用来插外置晶体。 (1)对应我们这次使用的 R7F0C80212,首先要保证 5 个拨码开关的位置如下图。具体含义我 们后面解释。       轻松设计 从瑞萨电子开始 27 瑞萨电子低功耗 MCU 实战手册 对应我们 R7F0C80212 套件中的评估板,SW-1 开关选择 "M2",SW-2 开关选择“Int. Clock ” , SW-3 开关选择“Debug Mode”,SW-4 开关选择“5”,SW-5 开关选择 "M3"。 (2)从 Renesas 官网下载 EZ-CUBE 固件更新程序和固件: ez_qbezut_and_firmware_20130313.zip。并解压到 CubeSuite+ 软件安装目录下。 (3)启动 QBEZUTL.EXE 程序,根据项目开发所使用 MCU 选择加载对应的 EZ-CUBE 固件, 对应我们这次使用的 R7F0C80212, 选择 RL78G10_OCD_FW.hex。 轻松设计 从瑞萨电子开始 28 瑞萨电子低功耗 MCU 实战手册 (4) 选 择 固 件 后 按“Start” 按 钮 更 新 固 件 后。 先 关 闭 QBEZUTL.EXE 程 序, 再 重 新 打 开 QBEZUTL.EXE 程序,按 F/W Ver 按钮确认固件是否更新。 (5)确认已经更新后关闭 QBEZUTL.EXE 程序,拔出 USB 电缆。 注意:更新固件时,EZ-CUBE 仿真器不能连接到目标板。 至此,硬件仿真环境搭建完成。硬件仿真的使用有几点注意事项: (1)PC 的 USB 口在没有特殊设置时,最大允许电流 100mA。在 EZ-CUBE 与主机连通后, 主机始终保持向 EZ-CUBE 供电,所以请勿将 EZ-CUBE 连接到电流很大的目标系统上。 (2)仿真系统的上电顺序如下(不按此顺序上电,有可能损坏某部分)。下电的顺序正好和上面相反。 ☆ 将 EZ-CUBE 连接到目标板,注意目标板不要带电 ☆ 用 USB 电缆连接 PC 和仿真器,注意目标板不要带电 ☆ 目标板上电(如果是仿真器供电,这步可以省略) ☆ 打开调试软件。 接下来我们就可以在开发中使用硬件仿真器了。我们在建立新项目时,CubeSuite+ 软件默认情况 下选择的是使用软件仿真。所以在项目中使用硬件仿真器时,需要在项目中修改配置(debug tool 选 ez emulator)。当然,如果之前已经选择了硬件仿真,现在就不需要修改了。但是如果改用软件仿真, 这里就需要改为软件仿真(debug tool 选 simulator)。 轻松设计 从瑞萨电子开始 29 瑞萨电子低功耗 MCU 实战手册   debug tool 选 ez emulator 之后,我们代码编译完成后,就可以像软件仿真一样使用硬件仿真器 仿真了。具体详见我前面写的软件仿真,这里就不细说了。 EZ-CUBE 硬件仿真器上面有 5 个拨码开关,用来配置 EZ-CUBE 硬件仿真器的功能。配合加载 不同的 EZ-CUBE 固件,调试不同的目标芯片系列。对于这 5 位拨码开关的选择,我自己的理解是: (1)SW-1 开关和 SW-5 开关配合起来设置 EZ-CUBE 硬件仿真器仿真的 MCU 系列。 SW-1 开关选择 "M1" 对应 V850 系列 32 位 MCU。 选择 "M2" 对应 16 位 MCU。 SW-5 开关选择 "Other" 对应 NEC 内核的 MCU, 选择 "M3" 对应三菱内核的 MCU. "M3" R8C  RL78/G12(20/40pin) 三菱内核 "Other"  78K0  78K0R  RL78/G12(30pin) RL78/G13 RL78/G14 RL78/GI1A V850  NEC 内核 之所以 RL78 在两者中都有,我的猜测是 RL78 继承了 78K0R 和 R8C 的优点 (16 位 ),RL78/ G12(20/40pin) 系列采用了三菱的 R8C 的 MCU 核,RL78/G12(30pin) RL78/G13 RL78/G14 RL78/GI1A 系列采用了 NEC 的 78K0R 的 MCU 核。 注:瑞萨电子整合了 NEC、三菱和日立的 MCU,NEC、三菱的 MCU 多用于嵌入式 MCU,日立 的 MCU 多用于应用处理器 MCU。 (2)SW-2 开关用来设置仿真 MCU 的系统时钟来源。 当选择“Int. Clock ” ,时钟以 8MHz 固定频率提供给目标板。如需要改变频率,必须选择“Ext. Clock ” ,在这种情况下,需使用外部晶体连接 (EZ-CUBE 硬件仿真器上面有一个 3 孔插座,在这个 位置安装振荡器或者振荡电路 )。同时,在 CubeSuite+ 软件调试器的配置对话框中,选择外部晶振为 主时钟)。更详细的信息,需要参考 CubeSuite+ 软件的用户手册。 (3)SW-3 开关选择目标系统的运行方式。 当选择“Debug Mode” ,运行命令从 GUI 调试器发出时,用户程序将运行。 轻松设计 从瑞萨电子开始 30 瑞萨电子低功耗 MCU 实战手册    当选择“Stand Alone”,EZ-CUBE 连接到目标板,产生复位,用户程序将自动运行。 (4)SW-4 开关用来设定目标系统电源模式。 当选择“5”时,EZ-CUBE 向目标系统提供 +5±0.3 V 电源注。 当选择 "T" 时,使用目标系统的电源,电压范围 +2.7V~+5.5V。 相关帖子:>>R7F0C80212 套件试用之开发环境搭建 4- 硬件仿真 轻松设计 从瑞萨电子开始 31 瑞萨电子低功耗 MCU 实战手册 2.6 R7F0C80212 中断和按键中断解析 中断大家一定不陌生,在 51,STM32 等 CPU 中都有很多,而且大家都用过。不过瑞萨电子单片 机的中断和别家的还是有些不同的,而这些不同在我看来用起来还是很方便的。 在 R7F0C80212 的 datasheet 中对中断的描述分为两个章节。中断和按键中断。那么这两个有 什么不同呢?个人理解。对于瑞萨电子单片机来说中断,指的是那种通常我们使用的中断,例如:看门 狗中断、定时器中断、AD 中断等等。这些中断有个共同特点:当事件发生时,中断就被触发,程序跳 转到中断处理函数中执行。在 R7F0C80212 中共有两种中断:内部中断和外部中断。下表就是对这个 CPU 中所有中断向量的一个总结。注意这个表中的第 10 项:INTKR  检测按键返回信号。这个中断表 示的就是使用的是按键中断。具体我们后面再说。    和其它 MCU 一样,对于中断的控制无非就是几个寄存器标志位的操作而已:允不允许中断?优先 级如何确定?哪个中断发生了?在 R7F0C80212 中 (MK0L, MK0H) 寄存器被称为中断屏蔽标志寄存 器,它们用来设置哪些中断被屏蔽哪些被允许。(PR00L, PR00H, PR10L, PR10H) 这四个被称为优 先级选择寄存器,他们用来确定各中断源的响应顺序。(IF0L, IF0H) 这两个寄存器是状态寄存器,用来 表明当前哪个中断被触发了。除此之外,程序状态字 (PSW) 寄存器中还可以设置当前响应哪个优先级 别的中断。 而对于中断嵌套,其要发生需要两个条件: 1)即将发生的中断优先级比现在正在执行的要高 2)当前已经打开了 IE,即允许了中断。(瑞萨的单片机每次进入中断都会自动禁止 IE,所以如果 要嵌套的话,比如进入中断后手动打开才行。) 下面我们看看按键中断。个人理解,由于 R7F0C80212 的目标领域是小家电,所以对按键的需求 一般会多一点。所以瑞萨电子就单独把按键中断提出来。实际上,按键中断是整体中断的一部分。也就 轻松设计 从瑞萨电子开始 32 瑞萨电子低功耗 MCU 实战手册 是上表中的第 10 项:INTKR  检测按键返回信号。瑞萨电子把按键中断命名为 KRx 系列,也就是说只 要引脚为 KRx 就表明其可以响应按键中断。相对于其它中断来说,按键中断有更多的设置 , 如:上升或 下降沿检测、如何区分哪些按键被按下等等。(KRCTL) 被称为按键返回控制寄存器,其中只有两个位, 用来设置是否记录哪个按键按下和按键是上升 Or 下降沿触发。而 (KRF) 寄存器就是其中的位来指明当 前哪个按键被按下的。 一句话可以对按键中断进行总结:当按键按下的时候会发生 INTKR 中断,同时会设置好 KRF 寄存 器。所以要确定当前哪个按键按下的话,只需要在 INTKR 中断处理函数中读取 KRF 寄存器,看看和 按键对应的位是否被置为 1 了。 下面通过实例来看看如何用 R7F0C80212 的中断和按键中断。 void KR0_Init(void) // 按键中断寄存器初始化,板子上有 KR0-KR5, 所以对于每个按键要分别设置。 { volatile uint8_t w_count; /* Set KR0 pin */ PM4 |= 0x01U; // 设置 KR0 为输入模式,为什么这个引脚是 KR0? 看芯片引脚定义。 /* Set KR2 pin */ PMC0 &= 0xFDU; // 在 IO 端口模式控制寄存器中设置为数字端口 PM0 |= 0x02U;// 设置 KR2 为输入模式,为什么这个引脚是 KR0? 看芯片引脚定义。 /* Set KR3 pin */ PMC0 &= 0xFBU;// 在 IO 端口模式控制寄存器中设置为数字端口 PM0 |= 0x04U;// 设置 KR3 为输入模式,为什么这个引脚是 KR0? 看芯片引脚定义。 /* Set KR4 pin */ PMC0 &= 0xF7U;// 在 IO 端口模式控制寄存器中设置为数字端口 PM0 |= 0x08U;// 设置 KR4 为输入模式,为什么这个引脚是 KR0? 看芯片引脚定义。 /* Set KR5 pin */ PMC0 &= 0xEFU;// 在 IO 端口模式控制寄存器中设置为数字端口 PM0 |= 0x10U;// 设置 KR5 为输入模式,为什么这个引脚是 KR0? 看芯片引脚定义。 KRMK = 1U; /* disable INTKR operation */// 关中断,因为后面要更改中断设置 KRIF = 0U; /* clear INTKR interrupt flag */ KRCTL = _00_KR_EDGE_FALLING; //下降沿触发 /* Set INTKR level 1 priority */ KRPR1 = 0U; KRPR0 = 1U; // 设置优先级为 1 级别 KRCTL |= _80_KR_FLAG_USED;// 需要返回状态 KRM0 = _01_KR0_SIGNAL_DETECT_ON | _02_KR1_SIGNAL_DETECT_ON | _04_KR2_SIGNAL_DETECT_ON | _08_KR3_SIGNAL_DETECT_ON | _10_KR4_SIGNAL_DETECT_ON | _20_KR5_SIGNAL_DETECT_ON;// 开启各个中断 /* Change the waiting time according to the system */ for (w_count = 0U; w_count <= KEY_WAITTIME; w_count++) { NOP(); } /* Key Interrupt Start */ KRF = 0U; KRIF = 0U; /* clear INTKR interrupt flag */ KRMK = 0U; /* enable INTKR operation */ // 打开中断 } 轻松设计 从瑞萨电子开始 33 当中断发生时,程序跳入中按键中断处理函数中执行: 瑞萨电子低功耗 MCU 实战手册 __interrupt void interrupt_intkr(){ key_cnt++; key_code = KRF; /* save key code for main loop */ KRF = 0; /* clear flag for next key in */ } 该程序用 key_code = KRF; 来记录 KRF 寄存器的内容,而在随后的主程序中,根据 key_code 不同位的值来做不同的事情。 #define KEY_RIGHT #define KEY_LEFT #define KEY_UP #define KEY_DOWN #define KEY_STAR #define KEY_HASH 0x20 0x10 0x04 0x08 0x01 0x02 #define LED_GREEN 0 #define LED_RED 1 while(1) { if (key_code != 0) { /* Key Process */ if (key_code == KEY_LEFT)// 判断 key_code 的第 4 位是否为 1 { P0.0 = LED_RED; } else if (key_code == KEY_RIGHT)// 判断 key_code 的第 5 位是否为 1 { P0.0 = LED_GREEN; } key_code = 0;// 清除 key_code } } 完整程序代码如下: keyinput.rar 相关帖子:>>R7F0C80212Easy Start -- 超级简单好用的中断 轻松设计 从瑞萨电子开始 34 瑞萨电子低功耗 MCU 实战手册 2.7 R7F0C80212 时钟系统详解 时钟一直是 CPU 的核心,如果没有优秀的时钟系统,MCU 的功耗、运行速度都会受到不小的影响。 下面就来看看 R7F0C802 的时钟系统。 首先,整个芯片包含两个时钟系统:高速片上时钟和低速的片上时钟。高速片上时钟是系统的主时钟, 并且该时钟与用户的配置和外部电压是很有关系的。下图说明了该主时钟的种类和对应的关系。      而对于片上仅仅为 15Khz 的低速时钟,系统默认其就是为看门狗使用的,不能作为其它用途。下 图是系统时钟的总体结构图:         可以看到高速片上时钟与低速片上时钟基本没有什么关系,而高速的片上时钟出来的信号直接供给 蜂鸣器引脚输出,不需要任何控制,而对于定时器、串行接口、AD 转换的时钟则也依赖于这个时钟。 R7F0C802 的时钟寄存器比较简单明了。其中最重要的寄存器有以下两个个: 外围允许寄存器 0 (PER0) 高速片上振荡器频率选择寄存器 (HOCODIV) 它分别是用来控制打开哪个外设以及当前 CPU 的主时钟频率选择。下图给出了时钟状态转换图: 实际上,在程序中只需要更改 HOCODIV 寄存器的值就可以改变其运行频率了。 HOCODIV = 0x01;    // 使得 CPU 运行在 20M 的速度 OR HOCODIV = 0x03; // 使得 CPU 运行在 5M 的速度 相关帖子:>>R7F0C80212 Easy Start -- 时钟系统详解 轻松设计 从瑞萨电子开始 35 瑞萨电子低功耗 MCU 实战手册 2.8 R7F0C80212 的串口开发例程 串口是基本的通讯端口,基本上每个嵌入式处理都自带了至少一个串口了,R7F0C80212 当然也 不例外。本来以为 R7F0C80212 的串口是挺简单的东西,看来是太轻敌了,前前后后共花了一周的时 间才把它搞定。下面就来总结一下 R7F0C80212 串口的基本情况。 首先可以参考帖子中的串口例子,不过这个例子中有个小问题,需要把 要把 SCR01L =_00_SAU_MSB | _10_SAU_STOP_1 | _07_SAU_LENGTH_8; 改成 SCR01L =_80_SAU_LSB | _10_SAU_STOP_1 | _07_SAU_LENGTH_8; 不然始终不能得到正确的结果。 下面我们来看看 R7F0C80212 的基本情况:R7F0C80212 串行阵列单元 0 有两个串行通道。各 通道可以实现 3 线串行 (CSI) 和 UART 通信。这里用的是 UART 通信。 要配置寄存器还是比较多的,总的可以参看下面表格:    基 本 上 这 个 表 格 中 的 所 有 寄 存 器 都 要 配 置。 首 先 需 要 处 理 的 是 串 口 的 时 钟,PER0.2 也 就 是 SAU0EN 用来允许输入时钟的供应。SPS0 来对时钟分频,已达到自己想要的时钟 CK00,CK01。 SPS0 高四位第四位分别是用来得到时钟 CK01,CK00。 下面一组 SS0、SSE0、SE0,其中 SE0 寄存器用于确认各个通道的串行发送 / 接收操作处于允 许或禁止状态。对于这组寄存器,DS 中早有说明。    轻松设计 从瑞萨电子开始 36 瑞萨电子低功耗 MCU 实战手册       ST0 寄存器是对各个通道进行设置以允许停止通信 / 计数的触发寄存器。(停止串口) SS0 寄存 器是对各个通道进行设置以允许开始通信 / 计数的触发寄存器。(打开串口)SE0 寄存器用于确认各个 通道的串行发送 / 接收操作处于允许或禁止状态。在官方例程中是在 void SAU_Start(void) 中来控制 串口。接下来是控制串行输出的寄存器  SOE0,SO0 其中是 SOE0 设置是否允许或禁止各个通道的串 行通信操作的输出。这里我们肯定要将它置为 1 的。SO0 没有看明白。 下面是串口模式寄存器 (SMR0nH,SMR0nL) 串行通信操作设置寄存器 (SCR0nH, SCR0nL) (SMR0nH,SMR0nL) 中设置时钟,是 CSI 还是 UART 模式。(SCR0nH, SCR0nL) 中是设置的是我 们最常见的参数数据发送 / 接收模式、数据和时钟相位、是否屏蔽错误信号、奇偶检验位、起始位、停 止位和数据长度。 最后是发送和接收数据的寄存器 (SDR0nH,SDR0nL)低 8 位用作发送 / 接收缓冲寄存器。接收过 程中,由移位寄存器转换的并行数据将存储于低 8 位中,在发送过程中,发送至移位寄存器的数据将被 设置到低 8 位。 总 的 来 说,R7F0C80212 的 串 口 相 对 于 其 它 MCU 来 说 还 是 有 点 复 杂 的。 不 过 这 也 难 怪, R7F0C80212 的 IO 端口实在是太少了,在实现功能与 IO 相调和的基本前提下,那就只有多设置几组 寄存器了。 相关帖子:>>R7F0C80212 Easy Start -- 串口开发小计 轻松设计 从瑞萨电子开始 37 2.9 R7FC80212 目标板补充资料 瑞萨电子低功耗 MCU 实战手册 ☆ 目标板基本示例  R7F0C80212 目标板示例 .zip ☆ 目标板 TIMER 示例  TIMER.rar ☆ 目标板串口示例  串口 .rar ☆ 目标板其它示例 其它 .rar ☆ 中文数据手册 中文数据手册 .pdf ☆ R7F0C80212 简介 PPT  R7F0C80212 介绍 .pdf ☆ 目标板原理图  R7F0C80212 目标板 .PDF ☆ 瑞萨单片机扩展功能介绍 第 9 章 NEC78K0 单片机常用的 C 语言扩展功能 20090416.pdf 轻松设计 从瑞萨电子开始 38 第三章 EEworld 论坛网友 DIY 作品 瑞萨电子低功耗 MCU 实战手册 3.1 计步器 作者:EEworld 论坛网友 youki12345 计步器原理 R7F0C80212 体积小,引脚少,内存小,功耗低,完成诸如示波器等大型的东西显然不合适。看到 论坛里很多朋友都出了不少成果。刚好手边有个加速度传感器,于是乎干脆做个基于加速度计的计步器吧。 主要功能 1. 使用干电池供电 2. 轴加速度计来确定是否在步行 3. 通过蓝牙与手机连接 4. 手机客户端显示当前步数    相关帖子:>>R7F0C80212Easy Start 计步器的实现(1)--- 加速度模块 加速度模块 用来判断当前人状态的方法有很多,加速度计是一种不错的方法。在我们的计步器上就是用一个三 轴加速度计来实现计算人运动了多少步的。 首先,我们使用的加速度计是 MMA8451Q,它 是一款具有 14 位分辨率的智能低功耗、三轴、电 容式微机械加速度传感器,具有 ±2g/±4g/±8g 的用户可选量程,可以实时输出高通滤波数据和非滤 波数据。这款加速度传感器具有丰富嵌入式功能,带有灵活的用户可编程选项,可以配置多达两个中断 引脚。 供电电压:1.95 V 至 3.6 V ,接口电压:1.6 V 至 3.6 V。输出数据速率 (ODR) 范围: 1.56 Hz 至 800 Hz。下图是 MMA8451Q 模块的结构图,这个模块感觉设计挺好,既有插针孔,又有邮票孔, 便于 DIY。 轻松设计 从瑞萨电子开始 39 瑞萨电子低功耗 MCU 实战手册 这个模块采用是的 I2C 数字输出接口(在上拉电阻为 4.7 kΩ 时,最高频率可达 2.25 MHz), 适用于 6 个中断来源的 2 个可编程中断引脚采用 I2C 接口进行通信。所以我们必须接线的管脚有: VCC,GND,SCL,SDA,SA0 这个五个管脚。其中需要特别注意的是 MMA8451Q 是 3.3v 供电的, 如果需要与 5V 的处理器连接,用户需要在模块的 SDA、SCL、SA 等数字输入引脚与单片机的 IO 引 脚之间各串联一个 2K 左右的电阻,SA 脚是地址最低位选择,即地址选择。 轻松设计 从瑞萨电子开始 40 瑞萨电子低功耗 MCU 实战手册 采用模拟 IIc 的方式,读取加速度信号。即可得到所需的数据。有了加速度后,下面是我们整个计 步器的具体流程: 具体加速度代码:>> 点击下载 相关帖子: >>R7F0C80212 Easy Start 计步器的实现(1)- 加速度模块 与手机通信 一个计步器除了要能够计算出当前所走的步数之外,更重要的是能够把这些步数显示出来。可以由 于 R7F0C80212 芯片一共只有 8 个可用的引脚,其中 1 个作为了 LED 显示,一个作为了 RST,一个 作为了用户按键,再有两个作为加速度传感器的接口,那么剩下就只有 3 个引脚了。如果要用三个引脚 来显示至少是 4 位的十进制数的话基本不太可能。并且,如果用数码管作为显示的话功耗也吃不消啊。   好在现在基本上人手一个智能手机了,所以我们可以想办法把我们的计步器与手机联系起来,这 样,开发一个手机上的应用软件就可以显示我们当前行走的步数了。与手机通信的方法有很多,比如 说 NFC,GPRS 等等,其中最常用的当数蓝牙了,但是蓝牙协议本身是十分复杂的,想用资源有限的 R7F0C80212 芯片来实现一个蓝牙协议栈根本就是不可能完成的任务。好在淘宝上有这么个神器 ----串口蓝牙模块: 轻松设计 从瑞萨电子开始 41 瑞萨电子低功耗 MCU 实战手册        这东西其实就是用一个芯片把蓝牙协议栈全部实现了,然后我们的 R7F0C80212 只要通过串口的 RXD 和 TXD 与它进行收发数据就可以了。而手机能够直接与该模块相连。这样我们用两根线就把通讯 问题解决了。哈哈。下面是手机端的界面,手机不知道怎么截图,所以也就只能贴个示意图了。 相关帖子:>> R7F0C80212 Easy Start 计步器的实现(2)--- 与手机通信 项目展示 前面做了很多铺垫,终于到了最终完成的时刻了。首先看看我们计步器的散件吧。 轻松设计 从瑞萨电子开始 42 瑞萨电子低功耗 MCU 实战手册   整个计步器由 4 部分构成: ☆ 电源:两节 5 号电池,放在电池盒里 ☆ 计步模块:一个三轴加速度传感器 ☆ 通信:蓝牙模块,通过串口与 R7F0C80212 通信 ☆ 核心:当然是瑞萨的 R7F0C80212 啦 为了便于携带,我们把这几部分全部合在一起,并佩戴在了脚上,于是就成了下面的样子。       轻松设计 从瑞萨电子开始 43 瑞萨电子低功耗 MCU 实战手册    再来个全家福吧,手机软件 + 计步终端: 整个系统的代码:>> 点击下载 讲了这么多,下面就来看看具体视频演示: 相关帖子:>>R7F0C80212 Easy Start 计步器的实现(3)--- 最终完成版 轻松设计 从瑞萨电子开始 44 瑞萨电子低功耗 MCU 实战手册 项目总结 忙了一个多月终于把这个东西搞好了。回想刚拿到板子的那会,真不知道该做些什么。 R7F0C80212 的引脚少,内部资源也不多。做复杂的东西肯定不行。特别是还要突出 R7F0C80212 系列芯片的功耗低的特点。忽然想到自己的体重,何不做一个计步器呢?每天晚上锻炼的时候带上,回 来也可以知道今天自己运动了多少。想法是好的,但做起来确实问题多多: 关于显示   开始本来想直接用 LED 数码管来显示目前行走的步数,后来发现不太现实:    1)R7F0C80212 引脚太少,留下来扩展 LED 数码的引脚只有 3 个,这样的话只有用 595 之类的 串转并了。这无形中增加了系统复杂度    2)一次行走的话少则几百步,多则上千步,那至少要用 4 个 LED 数码管,再加上 595 之类芯片, 功耗肯定不小。   基于上面考虑最终还是采用蓝牙 + 手机显示的方法。   关于功耗 上面已经讨论过了显示的问题,除了显示外,系统供电也很关键。本想用锂电池来做,因为锂电池 容量更大,但如果用锂电池的话充放电这块又是个问题了,无形中增加了成本和系统的复杂度。这里要 赞一下 R7F0C80212 系列芯片的宽工作电压,在采用两节 5 号电池下依然坚挺的工作。实测在两节电 池下我们的计步器连续工作 6 小时没有问题。当然这里还是用到了一些休眠策略的。 关于计步算法   其实这个系统最核心的问题就是这个了,网上有很多成熟的计步算法,不过都是基于傅立叶变化查 找频率特征的,R7F0C80212 系列芯片资源有限显然不合适。其实我们有想过另外一种替代方案:把 采到的数通过蓝牙发到手机再傅立叶变换,不过这样蓝牙始终在发送状态,这样电池很快就没有电了。 后来我们用了一种简单变通的方法,峰峰值检测。这种方法比较简单,准确率也还行。不过也有缺点就 是跑步的时候需要重新设定峰峰值的阈值。。如果有时间后续我们这些也可以继续完善成自适应的。   关于瑞萨电子   最后,在开发完这个项目后我对瑞萨的东西有了个全新的了解,开始觉得那个开发环境挺别扭的, 后来发现其实还是挺好用的,特别是 CODE Generator 自动生成的代码更是没话说,越来越喜欢。而 R7F0C80212 系列芯片本身也挺好用的,非常小巧,但是功能很全,支持的电压范围很宽。非常适合 一些用电池的设备使用。我想以后开发一些小家电、小电子玩具、无线传感器网络等等都可以考虑这块 芯片了 相关帖子:>>R7F0C80212 Easy Start 计步器的实现 --- 项目总结 轻松设计 从瑞萨电子开始 45 瑞萨电子低功耗 MCU 实战手册 3.2 ADC 控制 PWM 调光 作者:EEworld 论坛网友 yang_alex 项目方案: 该项目采用控制模块 + 可 PWM 调光的脉冲恒流源模块 +LED 灯条, 项目 MCU 资源需求: 1)1 个 GPIO,该 GPIO 连接一个按钮,按钮每按下一次,LED 灯条开关状态翻转一次。 2)1 个 ADC 采样通道,连接一个旋转电位器,通过读取,电位器的可变端的相对位置(百分比) 作为 LED 灯条 PWM 调光的占空比输入。 3)1 个 PWM 通道,需要两个定时器资源,一个定时器设置 PWM 的周期,一个定时器设置 PWM 的占空比。 4)后续可增加 SPI 接口的 RF 遥控模块,需要 CSI 和 2 个 GPIO。这样,R7F0C80212 的资源 就可得到充分利用。 项目优势: 一、LED 灯具具有亮度高、功耗小、体积小、寿命长等优点 二、PWM 调光的优点 1)LED 灯光不会产生任何色谱偏移。因为 PWM 调光时,LED 电流始终在满幅度或 0 两者之中选择, 要不就是开,要不就是关。 2)可以有极高的调光精确度。因为脉冲波形完全可以控制到很高的精度,所以很容易实现万分之 一的精度。 轻松设计 从瑞萨电子开始 46 瑞萨电子低功耗 MCU 实战手册 3)可以和数字控制技术相结合来进行控制。因为任何数字都可以很容易变换成为一个 PWM 信号。 因此,很容易升级成智能灯具。 4) 即使在很大范围内调光,也不会发生闪烁现象。因为调光 PWM 频率为 1KHz 以上,远高于 25Hz,人眼不能识别闪烁,也不会像模拟调光,改变恒流源的工作条件(升压比或降压比),更不可 能发生恒流源过热等问题。 采用脉宽调制(PWM)来调光的原理:LED 发光二极管是一个半导体器件,它可以实现快速开关。 它的开关速度可以高达微秒以上。是任何发光器件所无法比拟的。因此,只要把电源改成脉冲恒流源, 用改变脉冲宽度的方法,就可以改变其亮度。这种方法称为脉宽调制(PWM)调光法。在本项目中, 脉冲恒流源模块采用采用了 PT4115 芯片,它是一款连续电感电流导通模式的降压恒流源,用于驱动 一颗或多颗串联 LED。PT4115 芯片有一 DIM 引脚,通过 DIM 引脚可以接受模拟调光和很宽范围的 PWM 调光。当 DIM 的电压低于 0.3V 时,PT4115 芯片内的功率开关关断,LED 断电,PT4115 模 块进入极低工耗的待机状态。   PT4115 电流源模块:   PT4115 电流源模块功能图: 轻松设计 从瑞萨电子开始 47 瑞萨电子低功耗 MCU 实战手册   PT4115 模块可以模拟调光和 PWM 调光,之所以采用 PWM 调光,是因为 PWM 调光时 LED 始终工作在满幅度电流和 0 之间,不会产生任何色谱偏移,LED 的亮度是通过 PWM 的占空比来调制 PT4115 电流源模块输出的脉冲式恒流源的占空比来实现的。在这里,我把 PWM 频率(即调光频率) 设置在在 1KHz 以上,这样可以避免人的眼睛可以看到 LED 的闪烁。 在这个应用中,R7F0C80212 先读取板上电位器上的电压,在这里不需要转换成具体的电压值, 读取值从 0~0x03FF(10 位采样 ),作为 PWM 的比较值来调节 PWM 的占空比。这里的 PWM 用 R7F0C80212 的定时器阵列单元实现。 后续项目样机准备用旋钮电位器取代 R7F0C80212 评估板上电位器,再装入自制外壳。有空再通 过 CSI 增加 SPI 接口的 RF 遥控模块(通过 ZIGBEE 模块),进一步可接入智能家居系统。 项目代码:>> 点击下载 演示视频 相关帖子:>>R7F0C80212 套件试用之小项目 --ADC 控制 PWM 调光 轻松设计 从瑞萨电子开始 48 瑞萨电子低功耗 MCU 实战手册 3.3 智能杯垫 作者:EEworld 论坛网友 ceozxy 一、设计背景 在生活中经常遇到喝水的烦心事,就是在工作繁忙时常常忘记喝水,时常倒一杯热水到想起喝的时 候却错过合适的水温,所以经常喝的是凉水,这样长时间不喝水导致身体缺水和经常喝凉水对身体喝肠 胃是一种摧残。所以基于爱惜身体和解决这一问题的前提下,开始设计一种有提醒功能的杯垫,来解决 喝水难得问题。(“瑞萨 MCU 应用之智能杯垫一”有讲到) 二、主要功能 1、  水温检测。 2、  设定适宜水温及适宜水温提醒。 3、  定时提醒饮水,记录饮水次数。 三、硬件设计 1、温度检测 温度检测是用两颗 10K 欧姆 NTC,一颗用来检测环境温度,一颗用来检测水温,两颗 NTC 可以 提供设计需要的温度检测数据,还有助于软件功能的实现。 10K NTC 特点 : 1: 阻值范围宽:1KΩ~500KΩ;B 值范围宽:2000K~4500K 2: 阻值及 B 值精度高 3: 测试精度高 4: 体积小 , 反映速度快 5: 能长时间稳定工作 , 一致性好 6: 使用温度范围 :-40~125℃ NTC 特性曲线 轻松设计 从瑞萨电子开始 49 瑞萨电子低功耗 MCU 实战手册 选取 NTC 做温度检测,一是根据此电阻的特性曲线可以看到,其温度和阻值比类线性变化,此特 性可以满足温度的连续检测要求,且测试精度可以满足设计需求;二是此电阻成本比较低,批量购买才 几分钱一颗。经测试在水温在 90℃左右时测得阻值为 3k 左右,所以在电路设计时通过 NTC 串联一个 高精度的 1K 电阻做采样, MCU 的 ADC 通道可以采集其电压变化,从而来测量温度。 2、声光提示 此硬件实现是用一个蜂鸣器和两颗 LED,当温度达到设定温度时,蜂鸣器发出 10Hz 的蜂鸣声 1s,同时 LED1 以 10Hz 频率闪光 5s。 3、电源设计 此设计可支持 5V 和 3.3V 两种供电状态,当在 USB 供电或 Debug 状态下,系统 5V 供电;当在 超级电容供电状态下,系统 3.3V 供电。 硬件原理图(原理图下载) PCB 设计 轻松设计 从瑞萨电子开始 50 3D 图 TOP 瑞萨电子低功耗 MCU 实战手册 3D 图 BOTTOM 四、软件设计 1、  端口分配 通过 MCU 的 ADC 通道 IN2、IN3 来采集温度数据,在温度采集时设定 1 秒采集一次;P02 口接 蜂鸣器,实现蜂鸣器控制;P00 和 P01 接 LED,实现 LED 控制,同时这两口还支持 UART 数据传输口, 便于调试;P125 口实现按键控制。 2、  程序功能 轻松设计 从瑞萨电子开始 51 瑞萨电子低功耗 MCU 实战手册 通过 IN2、IN3 端口蒋电压量通过 ADC 转化为数字量,ADC 每一秒采集一次,蒋采集转化后数据 通过数组存储,之后再进行提取和比较处理。我们可以通过按键设定适宜水温,此适宜水温是检测水温 和环境温度的差值,此数据设定后数据蒋存储在数组中,直到再次设定;当水温由高到低降温时,水温 预警 Flag 置位,当达到设定的水温时蜂鸣器和 LED 动作 Flag 置位,发出声光提示。当水温达到室温时, 定时器清零开始计时,当计时达到 1h 时,蜂鸣器 Flag 置位,发出提示音,且次数加 1,累计 8 次,计 次变量清零。 程序流程图(项目源代码下载) 轻松设计 从瑞萨电子开始 52 原型样机    测试视频 瑞萨电子低功耗 MCU 实战手册 相关帖子:>> 瑞萨 MCU 应用之智能杯垫 总结 轻松设计 从瑞萨电子开始 53 瑞萨电子低功耗 MCU 实战手册 3.4 R7F0C80212 通过音频接口与手机通信 作者:EEworld 论坛网友 weizhongc 项目思路来源 通过做什么来学习这款单片机呢,流水灯,移动电源,电机控制板,还真不知道。看连续剧好了, 或许可以想到个好想法啊。“约会专家” 嗯,这连续剧不错,IT 男真的要好好学习下。到优酷的苹果 5S 广告好牛啊,想了一下,那我做一个通过耳机通讯的作品好了,在 PCB 上焊接个爱心桃,然后通过 手机控制爱心桃的亮灭,多酷。 哈哈,我就直奔主题啦。 项目实现 首先手机安装一个遥控精灵,自己试了一下,通过示波器捕捉到了下面的波形。 通过上面的图片计算出这是 载波频率为 13Khz 的 FSK 信号。现在我想通信的话就是实现一个 FSK 信号解调。可以通过过零检测来实现。一开始自己还在想这可能要弄很久呢,不过看了瑞萨所有的 例程觉得这好像不是件难事。 下面是我调制前跟解调后然后再调制的信号。(项目源代码下载) 轻松设计 从瑞萨电子开始 54 瑞萨电子低功耗 MCU 实战手册 总体感觉这个这款单片机对于小家电来说还是不错的,例程也比较多,在开发过程也相对降低了很 多难度,对于开发周期也能大大缩短。 项目演示 没有爱心桃,只有一个黄色灯亮,那个黄色的要是换成红外灯的话,理论上是可以遥控家里的电器的。 相关帖子 >> 让瑞萨单片机与手机通讯 轻松设计 从瑞萨电子开始 55 3.5 智能学习型万能红外遥控器 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 论坛网友 mars4zhu 一、项目目的 目前智能家居、智能穿戴设备的热潮火热兴起,各类层出不穷的智能设备引发新一轮的创新概念。 许多创业型公司推出多种创新性的智能产品。在智能家居方面,许多自动遥控智能设备都采用万能学习 型红外遥控器。使用低成本 MCU+ 联网在线红外编码库 + 自主学习红外编码,可以对市面上大多数红 外遥控的设备进行遥控。目前该技术已较为成熟,对各电器大厂的红外编码研究也逐渐透彻,学习型红 外遥控技术也日趋完善。 本项目拟利用 R7F0C80212 系列芯片,开发出万能学习型红外遥控方案,为智能设备提供完整的 解决方案,形成可整合的模块。该模块具备红外发射与红外接收功能,并通过 UART(或 SPI)与外部 进行通讯,接收外部的编码指令,并调制成红外载波后,通过红外发射管发射,对电器、设备进行红外 遥控。同时在无法预先得到电器红外编码的情况下,该模块可接收电器遥控器的信号,并解码成红外编码, 通过通讯接口输出,完成红外学习功能。 该模块可对目前的智能家居等设备提供便利、快速的万能学习型红外遥控模块。 R7F0C80212 系列芯片的优势 (1)R7F0C80212 系列芯片具有超低成本与超低功耗的特点,使得该系列芯片具有极高的性价比 和电池使用寿命。 (2)独特的多功能定时器 TAU,可较方便的实现红外编解码操作,无需其他编解码芯片或模块。 (3)具备集成的片内振荡器,可降低 BOM 元器件数量和成本,降低了模块面积和成本,提高了 整合度。 (4)CSI、UART 接口,可非常便利地与主控或上位机进行通讯,提高了模块的通用性。 二、红外遥控协议分析 本章节主要为概念介绍,引用 wiki、网页等。 远程遥控技术又称为遥控技术,是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领 域应用广泛。红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成 本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,红外遥控的发射电路是采用红外 发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它 们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。 http://www.sbprojects.com/knowledge/ir/index.php Modulation is the answer to make our signal stand out above the noise. With modulation we make the IR light source blink in a particular frequency. The IR receiver will be tuned to that frequency, so it can ignore everything else. You can think of this blinking as attracting the receiver’s attention. We humans also notice the blinking of yellow lights at construction sites instantly, even in bright daylight. 轻松设计 从瑞萨电子开始 56 瑞萨电子低功耗 MCU 实战手册   In the picture above you can see a modulated signal driving the IR LED of the transmitter on the left side. The detected signal is coming out of the receiver at the other side. In serial communication we usually speak of 'marks' and 'spaces'. The 'space' is the default signal, which is the off state in the transmitter case. No light is emitted during the 'space' state. During the 'mark' state of the signal the IR light is pulsed on and off at a particular frequency. Frequencies between 30kHz and 60kHz are commonly used in consumer electronics.   At the receiver side a 'space' is represented by a high level of the receiver's output. A 'mark' is then automatically represented by a low level. Please note that the 'marks' and 'spaces' are not the 1-s and 0-s we want to transmit. The real relationship between the 'marks' and 'spaces' and the 1-s and 0-s depends on the protocol that's being used. More information about that can be found on the pages that describe the protocols. 三、美的空调遥控器红外遥控代码分析与自学习 本项目采用家里安装的美的空调,将原装的遥控器拆开,并将红外发射管接到逻辑分析仪上,同时 在逻辑分析仪的另一个通道连接至一体化红外接收管 HS0038B 的 OUT 引脚上,同时对比分析两者的 协议。 美的空调遥控器代码分析接线图 波形截图分别如下。 轻松设计 从瑞萨电子开始 57 瑞萨电子低功耗 MCU 实战手册 “开 / 关”键码全貌图(上:接收;下:发送) 38KHz 载波截图 发送红外二极管引脚对地电压(红外二极管阳极连接 VCC,因此此处测出低电平代表二极管发射 红外光,可见载波频率 38KHz,占空比 (26-9):26 ~= 1:3) 发射波形与接收输出波形 从图中可以看到,发射的 38KHz 的载波,在一体化红外接收管 HS0038B 的解调下,已经将载波 去除,而只输出原始波形即 38KHz 波形的包络(envelope) 经过深入查询,了解到美的的协议如下。 四、美的空调(R51D)协议与自学习 美的空调(R51D)协议 一次按键重复发两次,前后两次完全一样,上个图片:   前、后两次完全一样,下面再发一次前面部分的图片: 轻松设计 从瑞萨电子开始 58 瑞萨电子低功耗 MCU 实战手册 包括:引导码、8 位地址码、8 位地址反码、前 8 位数据、前 8 位数据反码、后 8 位数据、后 8 位 数据反码、后置单脉冲 其中地址码是:1011 0010(B2) 下面就各部分分解说明: 引导码:4.5mS 发送、4.5mS 间隔:   1”:0.56uS 发送、0.56*3uS 间隔:   “0”:0.56uS 发射、0.56uS 间隔:   后置单脉冲:0.56 发送、4.5mS 间隔: 采用数组记录 HS0038B 的 OUT 波形中的每一个脉冲的时间间隔宽度,即保存的原始波形, 然后按照上述协议进行解析,就得到遥控代码。 轻松设计 从瑞萨电子开始 59 接收到的原始波形数据(部分) 分析我的美的空调遥控器的开关码分别是: 开:1F D8 关:7B E0 瑞萨电子低功耗 MCU 实战手册 五、红外代码的发射 瑞 萨 电 子 的 R7F0C80212 芯 片 有 两 个 Timer, 刚 好 用 一 个 Timer 生 成 38KHz 载 波, 另 一 个 Timer 生成调制波的时间。 软件流程为: 基于 R7F0C80212 的智能遥控器的软件流程图 函数分别如下: __interrupt void interrupt_inttm00(){ baseFreq ++; switch(baseFreq){ case 1: // write 0 // P0 = (P0 &~DAT_BIT) | (switcher & DAT_BIT) ;// switcher lock it ? 0xFF for lock on high level(write 1), 0 for not P0.DAT = switcherOn ; break; case 2: // write 1 P0.DAT = 1; break; case 3: // Keep 1 轻松设计 从瑞萨电子开始 60 baseFreq = 0; 瑞萨电子低功耗 MCU 实战手册 } } __interrupt void interrupt_inttm01(){ if(emitted ){ return; } if( tmpData[emitIdx] & emitMask ){ switcherOn = YES; }else{ switcherOn = NO; } emitMask >>= 1; if( emitMask == 0){ emitMask = 0x80; emitIdx ++; } if( emitIdx == expandedLen && emitMask == expandedMask ){ emitIdx = 0; emitMask = 0x80; if( !repeat ) { repeat = YES; }else{ emitted = YES; repeat = NO; } } } 之后采用一个按键的高低电平作为开或关键的发射选择 void scan_keys(){ if( !P0.KEY_A && lastCurLevel == HIGH){ // User pressed key ON, should turn on air-condition lastCurLevel = LOW ; expandedLen = expand(turnOnCodes, LEN); emitted = NO; }else if( P0.KEY_A && lastCurLevel == LOW) { // User pressed key OFF, should turn on air-condition lastCurLevel = HIGH ; expandedLen = expand(turnOffCodes, LEN); emitted = NO; } } 轻松设计 从瑞萨电子开始 61 最核心的红外键码调制和发送函数 瑞萨电子低功耗 MCU 实战手册 UINT8 expand(UINT8 codes[], UINT8 arrlen){ // this function is ugly UINT8 i, j, tmpIdx=2, tmpBitMask=0x80, bitMask=0x80; memset(tmpData+2, 0xff, sizeof(UINT8) * (MAXLEN-2) ); // skip the preamble for(i=0;i>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } }else{// 0 tmpData[tmpIdx] &= ~tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } } bitMask >>= 1; } for(bitMask=0x80,j=0; j<8; j++){ if( !(codes[i] & bitMask) ){ // 1 tmpData[tmpIdx] &= ~tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } 轻松设计 从瑞萨电子开始 62 瑞萨电子低功耗 MCU 实战手册 tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } }else{// 0 tmpData[tmpIdx] &= ~tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } tmpData[tmpIdx] |= tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } } bitMask >>= 1; } } tmpData[tmpIdx] &= ~tmpBitMask; tmpBitMask >>= 1; if( tmpBitMask == 0){ tmpIdx ++; tmpBitMask = 0x80; } expandedMask = tmpBitMask; return tmpIdx+1; } 轻松设计 从瑞萨电子开始 63 瑞萨电子低功耗 MCU 实战手册 基于 R7F0C80212 的智能遥控器原型实物图 效果视频地址: 轻松设计 从瑞萨电子开始 64 瑞萨电子低功耗 MCU 实战手册 3.6 智能灯 作者:EEworld 论坛网友 purplebee 项目目标 能够根据室内情况控制相关设备,以灯为例,可以室内暗并且有人的时候自动开灯,人离开或者室 内亮自动关灯。 系统设计 这个系统除了 MCU 外,还需要一个光传感器(Light Sensor),用来感知光的强度。还需要一个 传感器来检测是否有人。一个可以考虑的传感器是红外线动作感测器 (PIR Motion Sensor),这个好处 是感应距离长,但对静止的人没法识别;还有一个是使用距离传感器(Proximity Sensor),这个是利 用主动红外线探测物体,感应距离稍短,但不限运动还是静止,虽然别的挡在它前面的物体也会探测, 但一般室内家具之类的都是固定不动的,如果它前面出现物体挡住,一般是人。 所以最终确定先用光传感器(以下简称 lsensor)和距离传感器(以下简称 psensor)来实现。 我手头有一个 intersil 的 ISL29021 开发板,包含一颗芯片,集成 lsensor 和 psensor。如图,中 间那个 U1 是 lp-sensor,很小,8 个 pin。支持 I2C 通信,支持的光线强度范围很大。 lpsensor 的内部原理框图: 轻松设计 从瑞萨电子开始 65 瑞萨电子低功耗 MCU 实战手册 实际工作的时候,可以设置 sensor 的阀值,工作时阀值到了会触发一个中断,MCU 收到中断后, 查询相应的 light 和 proximity 的值,根据对应的算法决定是否打开灯光。如果灯支持亮度调节,还可以 根据环境光线调整。 系统框图如下,其中左上是 MCU 通过继电器控制灯。实际实现的时候,我直接利用瑞萨开发板上 的 LED 来演示。 相关帖子:>> 智能灯的设计与实现(2)系统设计 系统实现 前面提到使用使用 I2C 控制 lpsensor 的设计,因为 R7F0C80212 不支持 I2C 接口,所以需要使 用两个端口来模拟 I2C 的 SDA 和 SCL pin。实现的时候参考了 youki12345 的实现(在此表示感谢)。 实际的连接图如下,图上 lpsensor 的开发板上连了个 USB 是为了供电,这样省得从瑞萨电子的开 发板上取电了。   程序的流程图如下: 轻松设计 从瑞萨电子开始 66 瑞萨电子低功耗 MCU 实战手册   代码实现如下:Auto_Light.zip 系统测试 测试的时候我用手放在 sensor 前模拟有人,用手遮住光模拟天黑。sensor 在板子的中间靠右一点。 灯用瑞萨开发板上的 LED D1 来模拟(即下面照片里远离相机的 LED)(测试时的距离是故意调近的, 不然一个人一边拍一边用手操作不方便)有人且天黑:   无人且天黑: 轻松设计 从瑞萨电子开始 67   有人且天亮: 无人且天亮: 瑞萨电子低功耗 MCU 实战手册 顺便用手机录了一段视频,上传到土豆网站了。 轻松设计 从瑞萨电子开始 68 瑞萨电子低功耗 MCU 实战手册 后记 R7F0C80212 这款 MCU 虽然很小,但是麻雀虽小,五脏俱全,通过 pin 的复用,能够很灵活的 组合出自己想要的功能。对应开发板设计也很合理,结合 EZ-Cube,使开发过程相当方便。这次使用 留下不少遗憾,如果不是去国外出差,就可以有更多时间更好的把玩了。 相关帖子:>> 智能灯的设计与实现(3)系统实现和测试 轻松设计 从瑞萨电子开始 69 瑞萨电子低功耗 MCU 实战手册 3.7 充电电流提示和充满自动断电电路 作者:EEworld 论坛网友 littleshrimp 一、技术背景 我在平时生活中经常遇到两个问题,一个是在使用别人的充电器和数据线时,虽然能看到手机正在 充电,但不知道应该什么时候能够充满,不知道现在的充电电流是否达到标称的最大值,或者在买一个 新充电器和 USB 线的时候不确定他们的质量是否合格。还有一个担心是有点多余的,就是在手机充满 电以后怕他时不时的再充那么一会儿电,时间长了对电池不好,另外了怕他万一什么时候一抽风把我的 设备干爆了是小事,把家点着了就惨了。因为有一次我的剃须刀插在墙壁插座上充电,等我下班回家时 他已经把自己霍害的惨不忍睹,满屋子都弥漫着电子器件烧焦的味道,让我很是担心,所以后来在设备 充电的时候我都尽可能让其远离被褥、书本这类较易燃烧的物品。虽然通过专业知道我知道由于过充电 导致上述问题的几率是极低的,但还是做了这个东西。 二、 功能描述 要实现的功能很简单: 1、检测充电电流并显示; 2、检测到电池充满后切断电源; 三、技术实现 1、在充电地线上串联一个 0.05 欧姆的电阻,使用 AD8542 这款放大器将电流检测电阻分出来的 微小电压放大,然后通过 R7F0C80212 的 ADC 采集电压数据,计算得到当前充电的电流,通过两 片 74HC595 控制两个 4 段数码管,一个显示 ADC 读取到的数值,一个显示转换后的电流值(单位为 mA)。 2、电路设计好后我采集了三次数据,见下表,通过些这数据的关系得到通过 AD 数值计算电流数 据的公式,因为我只有小学文化,对于数据计算实在无能为力,这时多亏论坛一里哥们帮忙,帮我把 写出计算公式,这里再次表示感谢,虽然这个公式还存在点小问题。AD=-53/650* 电流 +128;电流 =(128-AD)*650/53    电流表数据 (mA)    0 330 650 模块 AD 数值 128 101 75 3、单片机上电时将 P0.0 输出低电平控制串联在充电电路 5V 电源线上的 P 沟道 MOSFET 导通。 然后通过检测充电电流是否超过  100mA 来判断用户是否插入被充电设备。 4、当检测到电流超过 100mA 后等待一段时间,使充电稳定下来,然后再通过检测充电电流是否 低于 100mA 为判断用户是否拨下设备,或设备充电已经完成(通常一个手机或 PAD 在充满后电流会 低于 100mA,并时不时再达到标准充电电流),当发现充电已经完成时断开 MOSFET,停止充电, 此时用户需拨下单片机的电源,使单片机复位(为了省事我并没有利用开发板上的按键来实现再次启用 轻松设计 从瑞萨电子开始 70 充电功能,哪位有兴趣可以自己试下,非常简单)。 四、 附图说明 1、流程图(源代码下载) 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 71 2、原理图 3、焊接后的效果图 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 72 瑞萨电子低功耗 MCU 实战手册 4、充电时的万用表电流数据和此模块检测到的电流数据 轻松设计 从瑞萨电子开始 73 瑞萨电子低功耗 MCU 实战手册 五、演示视频 相关帖子:>> 使用瑞萨 R7F0C802 做的充电电流提示和充满自动断电电路 轻松设计 从瑞萨电子开始 74 瑞萨电子低功耗 MCU 实战手册 3.8 四轴飞行器 作者:EEworld 论坛网友 tziang 项目描述 如今四轴非常火,尤其是最近几年的各种大学生电子竞赛都开始了四轴的题目,四轴的附件也比较 多,有电池低电压报警的,OSD,GPS, 图传,数传,等等。但是玩过四轴的人都知道,很多飞控的 ARMED 和 DISARMED 的状态都是通过飞控板上的指示灯来指示的,非常不便。 本设计的主要目的就是根据飞控灯的状态,转换为蜂鸣器的警示来提示用户。并且集成飞行器电池 低电压报警的功能。本来是想把 OSD 功能一起做进去,但是瑞萨的这款单片机系统资源比较有限,完 成上面的两个主要功能已经把存储资源用的差不多了。 硬件设计 充分利用瑞萨评估板的硬件,设计如下: 1)一路 LED 做为系统的心跳指示,表征系统是否正常工作; 2)一路 LED 同步显示飞控板过来的 ARMED 和 DISARMED 的状态,同时进行采样判断; 3)一路 ADC 采样电池电压,实时监测电池电压; 4)一路蜂鸣器驱动,通过不同的频率及长短分别只是 ARMED,DISARMED 和低电压报警。 软件设计 使用时间调度的概念,分别对应上面的硬件设计,建立 4 个任务,使用 1 路定时器设定系统时标, 由 CPU 根据各个任务设定的调度周期,进行调度执行。便于系统功能的增减和维护。对用户来说,主 要是要定义蜂鸣器表达的信息 1)蜂鸣器一直响,表示电池电压低于设置报警电压; 2)蜂鸣器以锐耳声 (1200Hz 左右 ) 响 1S,表示系统由 DISARMED 状态切换到 ARMED 状态; 3)蜂鸣器以中频声 (600Hz 左右 ) 响 3S, 表示系统由 ARMED 状态切换到 DISARMED 状态。 演示视频 电脑控制飞控板状态演示视频: 轻松设计 从瑞萨电子开始 75 安装到四轴上视频演示: 瑞萨电子低功耗 MCU 实战手册 小结: 本次 DIY 活动比较坎坷,经历了软件环境搭建不顺,仿真器不能单步执行,功能迟迟实现不了等等。 总的来说: 1)瑞萨强大的 CubeSuite+ 开发套件,对此款单片机支持的还不够好,要开发者自行打补丁支持; 2)CubeSuite+ 的软件仿真和 Code-generator 做得非常棒,本次设计中的许多驱动都是通过 Code-generator 直接生成的; 3)此款单片机的存储比较有限,适合做低成本的简单应用。 相关帖子:>> 基于瑞萨 R7F0C80212 的 Copter_accessory_DIY 轻松设计 从瑞萨电子开始 76 3.9 超声波测距仪 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 论坛网友 wenyangzeng 关于基于瑞萨电子 R7F0C80212 所做的超声波测距仪,所用超声波发射接收头是 HC-SR04 普 及型模块,我用的模块测距范围是 30 厘米的那种。给模块的触发端发送 15-20uS 的方波,模块自动 根据反射回波的时间输出对应宽度的方波。 利用定时器的“Input pulse high-/low-level width measurement”脉冲宽度捕捉功能,可以很 方便地对超声回波的时间进行精确测量。该功能的输入在 R7F0C80212 的 P1.37, 将 HC-SR04 模块 的 ECHO 直接接该脚,P0.1 就作为 TRIG 触发。P0 的剩余 3 个 IO 口用来驱动 HT1621 液晶模块。 利用 Cube Suite+ 的 Code Generator 功能可以快速配置软件环境参数,主要是将 Timer Array Unit 的 Channel 0 配 置 为 Input pulse high-/low-level width measurement, 见 附 图。 本 例 中 的 Measurement level select 要配置成 High level, 以便在回波上升沿到来时触发捕捉功能开始计数。在 回波下降沿到来时得到回波宽度值。 由于 R7F0C80212 只有 2KB 的 ROM 空间,资源有限,要实现本例的功能有点吃紧,刚开始调 试时就经常编译出错,被告知 MEMORY 使用超“标”。后来在添加的每个代码都要精打细算,最后 还得把看门狗也关闭了,省下几个清看门狗的语句才够用。 这个测距仪调试成功后工作效果还是令人满意的,LCD 的 4 位读数显示的测距单位为厘米后加 2 位小数。在视频中你可以看到读数基本上是稳定的。只有小数点的第二位有所跳动,百分之几毫米的值。 原理图 轻松设计 从瑞萨电子开始 77 代码: 瑞萨电子低功耗 MCU 实战手册 uint8_t LCD[8],DispBuf[4]; void R_MAIN_UserInit(void); void main(void) {uint32_t i; R_MAIN_UserInit(); R_TAU0_Channel0_Start(); // 开启定时器 Init_LCD(); while (1U) { P0.1=1; // 触发超声波启动 for(i=0;i<20;i++)NOP(); //2KB 的 ROM, 延时如果再调用子函数就挂了 P0.1=0; WriteAll_1621(0,8); //LCD 显示 for(i=0;i<30000;i++)NOP(); } } // 上下沿捕捉中断 __interrupt static void r_tau0_channel0_interrupt(void) { if (1U == (TSR00 & _01_TAU_OVERFLOW_OCCURS)) /* overflow occurs */ { g_tau0_ch0_width = (uint32_t)TDR00L; g_tau0_ch0_width = (uint32_t)TDR00H * 0xFFU + g_tau0_ch0_width + 0x10000U; } else { g_tau0_ch0_width = (uint32_t)TDR00L; g_tau0_ch0_width = (uint32_t)TDR00H * 0xFFU + g_tau0_ch0_width; } AsciiConvert((uint32_t)g_tau0_ch0_width); // 调用 LCD 显示的数据转换函数 } // 定时器配置 void R_TAU0_Create(void) { TAU0EN = 1U; /* supplies input clock */ TPS0 = _02_TAU_CKM0_FCLK_2 | _00_TAU_CKM1_FCLK_0; /* Stop all channels */ TTH0 =_02_TAU_CH1_H8_STOP_TRG_ON; TT0 = _01_TAU_CH0_STOP_TRG_ON | _02_TAU_CH1_STOP_TRG_ON; /* Mask channel 0 interrupt */ TMMK00 = 1U; /* disable INTTM00 interrupt */ TMIF00 = 0U; /* clear INTTM00 interrupt flag */ /* Mask channel 1 interrupt */ TMMK01 = 1U; /* disable INTTM01 interrupt */ TMIF01 = 0U; /* clear INTTM01 interrupt flag */ /* Mask channel 1 higher 8 bits interrupt */ 轻松设计 从瑞萨电子开始 78 TMMK01H = 1U; /* disable INTTM01H interrupt */ TMIF01H = 0U; /* clear INTTM01H interrupt flag */ /* Set INTTM00 low priority */ TMPR100 = 1U; TMPR000 = 1U; } 瑞萨电子低功耗 MCU 实战手册 //IO 配置 void R_PORT_Create(void) { P0 = _01_Pn0_OUTPUT_1 | _02_Pn1_OUTPUT_1 | _04_Pn2_OUTPUT_1 | _08_Pn3_OUTPUT_1 | _10_Pn4_OUTPUT_1; P4 = _01_Pn0_OUTPUT_1; PMC0 = _00_PMCn1_DI_ON | _00_PMCn2_DI_ON | _00_PMCn3_DI_ON | _00_PMCn4_DI_ON | _ E1_PMC0_DEFAULT; PM0 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_ PMn3_MODE_OUTPUT | _00_PMn4_MODE_OUTPUT | _E0_PM0_DEFAULT; PM4 = _00_PMn0_MODE_OUTPUT | _FE_PM4_DEFAULT; } 演示视频 相关帖子:>> 基于 R7F0C80212 的超声波测距仪 轻松设计 从瑞萨电子开始 79 3.10 远程门禁系统 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 论坛网友不足论 项目介绍 本次门禁系统采用 NORDIC 公司的 NRF24 系列完成收发操作,并在上位机上进行显示,发送端 采用该瑞萨开发板 +NRF24L01 模块,接受端采用 NRF24LE1 模块装置,依靠 NRF24 系列的 2.4GHZ 的频段,首先是不对其他频段造成干扰,同时它具有良好的距离性,良好环境下的设置能够达到 30-60 米的距离,有人说远程门禁有什么用,近程门禁可以用于商场和普通商店的使用,好吧,我只能说,每 一样创作都有它的定位,我这个作品的定位用于交通和物流等机械方面,比如一个货车需要下货,每次 开门拉门都是对门口的挑战,不得不说现在中国逐步老年化,现在的看门人很多都是 40,50 岁的人了, 他们有时候开门很不便,开一两次还好,如果经常不定期的下货,他们可能受不了,所以,采用了这个装置, 当达到 30-60 米的时候,门自动开启,省去了人力成本,也加快了下货速度,特别适用于集装箱码头, 如果系统的每一个大门都采用这个装置,通过电脑能够清楚的统计和指导车子下货的地点,这对物流的 传输提供极大的便利。还有交通方面,公交车快到了,可是现在近视的人很多,如果遇到拥挤的道路口, 看不到车子的到来是很正常的事情,所以,该装置也能为交通服务,通过接收到的数据进行转换显示于 显示屏上,这是相当有助益的。 方案描述 发射数据(采用的核心器件是 NRF24L01 和瑞萨开发板)时,首先将 nRF24L01 配置为发射模 式:接着把接收节点地址和有效数据按照时序由 SPI 口写入 nRF24L01 缓存区,必须在 CSN 为低时 连续写入,然后 CE 置为高电平并保持至少 10μs,延迟 130μs 后发射数据 ; 若自动应答开启,那么 nRF24L01 在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址一 致)。如果收到应答,则认为此次通信成功 ; 若未收到应答,则自动重新发射该数据 ( 自动重发已开启 ), 若重发次数 (ARC) 达到上限,在次重发。最后发射成功时 , 若 CE 为低则 nRF24L01 进入空闲模式 1; 若发送堆栈中有数据且 CE 为高,则进入下一次发射 ; 若发送堆栈中无数据且 CE 为高,则进入空闲模式 2。 特别要注意的是在发射模式的时候,应该先拉低 CE,先在 TX FIFO 里写入要发射的数据,再拉高 CE 真正发射。 接收数据(NRF24LE1)时 , 首先将 nRF24LE1 配置为接收模式,接着延迟 130μs 进入接收状 态等待数据的到来。当接收方检测到有效的地址和 CRC 时,就将数据包存储在 RX FIFO 中,同时中 断标志位置高,IRQ 变低,产生中断,通知 MCU 去取数据。若此时自动应答开启,接收方则同时进入 发射状态回传应答信号。最后接收成功时,若 CE 变低,则 nRF24LE1 进入空闲模式 1。 项目实现 这个是我采用的 NRF24L01 的模块引脚功能图。    轻松设计 从瑞萨电子开始 80 瑞萨电子低功耗 MCU 实战手册 发射数据时,首先将 nRF24L01 配置为发射模式:接着把接收节点地址和有效数据按照时序 由 SPI 口写入 nRF24L01 缓存区,必须在 CSN 为低时连续写入,然后 CE 置为高电平并保持至少 10μs,延迟 130μs 后发射数据 ; 若自动应答开启,那么 nRF24L01 在发射数据后立即进入接收模式, 接收应答信号(自动应答接收地址应该与接收节点地址一致)。如果收到应答,则认为此次通信成功 ; 若未收到应答,则自动重新发射该数据 ( 自动重发已开启 ),若重发次数 (ARC) 达到上限,在次重发。 最后发射成功时 , 若 CE 为低则 nRF24L01 进入空闲模式 1; 若发送堆栈中有数据且 CE 为高,则进入 下一次发射 ; 若发送堆栈中无数据且 CE 为高,则进入空闲模式 2。特别要注意的是在发射模式的时候, 应该先拉低 CE,先在 TX FIFO 里写入要发射的数据,再拉高 CE 真正发射。 接收数据时 , 首先将 nRF24LE1 配置为接收模式,接着延迟 130μs 进入接收状态等待数据的到来。 当接收方检测到有效的地址和 CRC 时,就将数据包存储在 RX FIFO 中,同时中断标志位置高,IRQ 变低, 产生中断,通知 MCU 去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最 后接收成功时,若 CE 变低,则 nRF24LE1 进入空闲模式 1。   因为本次涉及到一些产品,所以在此不做公开,敬请见谅!我只能展示我做的东西,以及上位机显 示的数据,因为公司有软件可以把接收的数据进行显示并处理的,基于保密,肯定不会拿出来使用,只 能采用上位机显示了。 轻松设计 从瑞萨电子开始 81 瑞萨电子低功耗 MCU 实战手册 这个是我的发送部分的器件和程序,接收部分不做过多讲解。(源代码:>> 点击下载) 演示视频 相关帖子:>> 远程门禁系统 3 轻松设计 从瑞萨电子开始 82 瑞萨电子低功耗 MCU 实战手册 3.11 自行车炫彩风火轮 作者:EEworld 论坛 xsunset 自行车装饰灯概述 随着生活水平的提高,人们对健康的追求也是逐步提高。目前自行车运动在城市、乡村都发展较多, 随处可见各类装备专业、骑行迅速的骑友们排队呼啸而过。而他们的自行车、山地车、公路车等,都装 扮有五颜六色的灯饰。车轮、车身上炫彩明亮的灯光,还有的在车轮上显示了各种生动逼真的图案,非 常拉风,非常吸引眼球。 图 1‑1 自行车装饰灯实物效果 自行车装饰灯基本原理 自行车彩灯效果的原理是:利用车轮旋转,在每转过一个角度时 LED 发出光,不同角度的不同发 光位置和发光色彩,可以形成车轮上的漂亮的 LED 图案。由于人眼睛的视觉暂留效果,车轮较快旋转时, 就好像整个车轮是一个显示屏一样, 图 1‑2 自行车的车轮装饰灯原理说明 轻松设计 从瑞萨电子开始 83 车轮装饰灯分类 经调研,自行车的车轮装饰灯有很多种,包括如下几种: 瑞萨电子低功耗 MCU 实战手册 (1)气门灯:纽扣电池通过震动开关驱动一个幻彩 LED。 (2)辐条灯:在 MCU 的 GPIO 直接控制单色或幻彩 LED,LED 数量不超过 10 个,LED 灯条长度小, 一般需要 2~3 个灯才能覆盖整个车轮半径。 (3)风火轮灯:用高性能 MCU 控制超过 20 个以上的 LED 灯条,覆盖整个车轮半径 / 直径的辐条, 有的具备专用的七彩或全彩 LED 驱动,可精细控制每个角度的发光亮灭,形成较大分辨率的精细逼真 的炫彩图案。 (4)还有各种形状、颜色、模式、图案、亮度、灯光效果的组合。。。。。。 图 1‑3 各种自行车炫彩灯的实物效果图 自行车风火轮系统设计原理 如前所述,风火轮的主要原理是在不同的角度,控制沿着车轮辐条半径或直径分布的 LED 的颜色、 亮度等数据,将一个圆周 360°分为 2n 等分,相当于角度间隔是 360/2n 度,半径上分布着 m 个像素。 根据前述分析的功能,对项目的系统设计提出了如下要求。 LED 及其驱动 为了实现全彩,需要有独立控制 RGB 三色的 LED,同时由于本项目要求的 LED 数量较多,而且 LED 一般是恒流驱动,并能够方便组成 LED 灯条(LED-Strip),因此要求能够具有级联或者菊花链结构, 即后一个 LED 连接前一个 LED,但是又能够独立控制。因此要求采用 LED 驱动芯片, 经过调研,选取 LPD6803 这一款专为 LED 灯光系统设计的驱动芯片,提供三路恒流驱动和灰度 调制输出,特别适合离散的多灰度全彩色灯光系统。 角度位置传感 为了稳定显示,避免显示的图像旋转,需要根据不同的车速(即不同的车轮转速),调节 LED 灯 条在两个等分角度的时间间隔,输出稳定不旋转的图像,需要一个能够获取当前车轮位置的传感器。要 求是能够根据传感器,感知车轮的角度位置。 一般采用三轴加速度传感器。但是考虑到成本和本项目采用的 MCU 资源,瑞萨单片机读取三轴加 速度传感器,属于小马拉大车。 轻松设计 从瑞萨电子开始 84 瑞萨电子低功耗 MCU 实战手册 借鉴目前常用的自行车里程计速码表使用的磁感应开关。在车轴支撑杆处固定一个磁铁,车轮辐条 对应位置固定一个磁感应开关(或者安装位置调换,两者等同),随着车轮旋转,磁感应开关经过磁铁 附近,感应到磁场后输出一个开关量信号。通过测量车轮旋转一周前后经过磁铁的时间,可以获得车轮 旋转一周的时间 T。将这个时间除以间隔数 2n,就可以得到每经过一个等分角度的时间 dT,也就是每 次刷新 LED 灯条显示的时间,有: dT = T/2n (1) 其系统原理图如下: 图 2‑1 风火轮的等分时间 / 角度间隔 经过调研,采用常用的霍尔开关 A3144E 磁感应元件,为方便原型开发,缩短开发周期,直接采购 了模块成品。成本也较低。 硬件结构 根据前面所述的系统设计原理和功能要求,设计硬件连接如下图: Pin10(P04/TI01)——霍尔磁传感开关 A3144E 的开关量输出,低电平代表磁铁接近。 Pin7、Pin8 连接 LED 灯条的第一个 LPD6803 的 DIN 和 DCLK 引脚。 图 3‑1 风火轮的硬件连接示意图 轻松设计 从瑞萨电子开始 85 // TODO 瑞萨电子低功耗 MCU 实战手册 图 3‑2 风火轮的原型开发实物图 LED 驱动芯片 LED6803 的连接方式 根据 LED 驱动芯片 LPD6803 的 Datasheet,采用级联连接方式,前一个的 DCLK 和 DATA 输 出为后一个的输入。 图 3‑3 LPD6803 的连接方式 磁开关的安装连接方式 磁开关 A3144E 的模块在有磁场时输出高电平,无磁场时输出低电平。连接到 P04/TI01 引脚,利 用 R7F0C80212 芯片的定时器阵列单元 TAU 的输入脉冲间隔测量功能, 轻松设计 从瑞萨电子开始 86 瑞萨电子低功耗 MCU 实战手册 图 3‑4 霍尔模块磁传感开关 - 定时器输入脉冲间隔测量示意图 软件开发设计 软件流程图 根据功能需求,编制软件流程如下: 图 4‑1 自行车风火轮软件流程图 上述流程中,初始化部分由 main 函数完成。之后 main 函数进入 idle。 由 Timer01 中断记录车轮旋转一周的时间 T,并将该时间 T/2n 得到每一个等分间隔的时间,该时 间为 Timer00 的中断。 在每次 Timer00 中断将 LED 灯条按照存储的图像数据逐个控制 LED 的亮度和颜色。 图 4‑2 软件代码执行时间片示意图 轻松设计 从瑞萨电子开始 87 代码 Main 函数 /* void main(void) { UINT8 k; unsigned char mode; mode=0; init_io(); init_timer(); /* Enable Interrupt */ EI(); /* Start Timer, i.e. PWM output */ start_timer(); while(1){ if (P13.7 == 0) { if (mode) { mode = 0; stop_timer(); } } else { if (mode == 0) { mode = 1; start_timer(); } } } } // the end Timer01 中断函数 __interrupt void interrupt_inttm01(){ unsigned long div, count ; int h; if(isFirst){ isFirst = 0;return;} count = (unsigned)TDR01L + (unsigned)TDR01H * 256 ; 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 88 /*TODO: OVF should be counted */ //count = 0x10000 * 瑞萨电子低功耗 MCU 实战手册 div = count / 72; h = div / 256; TDR00H = h; TDR00L = div - h * 256; // the end } Timer00 中断函数 __interrupt void interrupt_inttm00(){ char temp; UINT8 i, r=0,g=0,b=0; preamble(); if( index >= LEDCOUNT*2-2){ index = 0; } for(i=0;i> 7; g = (temp & 0x2) << 6 >> 7; b = (temp & 0x1) << 7 >> 7; light_single_led(r,g,b); } postfix(); index ++; }// the end LED 灯带控制函数 在每个 dT=T/2n 的时间间隔内,输出控制 LED 灯条的颜色亮度数据。时序波形按照 LPD6803 的 要求生成。其中 DLCK 为 P00,DIN 为 P01,采用 GPIO 生成时序波形图。 图 4‑3 LPD6803 时序波形 const static UINT8 figure[][LEDCOUNT+1] = { { 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , 轻松设计 从瑞萨电子开始 89 { 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x02 , 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 } , { 0x01 , 0x02 , 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 } , { 0x00 , 0x01 , 0x02 , 0x04 , 0x01 , 0x02 , 0x04 , 0x00 } , { 0x01 , 0x02 , 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 } , { 0x02 , 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 } , { 0x04 , 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x01 , 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x02 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , { 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } }; //long count; UINT8 status ; UINT8 isFirst; UINT8 index ; void clk(void){ P0 &= ~CLK_PIN_BIT; P0 |= CLK_PIN_BIT; } void write_bit(UINT8 data){ //P0 |= (0x1&data) << DAT_PIN ; //clk(); P0 = ( (0x1&data) << DAT_PIN ) & ~CLK_PIN_BIT ; P0 |= CLK_PIN_BIT; //P0 = (data<<4) ; //P0 = 0x08 |(data<<4) ; } void write_bits(UINT8 data, UINT8 bitcount){ /* bitcount should be less than 8*/ UINT8 tmp, i=0, k=(0x01<<(bitcount-1)); for(i=1;i<=bitcount;i++){ tmp = (data & k)>>(bitcount-i); write_bit(tmp); k=k>>1; } } void preamble(void){ UINT8 i; for(i=0;i<32;i++){ write_bit(0); } } void postfix(void){ int i; for(i=0;i> 自行车炫彩风火轮开发应用笔记——(5)总结与展望 轻松设计 从瑞萨电子开始 94 3.12 EEworld 论坛网友其他精彩 DIY 音乐节奏灯(作者:410023626) 开关柜红外测温系统(作者:zjw5000) 锂电池供电的按摩器(作者:hxybu) ds18b20 温度采集(作者:zjw5000) tm1629 驱动数码管的简易电压表(作者:zjw5000) 基于 R7F0C80X 单片机升级恒温焊台(作者:zjw5000) 无线串口(作者:IC 爬虫) 多功能测量表(作者:jofficer) 无线智能门锁(作者:cat3902982) 叉车 OPS( 精简 ) 控制器设计(作者:dingzy_2002) 温控器(作者:flyword) 恒定光照控制系统模拟设计(作者:johnrey) R7F0C802 制作的门窗报警器(作者:kejoy) 智能灯光控制器(作者:kejoy) 基于蓝牙模块的温度采集和开关控制器(作者:reayfei) 电动自行车防盗报警器的设计(作者:Study_Stellaris) 超声波测距仪(作者:wenyangzeng) R7F0C80212_PC 遥控 4 位数码管显示(作者 :youyou_123) 蓝牙婴儿早教机 ( 作者:啸风 916636) 红外通讯测试模块(作者:ksilence) RGB 彩色触摸小手电和定时浇花控制器(作者:lcdi) 刷卡水表(作者 :908508455a) 温湿度光传感电波钟 ( 作者:andery88) 防水感应开关(作者:qi777ji) 手机无线充电板(作者:路人 d 梦想) 小风扇(作者:人民币的幻想) 使用瑞萨单片机实现 LED 显示屏模组控制(作者:cxzs1234) 激光防盗告警装置(作者:mars4zhu) 智能感应调光 LED(作者:mars4zhu) 相关帖子:>>2014 年瑞萨 DIY 心得设计汇总 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 95 瑞萨电子低功耗 MCU 实战手册 第二部分 RL78/G14 开发实战 第四章 RL78/G14 简介和开发套件介绍 4.1 RL78/G14 简介 RL78/G14 开发套件搭载的芯片是 R5F104LEA,它是 G14 的一种 64PIN 的芯片。 RL78/G14 概要: 通过 RL78 CPU 內核,RL78/G14 达到降低系统整体功耗,无需额外的外部元件也可支持多功能 的消费类电子和工业应用。 存储器阵容 : 16 至 256 KB 闪存, 2.5 K 至 24 KB RAM 封装阵容 : 30 至 100 引脚 配合 R8C 的外围设备,使现有的软件资源可以重复使用 1)内置三相 PWM 输出定时器和两个相编码器计时器:电机控制 2)内置数据传送控制器:存储器到内存的数据传输,不会增加 CPU 的负荷。[1] 3)内置事件链接控制器:在低功耗工作模式内配合外设功能 内置 DAC 和比较器 [2]: 进一步增强模拟功能 注: 1. 可从闪存传输的。 2. 产品備有 96 KB 或内置更多闪存。 产品线: 轻松设计 从瑞萨电子开始 96 封装信息: 瑞萨电子低功耗 MCU 实战手册 数据手册 下载:>> 中文版 >> 英文版 轻松设计 从瑞萨电子开始 97 4.2 RL78/G14 开发套件介绍 RL78/G14 评估板图赏 瑞萨电子低功耗 MCU 实战手册 更多内容参考:>> 下载评估板用户手册 轻松设计 从瑞萨电子开始 98 瑞萨电子低功耗 MCU 实战手册 第五章 搭建 RL78/G14 开发环境和例程 本文主要讲的是瑞萨电子 e2studio 开发环境的安装,如果想使用 CubeSuite+ 作为开发环境,请 直接阅读本书第一部分第二章。 5.1 RL78/G14 开发环境的安装 作者:EEworld 论坛网友 gaoyang9992006 如图,建议把所带光盘使用 UltraISO 软碟通将光盘制作成 ISO 文件,然后加载到虚拟光驱,这样 运行速度更快 . 安装更省时。 然后运行根目录的 Setup.exe 之后如上图,肯定选择 I accept 了 轻松设计 从瑞萨电子开始 99 瑞萨电子低功耗 MCU 实战手册 默认全选,Next 之后就是 E^2 Studio 了,让安装继续 轻松设计 从瑞萨电子开始 100 瑞萨电子低功耗 MCU 实战手册 遇到安装驱动都是选择始终安装此驱动程序软 遇到上图都是选则默认配置 , 然后 Next 轻松设计 从瑞萨电子开始 101 瑞萨电子低功耗 MCU 实战手册 这到了关键的环节了 , 根据文中描述该注册是免费的 , 轻松的 , 所以你不用担心了,  一般碰到 GUN 你就可以大胆地注册了,这都是免费的。 按照英语提示单击 Register now ( 立即注册 )。 然后弹出网页 : 我的网没法打开上面的网页,我在百度搜索了在线代理,选了第一个就行了,然后输入弹出的地址。 即可访问,结果如上图 , 然后按照提示属于关键信息,按照上图填写继续了。该打钩的打钩。 轻松设计 从瑞萨电子开始 102 瑞萨电子低功耗 MCU 实战手册   填写完后单击 Submit 弹出上面的内容,之后可以单击此处继续 Click Here , Continue   完成注册后你会收到一个邮件,然后进入邮箱会看到那个邮件里的激活码,输入你的邮箱和激活码, 就会完成上面的内容。 之后继续安装如下图。 轻松设计 从瑞萨电子开始 103 一切默认全选就好了。 瑞萨电子低功耗 MCU 实战手册 安装继续进行,可以看到信息提示的是包括安装开发需要的资料 pdf。 轻松设计 从瑞萨电子开始 104 瑞萨电子低功耗 MCU 实战手册 之后就等待自动完成了。至此,就可以开启你的体验之旅了。 相关帖子:>>RL78/G14 开发环境的安装 轻松设计 从瑞萨电子开始 105 5.2 瑞萨电子 e2studio 的使用 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 网友 shower.xu 1、光盘的安装。 这个没什么难度,按部就班一路 next 下来就好,中间有一步 KPIT GNU 需要注册,并很快会给你 一个激活码,这个码在你机子上一直有效,下次重装可能会用到,所以保存好邮件。 另外,最好全部默认路径安装,也就是 C 盘,e2studio 调用编译插件是按照默认路径的,否则可 能会编译不通过或者各种路径需要设置有木有。 主要是这四个程序,第一个是烧录的,第二个是说明文档库,第三个是 demo 的上位机,第四个是 IDE。 2、导入并编译项目 外部已存在的项目需要导入进来,和 IAR 类似,默认安装的例程项目在 C:\Workspace\RPB\RL78/ G14\Sample Projects\Debugging Project 路径下,是一个通过调节电位器 -ad 采样 - 改变 led 闪烁 频率的例子,所以需要导入进来。 轻松设计 从瑞萨电子开始 106 瑞萨电子低功耗 MCU 实战手册 选择 import project-->Existing Projects into workspace。 选择例程路径,下面勾选前面的 checkbox,选择复制到当前工作区(工作区在第一次启动时会要 你选择,如果和当前路径一样则不可选)。 轻松设计 从瑞萨电子开始 107 瑞萨电子低功耗 MCU 实战手册 就导入进来了。 3、在线调试 这个差异性稍微大点,首先把板子的中部四个跳帽调到 COD 一边,串口切换到调试模式,并插上 USB a. RUN-->debug configrue 设置如下图: b、选择 project-->build configrue-->set active--->HardwareDebug 或者点小锤子旁边箭头选择   c、设置断点   断点只能在 C++ 状态设置,切换 debug 状态和编辑状态请选择下面图标最右边的的箭头选择 c++ 轻松设计 从瑞萨电子开始 108 模式即为编辑模式。反之毅然。 瑞萨电子低功耗 MCU 实战手册 调试模式有专门的界面,你第一次调试时会问你是否使用推荐的调试界面布局,随你喜欢可选。   d、进入调试界面会首先跳到复位向量地址,之后可以按 F8 运行到你的断点处 怕语言讲不清楚,录了一段 gif 大家看看。 轻松设计 从瑞萨电子开始 109 调试动画 瑞萨电子低功耗 MCU 实战手册 相关帖子:>>Renesas e2studio 的使用 轻松设计 从瑞萨电子开始 110 5.3 瑞萨电子自带演示 DEMO 试玩 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 论坛网友 gaoyang9992006 从开始菜单找到 Renesas Electronics Tools---》YRPBRL78/G14-Demo 运行后如图: 看图左上角和右下角,点击 disconnec, 还有那个右下角的箭头。之后如下图 轻松设计 从瑞萨电子开始 111 瑞萨电子低功耗 MCU 实战手册   再单击 Connect 就建立了串口通信连接,话说那根 USB 线太给力了,那么长。 之后左上角变成了 Disconnect Stop 右边的数据窗口不停的滚出新数据,你可以看到,数据很有规律。 另外下面的绘图窗口开始绘制外部电压信号图,和 CPU 内部温度图,启动过程都会有个斜线的。 之后你会发现 AD 通道的线很直,通过套件里的塑料圆柱钥匙可以调整那个可变电阻的值,你会发 现绘制的 AD 电压曲线发生了变化。 择 Real Time Clock 选项卡,则可以更新芯片时钟程序的时钟信息。 单击 Sync 就会把你 PC 机的时钟信息读取出来写到芯片里。 Memory 选项卡是可以往芯片内写数据,还可以读出来。 相关帖子:>>RL78/G14 开发套件初体验 轻松设计 从瑞萨电子开始 112 开发环境搭建 CubeSuite+ 环境下的工程创建及调试 第一步 瑞萨电子低功耗 MCU 实战手册 第二步 轻松设计 从瑞萨电子开始 113 瑞萨电子低功耗 MCU 实战手册 参数设置注释:“Option bytevalues for OCD”( 片上调试选项字节)设置,见“RL78-G14 用 户手册 硬件篇 .PDF”1125 页。 轻松设计 从瑞萨电子开始 114 瑞萨电子低功耗 MCU 实战手册 “User Optionbyte value”(用户选项字节)设置,见“RL78-G14 用户手册 硬件篇 .PDF”1119 页。 第三步 轻松设计 从瑞萨电子开始 115 瑞萨电子低功耗 MCU 实战手册 出现下面错误时,按第二步提到的修改就能解决。 说明: 1、工程不能建在中文目录下。 轻松设计 从瑞萨电子开始 116 瑞萨电子低功耗 MCU 实战手册 2、在 CubeSuite+ 环境下,程序不支持中文注释。即使注释了后,重新打开会出现乱码,同时会 影响编译,出现误报。 仿真需注意: 需将 CN6、CN7、CN8、CN11 跳线改为 1—2 连接方式 相关帖子:>>CubeSuite+ 环境下的工程创建及调试 相关帖子:>> 瑞萨电子使用教程(视频)资料(G13) 相关资料:>>CubeSuite+ 初步介绍和安装 轻松设计 从瑞萨电子开始 117 瑞萨电子低功耗 MCU 实战手册 5.4 CubeSuite+ 下测试 RL78/G14 的 blinky 程序 作者:EEworld 论坛网友蓝雨夜 环境说明:CubeSuite+ 硬件:RPB RL78/G14 实验目的:使 P77 连接的 LED2 闪烁,熟悉 CubeSuite+ 环境。 一、运行 CubeSuite+ 环境 二、选择现成的 DEMO project 三、编辑代码 修改 r_main.c 文件 轻松设计 从瑞萨电子开始 118 增加延时函数 四、编译 五、下载 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 119 六、运行 demo 瑞萨电子低功耗 MCU 实战手册 注意:本实验中未修改成 R5F104LE,修改后,编译会出些错误! 可能是不同型号之间,资源的不同,所以初始化会有警告,等慢慢熟悉瑞萨单片机后再做进一步修改! 演示视频 轻松设计 从瑞萨电子开始 120 瑞萨电子低功耗 MCU 实战手册 相关帖子:>>CubeSuite+ 下测试 RL78/G14 的 blinky 程序 轻松设计 从瑞萨电子开始 121 瑞萨电子低功耗 MCU 实战手册 5.5 点亮 LED 1. 这次安装很不容易,安装 CubeSuite+ 好了以后老是连不上 RL78 板。后来发现是中间的四个 跳线的问题,要跳到 1~2。 2. 要注意 CubeSuite+ 的 tool->plug-in settings 是否配置了代码生成器等。   3. 要注意生成时钟,IO 口,定时器的代码,用代码生成器,注意每次都要用代码生成器生成代码 才改变了。 轻松设计 从瑞萨电子开始 122 瑞萨电子低功耗 MCU 实战手册   4. 要在定时器的用户文件的函数里加入 P77 的改变 ,P77 是 LED2 的 IO 口 >> 源代码下载 相关帖子:>> 熟悉开发环境 轻松设计 从瑞萨电子开始 123 第六章 EEworld 论坛网友 DIY 展示 瑞萨电子低功耗 MCU 实战手册 6.1 宿舍 ( 楼宇 \ 家庭 ) 智能用电监控、保护系统 作者:EEworld 论坛网友 ltbytyn 方案起源:想起以前一个学生做的盗电装置,是针对有些校园有限电保护,使用大负荷电器时,电 流连续 N 秒超限会断电,这个学生做的很巧妙,用大功耗电器时只需连续工作时间小于 N 秒即可,类 似 PWM。于是,ltbytyn 要做一个用电监控及保护系统。 I 方案可行性分析 1、AD 通道是否够用?采样、计算速度? RL78/G14 开发板选用芯片 R5F104LE(64 脚 )。共 12 路 AD 通道(10 位)。考虑到设备只做粗 略保护,故 12 路 10 位 AD 完全够用。无需外扩 AD,大大降低了成本。采样、计算速度一方面和芯片、 晶振有关,另一方面和使用采样算法有关,由于只计算有效值,只需均方根法即可。改方法简单,大大 减少了计算时间。 2、IO 是否够用? 计 划 用 到 6 个 按 键 +12864 液 晶。64 脚 的 R5F104LE 有 充 足 的 的 IO 供 设 备 使 用。 其 中 P70~P77 有按键中断功能(最多 8 个按键中断),做 6 个按键在合适不过。12864 液晶数据线可用到 P10~P17,12864 液晶控制线有不少的空余 IO 可供使用。 3、系统参数保存? 在 datasheet 上看到“闪存”篇简介【RL78/G14 内置闪存, 安装在电路板上时可对其执行程序 的写入、擦除和覆盖。闪存含有“代码闪存”,在其中可以执行程序,以及用于存储数据的“数据闪存”。】 看到了闪存可用于存储数据,不要被这几句话迷惑住,往下看发现无论板上编程还是板外编程都是要在 RL78/G14 安装系统前完成。这意味着程序在执行过程中将系统参数写入闪存式不能实现的。考虑到常 用外部 EEPROM 大多 IIC 接口,价钱便宜,所以需外扩 EEPROM。 以上 3 部分在系统设计中比较重要。满足上述要求,从而论证了方案的可执行性。至于定时器,这 是每款单片机必不可少的部分,而瑞萨的单片机定时器较其他系列单片机异常丰富。 详细资料可参考:>>RL78/G14 用户手册 硬件篇 >> 点击查看更多 4、什么样的单片机才能支撑起“智能用电监控、保护系统”? 想了一下,至少 8 位单片机是不靠谱的。原因总结一下几点: 8 位单片机的速度。8 位单片机多数无硬件乘法器,即便有硬件乘法器(8*8),单周期处理数量 的长度最大位 8 位,执行一个 16 位的加法都需要多个指令周期,更不要提“智能用电监控、保护系统” 中最简单运算都是 16 位加法、有不少的 16 位乘法、少量 32 位乘法、及 32 位开方运算。 虽没有详细 计算,但 8 位单片机速度很大程度会影响到系统的实时性能。 轻松设计 从瑞萨电子开始 124 瑞萨电子低功耗 MCU 实战手册 8 位的单片机只有为数不多的几种含有 AD 模块。其采样精度只有 8 位,且无 AD 基准电源。所以 做玩具还是不错的,做“智能用电监控、保护系统”是不够的。举个例子,200v 的电压 8 位分辨率为 200/255 约 =0.78v,10 位分辨率为 200/1024 约 =0.19v, 差距还是很明显。外扩 AD 成本都远大于 1 片 16 位单片机价格,同时又陷入了处理速度的限制的问题 。 通过上述 2 方面能看到 8 位单片机是支撑不起“智能用电监控、保护系统” 当然用 16 位单片机和 8 位单片机相比有点不公平。那么用 16 位单片机来 PK 吧。 一下能想到的便是 430,430 属于低功耗单片机,以牺牲晶振速度来实现低功耗。这种单片机的执 行速度虽比 8 位单片机强,但也受到了极大限制,通常很难实现更高的频率。这类单片机多用于不连续 工作的场合,明显不适用实时计算场合。另一个就是 430 的成本也不便宜。 16 位的 2407(TI dsp)当然可以支撑起“智能用电监控、保护系统”,但他的价格不菲,且属于 TI 的淘汰产品,供货不稳定。 16 位里面的 196 单片机市面上已经很难找了。也就不说了。 近几年 32 为 ARM 单片机相当流行。用它也是可以支撑起“智能用电监控、保护系统”。还有 TI 的 32 位 C2000 系列也是可以支撑起“智能用电监控、保护系统”的。但 C2000 的价格也不菲。 瑞萨电子单片机有一优点是众多其他厂家单片机不及的,那就是抗干扰的性能。这一点得到了业界 广泛认可。>> 点击查看更多 II 方案框架和原理图 主要是面向家庭 ( 宿舍 ) 的电源精细控制,用电负荷调整,当总用电功耗超过设定值时,可根据优 先级调整用电情况 ( 切除优先级低的用电设备供电)。方案示意图中设备为 8 个,实际方案为 6 个。 >> 点击查看更多 方案示意图 轻松设计 从瑞萨电子开始 125 瑞萨电子低功耗 MCU 实战手册 方案原理图 III 设计详解 智能用电监控、保护系统除了实时监控系统电压、系统电流、6 路支路电流外,还有 3 种操作功能, 整个系统涉及到 4 大模块,定时器、AD 采样、按键中断、液晶显示。 定时器——TAU0 下的间隔定时器(interval timer)作为支路工作时间基准和系统工作时间基准。 TMRJ0 下的定时模式(Timer mode)用于启动 AD 采样。 实验一:使用定时器中断,每秒让 P77 发生一次电平翻转(即开发板上的 D2 灯发生状态变化)。 下面讲解如何使用 Code Generator 生成定时器代码,并实现上述功能。 第一步:配置时钟。 轻松设计 从瑞萨电子开始 126 第二步:设置 P77 为输出口。 瑞萨电子低功耗 MCU 实战手册 第三步:定时器 RJ0 工作模式设置 第四步:定时器 RJ0 工作设置(包括时钟选择、定时间隔、使能中断、中断优先级) 轻松设计 从瑞萨电子开始 127 第五步:生成代码。 生成代码如下图所示: 瑞萨电子低功耗 MCU 实战手册 第六步:void hdwinit(void) 【系统初始化程序,见“r_systeminit.c”文件】声明 轻松设计 从瑞萨电子开始 128 瑞萨电子低功耗 MCU 实战手册 第七步:将“hdwinit() ”写入用户初始化程序进行初始化。【见“r_main.c”】 第八步:添加定时器中断用户程序。实现 P77 一秒状态发生一次翻转。【见“r_cg_timer_user.c”】 第九步:在主程序中启动定时器,并添加喂狗程序。【见“r_main.c”】 轻松设计 从瑞萨电子开始 129 第十步:编译、仿真。 瑞萨电子低功耗 MCU 实战手册 下图是用逻辑分析仪检测 P77 口的状态变化。经检测,程序实现功能与我们要求一致。定时器还 是挺准的。相关代码:我要下载 相关帖子:>> 智能用电监控、保护系统创意进度帖 + 定时器篇 轻松设计 从瑞萨电子开始 130 瑞萨电子低功耗 MCU 实战手册 瑞萨电子的定时器具有自身特色。由 TAU0、TMRJ0、TMRD0、TMRD1、TMRG0 组成,这些 定时器除了一般的定时功能外,还和外部部分接口关联,扩展了应用。如 PWM、计数器等。 前面着重讲到 TMRJ0 在采样中的应用,下面讲述 TAU0 中的间隔计算器的应用,主要用于“智能 用电监控、保护系统”中液晶画面调度、刷新,以及系统事件调度。 例程中使用中间隔定时器,实现 IO 状态每秒翻转一次。 开发板上使用 TAU0 间隔定时器,P77 间隔 1 秒改变一次 LED 状态。该间隔定时器将用于“智能 用电监控、保护系统”中液晶画面调度、刷新,以及系统事件调度。 相关帖子:>> 智能用电监控、保护系统创意进度帖 + 间隔定时器 轻松设计 从瑞萨电子开始 131 瑞萨电子低功耗 MCU 实战手册 D 采样——AD 采样包括系统电压、系统电流、6 路支路电流共 8 路 AD 采样。 下面主要讲述设计采样的 Code Generator 配置。 在 A/D Converter 中根据自己的要求进行配置。如采样数据精度、AD 参考电源选择、使用到的 AD 采样口、中断、中断优先级等。   生成代码后,还有 3 个工作要做: 1、需在生成代码中调用 AD 启动函数。 轻松设计 从瑞萨电子开始 132 2、在 AD 中断函数中添加 AD 采样结果读取程序。 瑞萨电子低功耗 MCU 实战手册 3、根据需要添加 AD 采样结果处理。 至此采样程序才算完成。 例程采用 one-shot select 方式,轮询采样 ANI0~ANI2 三路通道。>> 例程下载 AD 模块相关番外篇 >> 采样算法篇 相关帖子:>> 智能用电监控、保护系统创意进度帖 + 采样篇 按键中断——用于解析当前按键操作功能。 以往用其他系列 MCU 做按键处理时除了不停扫描按键外,还要考虑按键消抖(有的就地延时消抖, 有的用定时器消抖,但后者效率明显高于前者,而前者程序叫后者简单一点)。程序虽不复杂,但却很 恶心人。用过瑞萨的按键中断后只有一个感觉,非常棒。按键按下去后,自动进入按键中断,想在执行 下一次按键中断,必须先释放按键后再次按键才能启动新按键动作。程序上面很简单,处理按键从来没 有这么潇洒过。 R5F104LE 有 8 个按键中断口,发布在 P70~P77。我的智能用电监控、保护系统用到了 6 个按 键中断(位于 P70~P75),其他 2 个口未使能按键中断(即 P76~P77 只是普通 IO 口)。使用按键 中断时需要注意的是,按键中断口不能悬空。 下面将讲解如何使用 Code Generator 生成按键中断代码,当然要实现按键功能需要手动添加代码。 >> 相关代码 第一步:配置时钟。 第二步:按键中断设置。包括按键中断口选择及中断优先级。 轻松设计 从瑞萨电子开始 133 第三步:生成代码。    生成代码如下图所示: 瑞萨电子低功耗 MCU 实战手册 第四步:void hdwinit(void) 【系统初始化程序,见“r_systeminit.c”文件】声明 第五步:将“hdwinit() ”写入用户初始化程序进行初始化。【见“r_main.c”】 轻松设计 从瑞萨电子开始 134 瑞萨电子低功耗 MCU 实战手册   第六步:添加按键中断用户程序。实现按键次数统计。【见“r_cg_intc_user.c”】 第七步:在主程序中启动按键中断及看门狗,并添加喂狗程序。【见“r_main.c”】   第八步:修改为调试方式为 E1 调试方式。并编译程序。    轻松设计 从瑞萨电子开始 135 瑞萨电子低功耗 MCU 实战手册 第九步:仿真。连接开发板,进入仿真方式,按下 P70 时,程序进入按键中断处理相应程序。 相关帖子:>> 智能用电监控、保护系统创意进度帖 + 按键中断篇 液晶显示—————— 液晶型号:12864 液晶控制器:ST7920 液晶接口分配: RS       <——————> P141 RW    <——————> P00 OE       <——————>  P01 RST    <——————>  P130 D0~D7 <——————>  P1 注意:板子上面 P14 和 P16 是连在一块的。在做数据线时需割开 SB3。 轻松设计 从瑞萨电子开始 136 演示视频: 瑞萨电子低功耗 MCU 实战手册 演示视频中的相关源码: RL78_12864_U.rar 相关帖子:>> 智能用电监控、保护系统创意进度帖 + 显示篇 下面介绍 3 种操作功能,支路手动操作、支路自动操作、系统负载自动调整(过载保护)。 支路手动控制——手动操作支路通、断电。不受自动控制和智能保护操作影响。 6 个控制支路选用 250V/10A 继电器,故支路负载不能大于 2KW。 实验带了 2 路负载。第一支路带电饭锅,第二支路带了一个台灯和一个电吹风。   轻松设计 从瑞萨电子开始 137 支路 1 负载为电饭锅 瑞萨电子低功耗 MCU 实战手册 支路 4 负载为台灯和电吹风 轻松设计 从瑞萨电子开始 138 演示视频: 瑞萨电子低功耗 MCU 实战手册 支路自动控制——根据设定好的延时自动执行相应动作。工作流程如下: 轻松设计 从瑞萨电子开始 139 自动控制操作逻辑框图: 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 140 瑞萨电子低功耗 MCU 实战手册 相关视频: 相关帖子:>> 自动控制操作演示视频(未带负载) 轻松设计 从瑞萨电子开始 141 下面进行负荷自动调整操作演示视频(带负载,扩展功能)。 瑞萨电子低功耗 MCU 实战手册 演示中共 4 路负载,4 路参数设置如下。 支路 1:自动模式 优先级低 电风扇做负载 ( 电风扇只开了个电源指示灯,实测结果很小,可忽略 ) 支路 3:手动模式(无优先级划分)台灯做负载。(手动模式下,开关状态不受手动模式外因素影响) 支路 5:自动模式 优先级低 电吹风做负载 ( 中档,约 1.8A/229.8V, 约 400W) 支路 6:自动模式 优先级高 电饭锅 ( 约 3.2A/229.8V, 约 736W) 当开启过载保护时,将自动进入线路负荷调整。当过载时,将根据优先级,关闭相应支路负载。当 系统负荷低于过载门限时会根据支路负荷情况将合适支路从分闸状态恢复到合闸状态。在此过程中如何 避免震荡分合是一个有趣额的问题,大家可以思考一下。 实验 1- 当过载保护设置为 700W 时,虽然支路 6 优先级高于支路 1、5,但支路 6 的功耗大于过 载门限,故将切断支路 6,支路 1、3、5 保持合闸。 实验 2- 当过载保护设置为 800W 时,由于支路 6 的优先级高于支路 1、5,且支路 6 的功耗小于 过载门限,故将先吸合支路 6。此时支路 5 如果在投将会过载,故将切断支路 5,支路 1、3、6 保持合闸。 演示视频 由于液晶屏的显示分向和负载分向刚好相反,看到液晶看不到负载,故视频录制效果欠佳。但通过 液晶画面还是能够看到实际支路运行情况。 智能保护控制——智能用电负荷调整,结合自动模式组合运行。超负荷工作时 ,优先切除优先级低 的自动控制支路,屏蔽自动控制模式下的 Ion 计数(即暂停支路自动合闸),不影响 Iof 计数(合闸的 按自身情况继续执行)。工作负荷恢复正常时,恢复自动模式正常功能。 轻松设计 从瑞萨电子开始 142 过载门限(或者负荷门限) xxxxx(单位:VA) 瑞萨电子低功耗 MCU 实战手册 过载延时 xxxx(单位:秒),连续过载超过过载延时时,切除自动模式下、已合闸的(优先级低 的先切除)支路。由过载到恢复正常时,连续正常时间超过过载延时时,恢复所有自动模式下的支路工作。 智能用电监控、保护系统的核心在于实时计算系统电压、系统电流、支路电流,这些数据作为支持 整个系统正常运行的依据。 交流电的计算较为复杂。严格的定时采样 + 均分根算法两部分合作完成。 采样:智能用电监控、保护系统中,所有的采样通道都是使用 32 点 / 周波采样(采样间隔 0.02/32 秒)。由于 R5F104LE 的 AD 采样均非同步采样,意味着智能用电监控、保护要实现实时电量计算必 须在一个周波需要完成 8(通道)*32 点采样。因此系统采样间隔为 0.02/(8*32) 秒。 计算:各个 AD 通道 32 点采样完成后,马上需要使用算法处理采样数据,计算有效值。交流信号 的计算过程:周波数据采样——( 周波完成采样 )——> 执行均方根算法,计算有效值——( 完成计算 )—— > 下一周波采样 此时就会发现个问题:上一周波刚采样完成,缓冲里面的数据即将面临旧数据计算又要面临新一轮 采样数据更新缓冲中的旧数据。如果旧数据未计算完而被新采用数据破坏,会造成错误的计算结果。当 然我们可以等旧数据计算完成后在开始新采样(如上图),但是造成的结果是计算的不连续性,无法实 现实时数据监测。 解决方法:在采样时会建立深度采样数据缓冲区。比如采用双缓冲(前提,数据处理时间小于 1 个 周波时间,当数据处理时间大于 1 个周波时,可使用多缓冲区),缓冲区 1 接收上一周波数据,缓冲区 2 接收本周期数据。 缓冲区 1 接收数据——( 缓冲区 1 接收完成 )——> 缓冲区 2 接收数据,同时处理缓冲区 1 数据—— ( 缓冲区 2 接收完成 )——> 缓冲区 1 接收数据,缓冲区 2 处理数据 轻松设计 从瑞萨电子开始 143 瑞萨电子低功耗 MCU 实战手册 数据处理中,每个周波可以得到一个有效值计算结果。但由于电力信号的瞬间波动以及计算的偏差, 单个周期的有效值计算结果作为故障判断依据就显得数据变化范围极大。可通过多周波计算取平均值作 为判断依据,这样可以消除瞬间干扰引起的信号波动,使得信号变化比较平缓。 瑞萨电子的 R5F104LEA(RL78/G14) 属于 16 位单片机,支持乘法、除法指令,运算能力比较强劲。本系统 中选用计算偏少的均方根算法,计算主要为乘加。经实测可在 1 个周波(20ms)内完成 8 路 32 点均方根计算。 //下为系统数据结构定义 /********************************************************* ************************************************************** * File Name : r_cg_userdefine.h * Version : CodeGenerator for RL78/G14 V2.00.00.07 [22 Feb 2013] * Device(s) : R5F104LE * Tool-Chain : CA78K0R * Description : This file includes user definition. * Creation Date: 2013-10-18 ************************************************************************************* **********************************/ #ifndef _USER_DEF_H #define _USER_DEF_H #define N 32 #define channel 8 #define Buffer_Num 3 #define Average_number 结 果取平均值做为系统判断依据 // 周波采样点数 // 采样通道数 // 缓冲区深度 20 // 采样结果去平均值次数,即连续 20 次采样 struct dq{ uint8_t uint8_t uint8_t uint8_t uint8_t CY_Buffer; // 当前周波采样点数 CY_channel; // 当前采样通道 CY_position; // 当前采样数据存储缓冲区位置 Ready_NewData_NO; //Ready_NewData_NO[channel] Calc_NewData_MARK; // 有新数据需处理标志 轻松设计 从瑞萨电子开始 144 瑞萨电子低功耗 MCU 实战手册 uint8_t Calc_NewData_NO; //Sampe_Ready uint16_t Resuit[Buffer_Num][N][channel]; //AD Result Current Current Current ... Voltage Current uint32_t Sum[Buffer_Num][channel]; float RMS[channel]; // 有效值累记和 // 平均后的有效值 }; struct run{ uint32_t Frequency[channel]; uint32_t Sum[channel]; uint16_t average[channel]; //I0 I1 I2 I3 ... U In-2 uint16_t I_Protect[channel-2]; //I0 I1 I2 I3 ... U In-2 uint16_t I_Pri_Hight; // 支路优先级 uint16_t ITheory; //UTheory }; struct protect{ uint8_t NewData_Mark; //0 No data;1 New data uint32_t Protection_Data[3]; //W Umax Umin }; struct sys{ uint8_t type; // 过载保护标志 uint8_t uint32_t BF_type; MK; // 过载门槛值 uint32_t BF_MK; uint16_t DELY; uint16_t uint16_t uint16_t BF_DELY; GZ_SECOND; GZ_MS; // 故障秒计时 // 故障毫秒计时 uint8_t GZ; uint16_t HF_SECOND; uint16_t HF_MS; uint8_t HF; }; struct branch{ uint8_t Num; uint8_t MS; // 支路开关工作模式 0 HEAD ; 1 AUTO uint8_t BF_MS; uint8_t STATE; // 支路开关状态 0 OFF ; 1 ON uint8_t BF_STATE; uint8_t Pri; // 支路开关优先级标志 uint8_t BF_Pri; uint16_t uint16_t uint16_t Time1[6]; BF_Time1[6]; Time1_MS[6]; //Ion //Ion 分计时 //Ion 毫秒计时 uint8_t uint16_t uint8_t Time2[6]; //Ioff BF_Time2[6]; //Ioff 分计时 Time2_MS[6]; //Ioff 毫秒计时 }; /************************************************************************************ *********************************** 轻松设计 从瑞萨电子开始 145 瑞萨电子低功耗 MCU 实战手册 User definitions ************************************************************************************* **********************************/ /* Start user code for function. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #endif 智能用电监控、保护系统”设计精度: 1、系统电压部分,硬件选用 SPT204A 互感器(2mA:2mA)。 2、系统电流,由于手头只有 SCT2012 一种互感器,故硬件使用 SCT2012(10A:5mA)。事实此 处可选用 50A:50mA 互感器以增大测量范围。 3、支路电流,支路电流互感器使用 SCT2012(10A:5mA),支路通断继电器选用 Q3F-1Z( 触 点输出能力 250VAC/10A),为保证设备长时间工作。故任一支路负载一般电流不大于 8A。PCB 板上 系统和支路部分铜线均镀焊锡,以增加带载能力,防止大负载时烧坏电路板。强电部分和弱点部分分开 已增强抗干扰性能。(可见下图,实物背面) 4、Ion (自动模式下,关闭到吸合的延时,xxxx,单位:分)0~9999 分钟 5、Ioff ( 自动模式下,吸合到关闭的延时,XXXX,单位:分 )  0~9999 分钟 系统电压、系统电流、支路电流均使用标准功率源校准,电压范围 0~270VAC,电流范围 0~10A 均可以达到小数点后一位精度。 通过调整互感器及采样电路电阻大小,可以改变测量范围。 实物正面 轻松设计 从瑞萨电子开始 146 瑞萨电子低功耗 MCU 实战手册 注释一下:智能用电监控、保护系统中,AD 采样占用了 AIN0~AIN7。其中支路 1~6 占用 AIN0~AIN5,系统电压占用 AIN6, 系统电流占用 AIN7。原开发板上电位器 R5 占用了 AIN2,为不影 响支路采样已拆除。 查看更多: >> 宿舍 ( 楼宇 \ 家庭 ) 智能用电监控、保护系统项目汇总贴 轻松设计 从瑞萨电子开始 147 6.2 多功能调试测试助手 瑞萨电子低功耗 MCU 实战手册 作者:EEworld 论坛网友蓝雨夜 多功能调试测试助手含四个主要功能: 1,连续采集多路 4~20mA 直流电流或直流电压 显示在 16*64 点阵上。 2,检测目标器件阻抗:比如检测到目标电容的阻抗,同时计算出当前器件的参数。 3,交流电压信号源;采用 DDS 芯片实现输入频率交流信号的产生。 4,直流电压信号源:采用高精度 DAC 实现 +-15V 直流电压源的输出。 多功能调试测试助手 - 阻抗测量:通过该功能可以直接测量目标器件的阻抗 , 不管目标器件是电容, 电感,还是电阻。就不要器件分析仪或万用表等工具。 一、原理图 我这里从“易实现”,“电路简单”考虑,选择了 AD5933。由瑞萨 RL78/G14 板载 R5F104LE 的 P6.0-SCLK. 和 P6.1-SDA 的 IICA0 总线连接 AD5933。 注意:反馈电阻通过拨码开关切换不同的阻抗测量范围, IICA0 总线接口上拉 10k 电阻。 二、PCB 图 轻松设计 从瑞萨电子开始 148 三、实物图 瑞萨电子低功耗 MCU 实战手册 四、程序 R5F104LE 的 P6.0,P6.1 含 IICA0 总线借助 Applilet 自动配置就可以自动生成驱动库。 或者移植 demo 中的 RL78G13 的驱动程序(这也是我采用的方式),不过我多走了一点路,先 用其他 MCU 测试了好久一直跟踪调试出来的数据不对,最后发现还是编译环境之间对数据强制类型转 换的问题。后来移植到 R5F104LE 上就方便很多 , 同样留意了数据类型强制装换的问题 . 如图所示 还有个问题就是 IICA0 中断函数定义向量的问题。 demo 中是 rl78g13 的,在程序调试时一直在对 iica0 操作时一直不能正确的进入相应的中断函数。 后来模仿自己项目中的定时器中断函数的格式。 轻松设计 从瑞萨电子开始 149 瑞萨电子低功耗 MCU 实战手册 在完成对 IICA0 初始化,读,写操作后,就是要如何使用 AD5933。 根据 ad5933 数据手册,只要对它进行起始频率,频率增量,频率数,后就可以启动扫频,等内部 采集完成,读状态,读取实部和虚部就可以计算目标阻抗了。 计算公式 : 源程序参见相关帖子。 相关帖子:>> 阻抗测量 AD5933 轻松设计 从瑞萨电子开始 150 瑞萨电子低功耗 MCU 实战手册 四、演示 演示说明:IICA0 以 100k 的速率与 AD5933 通讯,DDS 输出 35KHZ 正弦波,测量 10K, 电阻, 200k,100K。其中视频中数据乱跳是目标负载接触不良。 五、衍生想法 如果在采集方面再下功夫,采用两点标定,或其他方面来提高采集精度,可以换算出采集电容,电 感的其他参数。 多功能调试测试助手 - 八路电压测量测量:通过该功能可以直接测量八路直流电压值。 一、原理图 我这里选择了 ADS8332。瑞萨 RL78/G14 板载 R5F104LE 管脚使用 P140-----ADS8332INT P141-----ADS8332SDO P00------ADS8332RESET P01------ADS8332SCLK 轻松设计 从瑞萨电子开始 151 P02------ADS8332CS P03------ADS8332SDI P04------ADS8332CONVST 输入前端用电阻分压,然后低通滤波,如图所示 瑞萨电子低功耗 MCU 实战手册 ADC 的外部基准输入采用专用基准电压源 REF5025 二、PCB 图 三、实物图 四、程序 R5F104LE 的程序借助 Applilet 自动配置相应端口可以自动生成驱动库。 轻松设计 从瑞萨电子开始 152 特别要注意 SDO,INT 对应的 P140,P141 是配置成输入的。 瑞萨电子低功耗 MCU 实战手册 P00,P01,P02,P03,P04 口配置成输出,同时初始化输出状态值 五、演示 演示说明:开机通过按纽切换到“8-Channel Vmeter”,按确定键进入界面 CH: 0 这里指当前采集通道,通过上下键切换通道 0~7。 00.0    显示当前通道的电压值 视频中采集一块电池直流电压。 六、衍生想法 当检测模拟电路时,分析目标电路的工作状态,可以升级处理,增加 TFT LCD 用 8 种颜色,以曲 线的形式直观的显示给用户来分析,电路的工作状态。 轻松设计 从瑞萨电子开始 153 瑞萨电子低功耗 MCU 实战手册 多功能调试测试助手 - 交,直流信号源,在测试数字电路或模拟电路时经常需要模拟某种特点频率, 幅度的交流信号或者几 mV 到几 V 的直流电压源。有随意设置输入参数,输出需要参数的信号源是非常 必要的。 一、DDS 交流信号源原理图 瑞萨 RL78/G14 板载 R5F104LE 管脚使用 ☆ AD9834_CS      P2.7 ☆ AD9834_SCLK  P2.6 ☆ AD9834_DATA  P2.5 ☆ AD9834_SLEEP P2.4 ☆ AD9834_REST P2.3 ☆ AD9834_FSELECT P2.2 ☆ AD9834_PSELECT P2.1 ☆ AD5620_CS P2.0. DDS 采用 AD9834 单片数字频率合成芯片,然后通过 AD5620 控制 FSADJUST 脚工作电压, 控制 DDS 输出幅度,AD5620 输出 0,输出幅度最大。AD5620VOUT 输出越大,DDS 输出幅度越小。 完整程序参考相关帖子:>>DDS 直接频率合成 AD9834 轻松设计 从瑞萨电子开始 154 二、直流电压源原理图 瑞萨电子低功耗 MCU 实战手册 瑞萨 RL78/G14 板载 R5F104LE 管脚使用 ☆ AD5791_RESET P4.1 ☆ AD5791_CLR    P4.2 ☆ AD5791_LDAC  P14.6 ☆ AD5791_SDO    P14.7 ☆ AD5791_SDIN P0.6 ☆ AD5791_SCLK  P0.5 ☆ AD5791_SYNC  P3.0 三、电压源精密基准源 轻松设计 从瑞萨电子开始 155 瑞萨电子低功耗 MCU 实战手册 由 ADR445B 输出精密基准电压 5V,然后通过 AD8675 同相比例放大到 10V,AD8676 跟随 + 反相比例放大到 -10V。其中电阻最好采用温飘小的精密电阻。 注意:电源滤波,布局参考 demo 板 四、PCB 图 五、实物图 六、程序 R5F104LE 的程序借助 Applilet 自动配置相应端口可以自动生成驱动库。 设置直流电压值给 AD5791 时,要配置它的控制寄存器中的 BIT4 选择偏移二进制编码方式。不然 输出就有问题了。   完整程序参见相关帖子。 相关帖子:>> 精密电压源 AD5791 轻松设计 从瑞萨电子开始 156 七、演示 模拟输出交流信号,直流电压信号。 瑞萨电子低功耗 MCU 实战手册 八、衍生想法 我这里显示采用了 LED 点阵屏,动态刷新显示时,会对输出交流信号源有点点杂波,后来在连接 信号板的线上外加个磁环,杂波稍微降了点。现在做微信号源是还是要注意尽量隔离处理,或减少些对 电源波动影响大的外设。感觉改成 LCD 应该会好些。 设计参考资料要仔细比较,理解,不然很容易忽略掉些基本问题。 多功能调试测试助手 - 人机界面:清晰直观的显示参数,及操作,采用了 16*64 的 LED 点阵屏。 五方向操纵杆实现上下,左右,确定等功能。 一、原理图 轻松设计 从瑞萨电子开始 157 瑞萨 RL78/G14 板载 R5F104LE 管脚使用 ☆ HC595_OE       P1.1 ☆ HC595_SCK      P1.6 ☆ HC595_RCK      P1.0 ☆ HC595_SI       P1.2 ☆ HC154_EO       P1.5 ☆ HC154_A0       P6.3 ☆ HC154_A1       P6.2 ☆ HC154_A2       P6.1 ☆ HC154_A3         P6.0 按键 ☆ KEY_UP          P74 ☆ KEY_DOWN    P71 ☆ KEY_LEFT       P73 ☆ KEY_RIGHT    P72 ☆ KEY_CENTER P70 二、PCB 图 瑞萨电子低功耗 MCU 实战手册 三、实物图 四、程序 动态扫描方式:8 块 74HC595 移位组成 LED 点阵屏列信号,1 块 74HC154D 控制三极管控制 16 行,行信号。同时采用 TRJ0 定时器 1ms 中断,不停的刷新点阵屏。 特别是对整数,浮点数显示处理,五方向操纵杆实现上下,左右,确定对数字的设置功能,通过是 个很好的参考。   轻松设计 从瑞萨电子开始 158 ☆上:当前菜单项 向上翻 或当前编辑数字加 1 ☆下:当前菜单项 向下翻 或当前编辑数字减 1 ☆左:编辑位左移 ☆右:编辑位右移 ☆确定 / 返回:进入编辑菜单项 或退出当前编辑菜单项 五、显示效果 瑞萨电子低功耗 MCU 实战手册 六、衍生想法 如果配上增量式编码器 与操作杆配合,更方便于操作使用。或者实现更人性化,美化菜单。把显示 信息量增加。 原理图、PCB 图下载请参考相关帖子。 相关帖子:>> 多功能调试测试助手 轻松设计 从瑞萨电子开始 159 多功能调试测试助手 - 焊接调试说明 一、16*64 点阵屏人机面板焊接说明 1、先焊底层 U1~U8(74HC595), 可是使整块 PCB 放置 瑞萨电子低功耗 MCU 实战手册 2、再焊 Q1~Q16(PBSS5220T), 如果有同类封装的 pnp 的,电流更大的可以替换 3、焊贴片 U13(74HC154D) 4、U9~U12(LM-2256LL1)点阵模块 5、最后焊贴片电阻,5 方向操作杆及其他剩余器件 基本只要器件全新,焊接无短焊,虚焊就可以在单片机驱动下显示工作 二、 精密直流电压源 焊接调试说明 1、先焊接 U5(ADR445B),及输入,输出去耦电容,可是输入大于 6v 的直流电压至 VIN, 然后 测量 U5 的第 6 脚,万用表直流电压档可以测量到非常稳定的 5V 电压。 2、然后再焊 U6(AD8675),U7(AD8676)及相关电阻,电容。使 J1 上的电压为 ( 输出 +10V),J2 上的电压为(输出 -10V)。 同时输出电压也要满足比较稳定的一个值,如有误差,务必更换精度比较高的,温漂更小的电阻。 3、再焊 U1(AD8676),U3(AD5791),U4(AD8675), 焊接完成后,要细心,认真查看焊点,不可短 路,虚焊等问题。 初试上电,可以观察供给电源的工作电流,不可过大,板上器件无明显温升,方可下步调试单片机 驱动工作。 三、交流信号发生器(DDS 直接频率合成) 1、先焊接 U8(AD9834). 2、然后再焊 Y1 晶振 这里先不焊 U2(AD5620), 直接先将 R3(6.8k) 拉到地。使输出满量程电流工作。使单片机能驱动 ad9834 后,在加入幅度控制 U2(AD5620) 来调试。 其他几块板子也一样,焊接仔细,初试上电,注意工作电流,及稳升等问题! 相关帖子:>> 多功能调试测试助手 - 焊接调试说明 轻松设计 从瑞萨电子开始 160 6.3 四轴飞行器中无感无刷直流电机电调设计 作者:EEworld 论坛网友 shiyongzhu 本方案主要是参考德国 MK 四轴飞行器电调的设计。 瑞萨电子低功耗 MCU 实战手册 1、直流无感无刷电机控制方法 做四轴飞行器电调一份重要的参考资料 timegate 墨鸢所写的《无感无刷直流电机之电调设计全攻 略》,本文主要参考该文献。目前,国内外对无刷直流电机(Brushless DC motor,BLDCM)定义 一般有两种:一种定义认为只有梯形波 / 方波无刷直流电机才可以被称为无刷直流电机,而正弦波无刷 电机则被称为永磁同步电机(permanent magnet synchronous motor,PMSM);另一种定义则认 为梯形波 / 方波无刷电机和正弦波无刷电机都是无刷直流电机。在此本帖采用第一种定义。 直流无刷电机根据转子结构可分为内转子和外转子两种结构。下图是一个三相九绕组六极内转子电 机和三相六绕组外转子电机。 直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而推 动转子转动。为了产生持续的力矩,线圈内的电流需要根据转子所处的位置改变方向,这也就是所产说 的换相。有刷电机的换相通过电刷完成,而无刷电机的换相则是通过电子器件控制电流的通断来完成。 无刷直流电机的换相与转子的位置有关,为了产生同一个方向持续的电磁力矩,需要根据位置的不 同控制每相电流通断。根据换相位置的检测方式又可以分为无感和有感。有感指的是采用霍尔传感器检 测转子位置,控制换相。而无感指的是直接利用电机的线圈绕组来控制换相。这也正是本次电调设计的 主要方式。 本次电调设计主要控制框图如下图所示,零位检测电路检测能够检测出无刷电机转子的切换位置, 控制器根据转子位置,控制驱动电路进行每相通断切换,从而实现对电机的控制。 轻松设计 从瑞萨电子开始 161 瑞萨电子低功耗 MCU 实战手册 2、无感无刷直流电机电调驱动板设计 驱动板的原理图分成五块,分别是过零检测、电流检测、外部接口、电源输入、控制输出。以下简 单的介绍每一块的功能。 过零检测:利用接地导线流过电流时产生电压的原理,检测电压实现电机的工作电流测定。   过零检测:使用 LM339 比较器,比较每相与中间点的电压差,从而产生上升沿或下降沿信号,供 换相控制使用。   外部接口:外部输入 12V、5V 电压、输出控制、过零脉冲通过此接口与外部连接。 轻松设计 从瑞萨电子开始 162 瑞萨电子低功耗 MCU 实战手册   电源输入:外部提供 5V、12V 电压,5V 用于 LM339 集电极上拉,12V 用于控制。   输出控制:最核心的部分,此部分完成换相工作。 轻松设计 从瑞萨电子开始 163 瑞萨电子低功耗 MCU 实战手册   根据原理图绘制出如下的 PCB >> 设计文档 3、无感无刷直流电机电调驱动板调试 本设计的电调驱动板比较简单,打板回来后很快完成了电装工作,空板如下图所示。   购置的无感无刷电机、锂电池与电调驱动板、RL78/G14 进行连接,如下图所示,无感无刷电机的 固定是问题,本人利用烙铁架将其夹住,效果很好。 轻松设计 从瑞萨电子开始 164 瑞萨电子低功耗 MCU 实战手册 至此,完成电机的启动,演示视频: 下一步就是使电机持续的旋转起来。 4、驱动板与 RL78/G14 评估板调试 驱动板至 RL78/G14 评估板的连接接口: A+、B+、C+ 为六臂全桥驱动电路的上臂导通控制接口,高电平时导通,低电平时截止; A-、B-、C- 为六臂全桥驱动电路的下臂导通控制接口,高电平时导通,低电平时截止; INT A、INT B、INT C 为各相感应反电势与中点电压比较; Current 为电流检测电路输出的电压; 轻松设计 从瑞萨电子开始 165 瑞萨电子低功耗 MCU 实战手册 接口分配 A+、B+、C+ 需要接入 PWM 信号,在此利用 RL78/G14 中的 RD1 定时器产生三路 PWM 信号, 引脚对应 CN2 上 P10、P11、P12; A-、B-、C- 只要输出低电平、高电平即可,在此利用 CN2 的 P55、P54、P53 即可; INT A、INT B、INT C 接入 RL78/G14 中的中断,并要求能够上升沿和下降沿都可以检测该中断, RL78/G14 的外部可屏蔽中断能够满足使用需求,在此利用 CN2 的 P51、P50、P16 检测中断; Current 利用 ADC 的通道 0 检测,对应 CN2 的 AVrefp。 驱动板至电机 B、C 三相分别接上电机即可; 实物图如下: 电机运行视频: 5、上位机电调测试软件设计 轻松设计 从瑞萨电子开始 166 瑞萨电子低功耗 MCU 实战手册 为了方便测试自制电调的性能,本人设计了用于测试电调的 MFC 程序。该程序能够实时接收和显 示电调的状态,当电调采用串口控制时,该软件可以实时控制电调。程序的界面如下图所示: (1)通信协议和报文 本软件通过串口与电调进行通信,波特率默认为 38400,数据位为 8 位,停止位为 1,无奇偶校验 位,电调发送之上位机报文速率为 100ms 一帧,上位机发送至电调的报文速率也为 100ms 一帧。 每帧报文包含 30 个字节,每个字节对应的内容如下: 首字节为标示符‘#’; 次字节为电调地址 0、1、2.。。。; 下一字节为 cmd;(当需要重启电调时,该指令为‘R’) 中间为数据区(进行了编码处理,内容将下文) 末字节为结束符‘\r’; 数据区之所以进行编码是由于为了能够识别出报文起始和结束符,在报文的中间必须不能够出现与 之相同的字符。以下列出使用到的几个关键 ASCII 码 #  —  35 0x23 \r —  13 0x0D 从上述的 ASCII 码值,要是的数据区的每个字节值必须 >35 或者 <13 但是 > 电调地址再或者 <35 但大于 >13,很明显大于 35 的数据范围比较广,所以将数据编码到大于 35 的 ASCII 码的值比较方便。 MK 电调采用此种方法,将原来的数据由三个字节扩充为四个字节,并将各个字节加上‘=’(0x3D), 从而使得扩充后的字节均大于大于‘#’。编码后的数据区数据将全部大于’#’、‘\r’, 从而从接收 得到的报文中可以检测出报文头和尾。 编码主要程序如下: SendeBuffer[pt++] = ‘#’; // Startzeichen 轻松设计 从瑞萨电子开始 167 SendeBuffer[pt++] = modul; SendeBuffer[pt++] = cmd; 瑞萨电子低功耗 MCU 实战手册 // Adresse (a=0; b=1,...) // Commando while(len) { if(len) { a = snd[ptr++]; len--;} else a =0; if(len) { b = snd[ptr++]; len--;} else b =0; if(len) { c = snd[ptr++]; len--;} else c =0; SendeBuffer[pt++] = ‘=’ + (a >> 2); SendeBuffer[pt++] = ‘=’ + (((a & 0x03)<< 4) | ((b & 0xf0) >> 4)); SendeBuffer[pt++] = ‘=’ + (((b & 0x0f)<< 2) | ((c & 0xc0) >> 6)); SendeBuffer[pt++] = ‘=’ + ( c & 0x3f); } AddCRC(pt); } 对应的解码程序如下: while(len) { a = RxdBuffer[ptrIn++] - ‘=’; b =RxdBuffer[ptrIn++] - ‘=’; c = RxdBuffer[ptrIn++] - ‘=’; d = RxdBuffer[ptrIn++] - ‘=’; if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, alsempfangen wurden x = (a << 2) | (b >> 4); y = ((b & 0x0f) << 4) | (c>> 2); z = ((c & 0x03) << 6) | d; if(len--) ptrOut[ptr++] = x; else break; if(len--) ptrOut[ptr++] = y; else break; if(len--) ptrOut[ptr++] = z; else break; } 上述报文数据区的内容为以下结构体: struct str_Debug { unsigned char Digital[2]; unsigned short int Analog[8]; }; // 8 位 // 16 位 电调至上位机: Digital[0] —————— 自检结果, 0- 正常 非 0- 故障代码 Digital[1] —————— 命令来源与电调状态 [1:0] – 00 串口 –01 I2C -- 10 PPM [2] 0停止 1- 运行 Analog[0]—— 电流 轻松设计 从瑞萨电子开始 168 瑞萨电子低功耗 MCU 实战手册 Analog[1]—— 电压 Analog[2]—— 占空比 Analog[3]—— 速度 上位机至电调(仅当控制指令来自串口时可以使用): Digital[0] —————— 急停 Digital[1] ——————占空比 Analog 保留 注:此处与 MK 电调有所区别,在 MK 电调中定义如下变量 unsigned charMotorTest[4] = {0,0,0,0}; MotorTest 每个字节分别对应 0、1、2、3 地址电调的占空比。 上位机发送的数据仅为每个电调地址对应的占空比而已,上位机至电调数据量较小,减小中的发生 率,有利于换相,在后期的电调制作中,将对此予以优化。 (2)报文接收与发送 电调报文接收主要采用中断完成,每接收到一个字节即产生一个中断,这样很容易识别开始和结束 的标示字节,完成一帧完整报文的接收。 相对于电调来说上位机软件采用 MFC 编制,采用专用的串口控件 MSComm。MFC 程序根据串 口接收事件进入接收子程序,但是接收得到的内容不再只是一个字节还可能是多个字节,为此将接收到 的报文存于 recvbuffer[100] 中,该缓存器能够循环存储。然后检测刚接收到的报文中是否含有结束符, 若有再将报文摘出存储于 recvdata[30],对 recvdata[30] 中数据进行解码,从而得到电调发送的数据。 电调发送报文比较简单,将需发送字节放入发送寄存器,不停检测发送完成标志,当发送结束,再 将下个字节放入发送寄存器。 上位机发送功能比较简单,直接将要发送的数据,定时存入发送缓存器中即可。 以上介绍本人编制的 MFC 电调程序,如需进一步了解这个程序,还需要对源程序进行分析。 相关帖子:>> 无感无刷直流电机电调设计 轻松设计 从瑞萨电子开始 169 瑞萨电子低功耗 MCU 实战手册 6.4 基于 RL78 单片机的巡逻小车 作者:EEworld 论坛网友 a972043362 设计能节约人工巡逻成本,并且对于有人冒充保安身份在不恰当的时机入侵安保区域有较好的预防 效果。 I 小车硬件部分展示 1. 小车主题外观 2. 控制核心 3. 巡逻途中避障部分(红外光电开关) 轻松设计 从瑞萨电子开始 170 4. 四路巡逻路径识别 瑞萨电子低功耗 MCU 实战手册 5. 高速直流电机与电机驱动(自带光耦隔离) 无限 905 通讯模块 轻松设计 从瑞萨电子开始 171 红外热释传感模块 瑞萨电子低功耗 MCU 实战手册 II 让小车跑起来 首先小车实现了循迹功能,相关程序下载 相关帖子:>>PWM 实现动作 下面是小车避障功能的实现,相关程序下载 相关帖子:>> 小车自动避障功能实现 轻松设计 从瑞萨电子开始 172 瑞萨电子低功耗 MCU 实战手册 作者开发体验心得: 学习瑞萨单片机以及熟悉 CubeSuite+ 开发环境已有一个月了,自我感觉学到的东西挺多的,而且 让我意识到自己的渺小。虽然刚开始接触时像丈二的和尚摸不着头脑,但我经过不断地思索与尝试,天 道酬勤,让我略懂了一些相关的知识与技巧。 刚拿到单片机时,感觉很激动,很想马上让它为我所用。于是马上翻看个 g13 和 g14 单片机的原理图、 使用手册以及寄存器手册。 根据相关的视频,安装 CubeSuite+ 软件后,并尝试着新建一个 Project。此时要注意,工程目录 和文件名不能带有中文,不然会出错,影响工程的新建。 此编辑环境与其他 51、430 的编辑环境几乎完全不同。这也让我头疼了好久。我只能根据视频的 操作去慢慢摸索。 此环境最大的好处就是在开始设置了一些配置,在 CubeSuite+ 上选择 MCU 内置的各个功能模块, 设置以及输入需要的数值之后,比如说 IO 口的定义及输入输出模式、定时器的设定和串口参数的定义 等等,代码生成工具就可以根据用户配置自动生成程序代码。 在对程序再次编辑添加自己的代码时,必须注意将代码放到 /* Start user code for adding. Do not edit comment generated here */ 和 /* End user code. Do not edit comment generated here */ 两 条语句中间,不然调试过后,在语句之外的语句会被清除,这点需要引起大家的注意。 刚开始编写自己的程序时,经常会报错,比如说不能这样定义 IO 口:sbit rw=P1^4 等。后来在程 序仿真、烧写以及单独供电时要注意跳帽的位置,不然很容易出错,造成代码仿真不进去或程序烧写进 去没反应。 可能由于自己技术水平不行,又接触此单片机和开发环境较少,好多东西看不太懂,而且教程中也 有一部分不怎么清楚其生成原理,所以在自己使用生成其他代码时有许多困难。 在我调式无线模块应用于瑞赛 g14 单片机时,纠结了好长时间,在 51 单片机上都可以使用,当我 改写些定义后移植过来后还是出现好多问题,知道软件之间有所差别,但就是找不出来和如何去修改。 比如所数据的发送用按键控制时,在 51、430 中 IO 口的输入设置使用后会自动拉高 IO 口,而瑞萨当 中不行,必须要对相应的 IO 口进行使用上拉电阻,不然程序会做无用功。 还有一个问题就是无线接收部分,我到现在还没弄明白怎样去设置和调试。查了相关资料貌似是什 么位选址的设置的问题,导致这个无线模块没有调试成功,其他功能基本已实现了。主要还是时间问题, 我所在的电子技术协会,因为要带新生,基本上占据了大部分的双休日的时间。有两门考试也快临近了, 英语四级也还有半个月,不知道临时抱佛脚有没有效果啊,好在四级词汇基本上背完了 ~ 遗憾的是可能 真的没有时间在期限之前完成了,这几天会整理资料,将该发的帖子补上,毕竟是我在论坛里接的第一 个项目,唉,算是有始有终吧! 总而言之,自己还要学习的东西太多太多。为了技术提升,必须扩大见识,努力学习新的知识,我认为, 这是有必要的。 相关帖子: >> 瑞萨使用心得体会 轻松设计 从瑞萨电子开始 173 瑞萨电子低功耗 MCU 实战手册 6.5 基于瑞萨 RL78 板子的可穿戴便携式心率仪 作者:EEworld 论坛网友 shower.xu 实时的心率监测,显示,报警提醒,可随身佩戴,稳定方便。考虑加入加速度传感器,在跑步时也 可以实时监测。 1、RL78/G14 板子驱动 LCD 显示正弦波 DIY 项目中要用到波形的显示,所以在设计硬件电路之前想先进行一下原理的验证,这里面关键的 问题是驱动电压不匹配的问题。 因为我的 LCD 是 3.3V 的驱动,而板子是使用的 5V 供电,本来打算试用下瑞萨的不同电压输出的 IO 功能,可是板子上已经把两个电压脚连好了,跳线不方便,为这个踌躇了好久。 最后决定板子仍旧用 5V,lcd 电源选择 3.3V,IO 驱动 5V,背光要 6V 准备用板子控制一个升压电 路实现,真是复杂的电源系统啊,汗一个。 尽管麻烦,但驱动还算顺利,正常显示出正弦波形,如下图。 轻松设计 从瑞萨电子开始 174 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 175 【演示视频】 瑞萨电子低功耗 MCU 实战手册 >> 相关源代码 相关帖子:>>RL78/G14 板子驱动 LCD 显示正弦波 2、扩展板原理图和 PCB 源文件 最近断断续续的看资料,找脚位,主要是各种模块接口的,既要和官方板子兼容,又要保证以后好 布线,那个踌躇啊。 扩展板主要用到定时器 IO, 按键触发,Buzzer 输出,SPI 接口,计划引出一路串口和一路 IIC 接口, AD 口看情况在考虑下。   不得不说,瑞萨的 IC 端口配置还是很灵活的,由于脚位的问题,串口和 SPI 和 IIC 等模块分散在 各个引脚,需要自己调配使用,基本每个端口都是几路 IO 复用的,大家可以在便于布线的情况下酌情 使用。   下面是我画的原理图,部分细节可能还要斟酌,说不定还要修改,前面时间花久点,这样做板才准 轻松设计 从瑞萨电子开始 176 确性高些。 瑞萨电子低功耗 MCU 实战手册 原理图在这里,ADS 画的,仅供参考 >> 原理图 实际中做了部分的修改如图:(PCB 源文件下载 ) 相关帖子:>> 扩展板原理图 3、在线仿真和串口调试 由于板子的在线仿真使用了 UART2 端口,所以想在仿真的时候输出点什么信息到电脑上显示 就不行了,怎么办呢,难不倒我们,R78G14-64p 一共三组串口,UART0-UART2,板子占用了 UART2,我的扩展板用到了 SAU0 的通道 3,也就影响了另一组 UART1,我们就只剩下 UART0 可用了, 那就用他吧。 轻松设计 从瑞萨电子开始 177 瑞萨电子低功耗 MCU 实战手册   一反折腾,主要是众多的寄存器设置,功能实现,下面是仿真的同时串口输出一串字符到串口终端 的效果,请看图片和视频。串口 0 是从我的扩展板上引出去的。   分享 Uart0 串口调试用的源代码,这样可以在 UART2 占用做仿真的同时使用串口终端打印调试信 息 (源代码下载) 相关帖子:>> 在线仿真和串口调试 & 阶段总结 轻松设计 从瑞萨电子开始 178 瑞萨电子低功耗 MCU 实战手册 4、利用 Interval Timer 实现相位差脉冲输出 我 的 系 统 要 实 现 两 个 互 为 90 度 相 位 差 的 PWM 输 出, 考 虑 来 去, 决 定 用 板 子 IC 内 的 12-bit Interval Timer 来实现, Interval Timer 时钟选用外部低速时钟,设定比较值为 32,使能中断,初始化 部分如下 1. /* supply IT clock RTC and 12bit interval timer enable*/ 2. RTCEN = 1U; 3. /* disable IT operation */ 4. ITMC.itmc = _0000_IT_OPERATION_DISABLE; 5. /* disable INTIT interrupt */ 6. ITMK = 1U; 7. /* clear INTIT interrupt flag */ 8. ITIF = 0U; 9. /* Set INTIT level 1 priority */ 10. ITPR1 = 0U; 11. ITPR0 = 1U; 12. /* Set the compare value */ 13. ITMC.itmc = _0020_ITMCMP_VALUE; 14. IT_compare_value = _0020_ITMCMP_VALUE; >> 源代码下载 实现的结果用仿真器仿真,效果很好,如下图 轻松设计 从瑞萨电子开始 179 瑞萨电子低功耗 MCU 实战手册 5、利用 TI02 实现信号捕获 实际调试中发现原理图的一些错误,我用 INTP0 即 P137 用作按键输入,结果发现不进中断,仔 细对照说明一看,该 IO 没有内部上拉电阻,这才知道不是每个 IO 都有内部上拉,没关系,外部上拉 100K 电阻到 VCC,完美解决。 外部信号捕获功能 使用了 Timer unit 0 的 channel2 来实现频率计数的功能,我是用的是 TO02 即 P17 的复用功能, 配置如下 轻松设计 从瑞萨电子开始 180 瑞萨电子低功耗 MCU 实战手册 使用的计数方式是外部事件递减计数模式, 把初始值放进 TDR02,在启动的时候会自动加载进 TCR02 寄存器里面,TO02 输入的外部有效 电平边沿会导致 TCR 内的数值递减,你在合适的时候读取 TCR 寄存器里面的值和初始值做判断就可 以判断边演的个数,非常好用。 轻松设计 从瑞萨电子开始 181 瑞萨电子低功耗 MCU 实战手册 传感器部分 我直接把光电对管设计在板子的末端,利用底板和扩展板之间的间隙来代替夹头的暗箱,把发射和 接受对管分别焊接在两端,测试时手指插进去即可。底板上原来自带的可调电位器和按键占空间被我取 下不用。 轻松设计 从瑞萨电子开始 182 瑞萨电子低功耗 MCU 实战手册 调试 我参考网上的程序用 C# 弄了一个上位机程序,接收从板子 UART0 发送上去的采样频率数据,以 波形的方式表现出来,更直观。   下面是调试的视频,由于一个手指要插入测信号,另一只手要录像,所以波形很差,后期还要调试 视频演示: >> 相关源代码下载 轻松设计 从瑞萨电子开始 183 瑞萨电子低功耗 MCU 实战手册 上位机软件 上位机软件主要是用 C# 写的(其实是参考网上开源的例程改的),用的是 VS C#2010,功能不 是很多,源代码下载 信号调试演示视频 相关帖子:利用 TI02 实现信号捕获    轻松设计 从瑞萨电子开始 184 瑞萨电子低功耗 MCU 实战手册 6、结束 心率信号调试并串口实时显示 之前信号一直有问题,刚开始是出不来信号,后来是采样数据混乱,各种的错误,期间陆陆续续调 试了几次,发现了软硬件上的一些 BUG; 上周末总算马马虎虎调出了满意的波形,但是还是有一组周期 性的干扰信号串入,初步怀疑是室内日光灯管干扰或是数据溢出问题,后续继续努力,这里先把之前碰 到并解决的一些问题和大家分享一下。 信号的调试 用到的传感器是淘宝上买来的高频血氧对管,发射是红光和红外光,接收管是把相应的光强转换为 和频率对应的脉冲,通过检测脉冲的宽度来检测相应的血氧值,而这个值的周期变化反映了血液的跳动, 也就是脉搏或者心率。 我是通过 Interval Timer 时钟产生发射管的交替脉冲,见这篇帖子;通过 Timer02 定时器的 TI02 的 IO 口来做频率计数,由于计数时间是一定的,所以频率就和周期是对应的。实际调试中发现信号变 化不大,搜索了很多帖子结合做红外接收头的经验判断是接收头对外界光线灵敏,外界干扰所致。由于 是用板子间的见习作为暗室,这种情况很难避免,于是做了个这种的处理,用热缩管把发射和接受管包 起来,只留中间很小的角度,保证光线能集中的发射和接受到,减少外界干扰。这样信号有了显著改善。 程序调试 调了几次发现采集的数据很混乱,无规律可循,仔细检查程序和对应的文档发现,T02 作为外部计 数时是递减计数,中断是在递减到 0 时触发,所以我每次计算计数值时需要判断终端是否出发,计算差值。 代码如下 1. /* Interval Timer ISR serviced user flag complete */ 2. if(IT_flag == MD_SET) 3. { 4. /* Clear the IT_flag */ 5. IT_flag = MD_CLEAR; 6. evts=TCR02.tcr02; 7. 8. if(bRefresh) 9. { 10. evts=0xFFFFU-evts+oldevts; 11. 12. } 13. else 14. { 15. evts=oldevts-evts; 16. 17. } 18. oldevts=TCR02.tcr02; >> 源码下载 轻松设计 从瑞萨电子开始 185 演示视频 瑞萨电子低功耗 MCU 实战手册 相关帖子:>> 心率信号调试并串口实时显示 轻松设计 从瑞萨电子开始 186 6.6 360 度旋转的显示时间的广告灯 作者:EEworld 论坛网友 ddllxxrr 项目很简单,让一排 LED 转起来。 1、原理图 瑞萨电子低功耗 MCU 实战手册 LED 显示 轻松设计 从瑞萨电子开始 187 3、360 度旋转演示视频 瑞萨电子低功耗 MCU 实战手册 相关帖子:>>360 广告灯的汇总贴 轻松设计 从瑞萨电子开始 188 瑞萨电子低功耗 MCU 实战手册 6.7 DIY 家用短距离测距兼近距离有人报警闹钟 作者:EEworld 论坛网友 damiaa LED 和按键程序 编按键和 LED 程序中间发生了些问题。重新用代码产生器产生代码时把自己的代码冲掉了。后来 发现有些地方不能放代码。 要在加注视提示的地方加。大家注意了。还有就是先保存。>> 源代码下载 2、原理图和 PCB 原理图如下:(原理图下载) 轻松设计 从瑞萨电子开始 189 PCB 图如下:(PCB 图下载) 瑞萨电子低功耗 MCU 实战手册 相关帖子: >>DIY 家用短距离测距兼近距离有人报警闹钟原理图 轻松设计 从瑞萨电子开始 190 6.8 RL78/G14 在无线传感网中的应用 作者:EEworld 论坛网友地瓜 patch 瑞萨电子低功耗 MCU 实战手册 1、硬件说明 RF 收发器原理图图例 在 RF 收发模块的设计过程中没有多少诀窍。当然也有几个注意点 1. 天线匹配元件的选择 2. 天线的匹配阻抗,一般是 50ohm 3.RF 芯片下的接地 pad 一定要焊接良好 注意以上几点,在测试过程中就不会有太大问题 元件手册中的原理图图例 带 PA 的原理图及 pcb 图纸。在做 pcb 图纸的时候,尽量保持地平面的完整性。 发射模块的图纸 轻松设计 从瑞萨电子开始 191 瑞萨电子低功耗 MCU 实战手册 在射频的设计中,上面说有几个要点,包括元件参数,地的完整,天线在 pcb 上的匹配。下面深入 探讨一下,有不对的地方欢迎拍砖。 关于元件选择,包括高频电容和高频电感,影响射频电路的谐振点,因为所用的射频芯片工作在 2.4G,所以将射频模块电路的谐振频率配置在 2.40-2.48G 之间是最合适的。 高频模拟电路和信号处理中,电感是最重要的元件。它可以承担的几项主要功能包括电路调谐、阻 抗匹配、高通和低通滤波器,还可以用作 RF 扼流圈。Q 值,电感值,自谐振频率是电感的三个重要参数。 Q 值是一种衡量电感性能的指标,用于比较振荡频率和能量损耗速率。Q 值越高,电感的性能就越接近 于理想的无损电感。它在谐振电路中的选择性更好。高 Q 值的另一个好处是损耗低,电感消耗的能量少。 低 Q 值使得带宽较宽,而且在振荡频率处及其附近的谐振幅度较低;电感中的每一匝绕线都可以看成一 块电容器极板,匝与匝之间以及线圈与铁芯之间电容的总体效果可以用与电感并联的单个电容来表示, 这就是分布电容。这种并联结构的谐振频率就是自谐振频率。在此频率,电感看起来像带有阻抗的纯电阻。 如果频率超过自谐振频率,这种并联结构的容抗将成为主要因素。 轻松设计 从瑞萨电子开始 192 瑞萨电子低功耗 MCU 实战手册 射频高频电容一般选用片状陶瓷电容,等效串联电阻是其最重要参数位,是电容的介质损耗和金属 损耗的综合。在所有射频电路设计中,选用低损耗片状电容都是必须的重要考虑。使用低损耗电容产品 使射频功率放大器更容易提高功率输出和和效率。设计低噪声放大器时使用低损耗陶瓷电容可以把热噪 声减到最小,也可很容易地改善信噪比和总体噪声温度。 阻抗匹配是射频设计中的一项重要考虑,它反映了输入电路与输出电路之间的功率传输关系。当电 路实现阻抗匹配时,将获得最大的功率传输。在实际电路应用中,射频发射机的输出阻抗与馈线的阻抗、 馈线与天线的阻抗也应达到一致。如果阻抗值不一致,发射机输出的高频能量将不能全部由天线发射出 去。这部分没有发射出去的能量会反射回来,产生驻波,严重时会引起馈线的绝缘层及发射机末级功放 管的损坏。为了使信号和能量有效地传输,必须使电路工作在阻抗匹配状态,即信号源或功率源的内阻 等于电路的输入阻抗,电路的输出阻抗等于负载的阻抗。 轻松设计 从瑞萨电子开始 193 瑞萨电子低功耗 MCU 实战手册 针对 2.4G 射频电路天线 50ohm 阻抗匹配可以用软件计算得出,需要知道所用电路板板材的各种 参数。比如,介电常数,铜箔厚度等,如下图: RF 收发器模块实物 做了 5 个板子,焊了五块,简单调试就能用了。 RL78/G14 的 spi 读写 RF 收发器测试 使用 RL78/G14 的 spi0 接口,与 RF 收发器连接关系为 pin19-p62-cs pin32-p30-sck pin33-p50-si pin34-p51-so pin35-p52-irq pin36-p53-ce 轻松设计 从瑞萨电子开始 194 另有 VCC 和 GND 与收发器相连接 瑞萨电子低功耗 MCU 实战手册   在 spi 的连接线上纠结了不少时间,一开始把 pin38-p55 作为 sck 来用了,如图 ,后来看数 据手册中 p28 的功能框图才搞明白引脚的关系,如图 ,正确的 sck 是 p30,是 32 引脚。 上面图片显示了 spi 的接法,测试中选用的是 spi00 模块。现在在原理图中明确一下接线方法。(图 片中的 sck—p30 接错了) 轻松设计 从瑞萨电子开始 195 瑞萨电子低功耗 MCU 实战手册 在看过的带 SPI 接口的片子中,只有瑞萨的数据手册中用流程图的形式给出了不同操作流程。如下 图。通过对寄存器的配置,实现对端口的操作。 主发送模式需要配置的寄存器 PERO,SPSm,SMRmn,SDRmn,SOm,SOEm,SSM 主接收模式需要配置的寄存器 PERO,SPSm,SMRmn,SDRmn,SOm,SSm 在我的程序中对 SPI 的配置根据如下流程图少做修改即可 SPI 的发送包括几种模式或步骤可分为, 1)主发送初始化 2)停止主发送 3)恢复主发送 4)单发送模式 5)连续发送模式 SPI 的接收包括几种模式或步骤可分为, 1)主接收初始化 轻松设计 从瑞萨电子开始 196 2)停止主接收 3)恢复主接收 4)单接收模式 5)连续接收模式 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 197 瑞萨电子低功耗 MCU 实战手册 下边两个是针对 SPI 发送接收模式的时序图,在使用片子自带的接口的情况下,无需关注时序图, 但是在模拟 SPI 接口时,需要针对时序图控制每一个 IO 口。 模拟 SPI 端口的重要一点就是 SCK 的每一个变化对应发送 SDO 的一个变化,对应接收 SDI 的一 个变化 前几天写的 RL78 的 spi 接口程序,出现错误。先贴上 main 程序,后续几贴会将函数贴上。 轻松设计 从瑞萨电子开始 198 瑞萨电子低功耗 MCU 实战手册 程序的思路是通过 spi 配置 RF 收发器的各种寄存器,包括配置寄存器 CONFIG,地址寄存器 EN_ADDR, 地址长度寄存器 SETUP_AW,自动重复配置寄存器 SETUP_RETR,射频频率寄存器 RF_ CH,射频配置寄存器 RF_SETUP,状态寄存器 Status 是只读的等等,本程序是在某程序的基础上修 改移植得来的。 读写寄存器函数   发射模式的各种参数配置如下 1. 收发配对地址是 5 个字节 40 位 2. 等待 25uS,3 次自动重发 3. 无线传输率 250Kbps,发射功率 0dBm 配置射频发送模式 RL78/G14 连接温湿度传感器实物图 所用温湿度传感器输出为数字信号,温度分辨率为 14bit,湿度分辨率为 12bit 温度误差正负 0.4 摄 氏度,湿度误差正负 3%RH 可重复精度两者均为正负 0.1 下图是接线图。 轻松设计 从瑞萨电子开始 199 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 200 RL78/G14 读写温湿度传感器的程序 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 201 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 202 射频模块接收 RL78/G14 的射频信号展示 瑞萨电子低功耗 MCU 实战手册 温湿度传感器的分辨率温度为 14bit,湿度为 12bit 轻松设计 从瑞萨电子开始 203 以上串口打印数据前 5 个字节为固定数据 其后 2 个字节为测得温度值高位在前 最后 2 个字节为测得湿度值高位在前 从串口打印结果取一测得值 1A 33 02 36 试计算一下如下 温度计算公式为 瑞萨电子低功耗 MCU 实战手册 1A 33 的十进制为 6707,所用电压为 5V,分辨率为 14bit T  = -40.1 -  0.01 * 6707  =  67.07 - 40.1 = 26.97 摄氏度 温度计算公式为 02 36 的十进制为 566,分辨率为 12bit RH_linear = -2.0468 + 0.0367 * 566 +0.00008 * 566 *566 = -2.0468 + 20.7722 + 25.62848 = 44.35388 RH_ture  = (26.97-25) ( 0.01 + 0.00008*566) + 44.35388 = 1.97 * 0.05528 + 44.35388 =0.1089016 + 44.35388 = 44.4627816 %RH 轻松设计 从瑞萨电子开始 204 瑞萨电子低功耗 MCU 实战手册 19 点 25 分 办公室室内温度为 26.97 摄氏度,相对湿度为 44.46%RH RL78/G14 读取传感器并发射 、 轻松设计 从瑞萨电子开始 205 瑞萨电子低功耗 MCU 实战手册 项目总结: 这个项目做的比较仓促,并没有用到 RL78/G14 芯片中的太多资源,比如定时器,DMA,事件控 制器,ADC 等等。多亏对单片机的应用比较熟悉,前期对 RL78/G14 芯片数据手册中用到的功能做了 比较细致的阅读。RL78/G14 芯片寄存器的配置还是比较复杂,比如 spi 的寄存器配置比较复杂,不像 其他芯片配置一下模式,速率,就可以直接用。从网上找的 RL78/G14 芯片的例程,编程比较另类, 与 51,ST,TI 等等的程序编写方式有一定差异,故没有采用这样的编程方式。因为之前有 G13 的活动, 网上找参考资料还是很多,但是官网提供的开发包等资料还是相对较少。 从自身来看,在做设计的过程中因为各种原因没能及时写进程贴,使得很多第一手资料没有及时记 录下来。比如第一次写 IO 端口遇到的问题及解决办法。第一次配置系统时钟以及第一次配置 SPI 接口 遇到的问题及解决办法。但是,做这些的时候又感觉无足轻重,不值得发帖。最遗憾的是将 RL78/G14 这颗 16 位机当作 8 位机来用,因为程序是从 8 位机修改得来的。还有一点就是没测试 RL78/G14 的功耗, 在射频应用方面,有源装置对功耗的要求还是很高的 总的来说 RL78/G14 是一个不错的片子,性能优越,感觉比较凸出的一个优点是大量接口复用, 使得应用非常灵活,特别是在 PCB 走线的过程中会有体现。有了这次的体验,希望能将 RL78/G14 系 列片子用作在今后的工作中的项目中。 轻松设计 从瑞萨电子开始 206 6.9 DDS 信号发生器 作者:EEworld 论坛网友 tziang DDS 信号发生器 功能特点 1. 超低成本 DDS 信号发生器,器件极少; 2. 单个数码管显示设置频率; 3. 超低功耗; 4.USB 接口锂电池充电; 实施方案 1.RL78 做主控芯片,负责频率的设置,显示,按键扫描等; 2.ADI 的单片 AD9835 DDS 芯片提供 DDS 功能; 3.TP4056 负责锂电池充电管理 硬件系统设计 一)系统设计规划 选用 ADI 公司的 DDS 芯片 AD9850 简单示意框图如下 瑞萨电子低功耗 MCU 实战手册 分成 4 个部分: 1)用户接口部分,一个 7 段 LED 数码管轮流显示各个位的频率,7 个 LED 表示各个位的频率系数, 3 个按键设置和显示频率; 2)RPBRL78/G14,即本次活动提供的开发评估板; 3)AD9835_module,AD9835 最小系统,50MHz 有源晶振提供系统时钟; 4)输出后端,正弦波整形调整及方波输出模块。 二)MCU 模块与 AD9835_module 和 User_interface_module 的连接 AD9835 需要通过 SPI 接口由 MCU 控制; MCU 需要提供 3 个 GPIO 作为按键输入,7 个 GPIO 复用控制 7 段数码管和 7 个 LED 灯,两 轻松设计 从瑞萨电子开始 207 瑞萨电子低功耗 MCU 实战手册 个 GPIO 控制数码管 common 端和 LED 的 common 端,1 个 GPIO 控制系统运行指示灯。统计出 RPBRL78/G14 需要提供 3+3+7+2+1=16 个 GPIO。 确认如下接口及网络和 RPBRL78/G14 的 CN2 连接,连接关系一并附上。 相关帖子:>> 瑞萨 RL78/G14 的 DDS 信号发生器 DIY 硬件系统设计 详细的原理图和 3D 效果图及实物展示 原理图及 PCB 设计 AD9835_module 及后端输出 轻松设计 从瑞萨电子开始 208 用户接口电路 瑞萨电子低功耗 MCU 实战手册 与 RPBRL78/G14 的接口电路 轻松设计 从瑞萨电子开始 209 PCB_3D 效果图 实物展示 PCB 实物展示 瑞萨电子低功耗 MCU 实战手册 焊接完成后的图片 背面,主要器件面,主要为 DDS 芯片 AD9835 的最小系统 轻松设计 从瑞萨电子开始 210 瑞萨电子低功耗 MCU 实战手册 正面,用户接口面,三个轻触按键设置显示频率,1 个 7 段 LED 配合 7 个 LED 灯指示频率 通过 2.54 排针连上瑞萨 RL78/G14 相关帖子:>> 基于瑞萨 RL78/G14 的 DDS 信号发生器 DIY 之 PCB 焊接完成 轻松设计 从瑞萨电子开始 211 功能说明和演示视频 一)功能说明 瑞萨电子低功耗 MCU 实战手册 、 A)BNC 输出接口:两路 BNC 接口分别输出正弦波和方波; B) 幅度调节:通过调节定位器,可以调节输出的幅度; C) 频率显示:配合系数指示灯,显示每一位的频率; D) 设置按键:从上到下分别是 SETTING,设置输出; 轻松设计 从瑞萨电子开始 212 INC,增加设置频率,每按一次从 0 到 9 循环增加; 瑞萨电子低功耗 MCU 实战手册 SHIFT,移位按键,使系数指示灯从 Hz 位到 MHz 点亮; E) 供电接口:mini-USB 接口供电,5V; F) 系数指示灯:从左到右,指示 MHz 到 Hz,配合上面的频率显示数码管显示具体频率。 二)使用步骤: A)mini-USB 供电; B)按 SHIFT 键选择要设置的位; C)按 INC 键设置该位需要的频率字; D)循环 B,C 操作,直至每位对应的频率字都设定完成; E)按 SETTING 键,使设置的频率输出; F)两路 BNC 接口即为需要的正弦和方波频率; G)调节定位器旋钮,使输出幅度合适。 三)视频演示 轻松设计 从瑞萨电子开始 213 瑞萨电子低功耗 MCU 实战手册 6.10 基于 LABVIEW 和 RL78 评估板的心电图采集系统 作者:EEworld 论坛网友 youzizhile 模拟前端主要是利用仪表放大器 AD620 和低噪声的放大器 LM324 来实现信号的拾取放大,同时 利用低通和高阻等滤波电路过滤出有效的信号。放大后的信号经过新唐单片机的 AD 输入进行采样,然 后转化为串口数据发送给电脑,电脑通过 labview 软件实现串口数据到图形的转化,就可以在电脑上分 析采集到的心电图状态。 整个系统流程简要分为以下几个部分:心电信号拾取 --> 仪表放大器 --> 高通滤波和 50hz 陷波 器 -->LM324 放大 -->NUC120 的 AD 采集 --> 电脑串口 -->LABVIEW 画图分析数据。 心电信号拾取的模型采用下面三导联模型,采用 aVF 模型,RL 表示左右胳膊的数据作为 AD620 的差分前端输入,F 表示反馈跟踪部分。反馈和放大采用 LM324 四输入运算放大器来实现。 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本 行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序, 而 LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了 VI 及函数的执行顺序。 LabVIEW 提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。 用户界面在 LabVIEW 中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。 串口使用和 LED 呼吸灯设计 下载 Applilet3 for RL78 V2.00.00 工具可以根据配置生成外设驱动代码,这个比较方便实用。 轻松设计 从瑞萨电子开始 214 瑞萨电子低功耗 MCU 实战手册 我的串口代码是从这个软件直接生成的,我用的是串口 uart2. 连接 pl2303 usb 转串口调试工具, 加入代码可以从 PC 端收到数据。整体程序是在 RL78_G13_Tutorial_Basic_Operation 上面修改的, 修改 mcu 型号和相关错误后,加入 Applilet3 生成的 代码就可以在线调试运行了。编译生成的程序通过 编程工具进行下载。 调用 Renesas Flash Programmer 下载生成的程序。 轻松设计 从瑞萨电子开始 215 点亮 LED 截图 瑞萨电子低功耗 MCU 实战手册 串口接收数据截图,视频由于之前文件太大,进行了转码,有点不太清晰 轻松设计 从瑞萨电子开始 216 瑞萨电子低功耗 MCU 实战手册 电路原理图详解 基于 LABVIEW 和 RL78 评估板的心电图采集系统 创意进度贴 + 电路原理图发布 模拟前端部分电路原理图为下图所示: 先仿真下电路的性能参数,采用 multisim 环境进行仿真和调试,调整参数以满足项目要求。 整体前端采集的包括高通滤波器等,multisim 仿真电路如下图 1 所示: multisim 仿真结果如下图所示:    multisim 仿真 50hz 陷波器电路截图如下图所示 轻松设计 从瑞萨电子开始 217 瑞萨电子低功耗 MCU 实战手册 multisim 仿真 50hz 陷波器仿真截图如下图所示:   各项指标都可以满足,下一步该动手焊接电路板了,这一步的调试时最容易出问题的,也是比较难 调试的一步。 系统中 LM324 采用单电源供电,比 ± 双电源简单,功能一样能满足。考虑到方便调试和携带,今 天添加了电源转换电路,利用 RL78 板子的 5V 逆变 12V 电源,为 LM324 和 AD620 供电。逆变电路 采用 TI 的 MC33063A 1.5A 峰值升压开关稳压器,MC33063A 的显著特点是体积小,集成度高,外 围元件少,转换效率高,应用灵活方便。MC33063A 内部含有带温度补偿的 1.25 V 参考稳压电路、电 平比较器、带有峰值电流检测电路的占空比可控的周期振荡器、与门电路、RS 触发器、输出驱动器和 大电流输出开关管。该器件可实现升压、降压或电压极性反转变换的功能。 电路原理图截图如下: 轻松设计 从瑞萨电子开始 218 瑞萨电子低功耗 MCU 实战手册 该电路的输出电压值通过改变 R21,R22 电阻值来进行调整,Vout=(1 + R21/R22)X1.25V.   这个芯片在之前的一个板子上用过,到时我把这部分电路切割下来,配合我焊接的板子使用,可以 减少调试焊接难度! 焊接实物展示 基于 LABVIEW 和 RL78 评估板的心电图采集系统 创意进度贴 + 电路 PCB 焊接组装发布。从购 买器件到现在持续将近一个半月了,昨天才把整个系统框架组装完毕。电路的模型采用万用板焊接,同 时添加了之前用到的一块电源板子和 usb 转串口组装而成,比较简陋,但是功能不缺少!   先发一个整体面板图:   电路板分为 5 各部分,下面分别介绍:   1. 此部分为 RL78 核心板,添加了 2.54mm 间距的单排底座,同时引出串口、供电输出接口和 AD 输入接口。   整个电路背板部分如下图所示: 轻松设计 从瑞萨电子开始 219 瑞萨电子低功耗 MCU 实战手册    2. 此部分为在焊接的心电采集的模拟前端电路部分,主要有一片 AD620 和一片 LM324 构成,电 路已经在 multisim 中进行仿真,结果可以满足要求。 LM324 部分电路:   AD620 电路部分: 3. 此部分为 5V 转 12V 电路,采用了之前用过的电路板,切割掉无用的部分后,引入 5V 电源 输入,引出 12V 输出到电路板上,这样,可以只使用 usb 的 5V 为整个系统供电。此电路采用 TI 的 MC33063A 来实现,最大可以输出 1.5A 的电流,完全能满足要求。 轻松设计 从瑞萨电子开始 220 瑞萨电子低功耗 MCU 实战手册 4. 此部分为采集左右胳膊的电极接口和左腿的反馈电极环形带。 左右胳膊的电极部分截图: 反馈左腿的电极: 轻松设计 从瑞萨电子开始 221 瑞萨电子低功耗 MCU 实战手册 5. 此部分为 usb 转串口电路板,采用铁牛的板子,主要还是用 pL2303 来实现的。 下一步为抓紧时间电路调试了和程序联调了。 RL78 的 AD 采样到电脑串口程序调试 之前调试已经把 AD 采样可以正常使用,但是配置还是有点问题。把 AIN2 的可调电位器放到最大, 应该就是 5V 左右,可是在跟踪时,数据总是在 2.1V 和 5V 来回跳动,一下正确,一下不正确,刚开始 以为是数据的问题,后来发现跳动很有规律,再从 Applilet3 for RL78_G14 程序中查找是否配置错误, 没有发现问题。网上相关的资源也很少,后来没有办法,查看 RL78 的《RL78 用户手册 硬件篇》,发现 AD 采样有很多种模式,我的模式选择错误,应该设定为“软件触发模式(选择模式,连续转换模式)", 如下图所示: 轻松设计 从瑞萨电子开始 222 瑞萨电子低功耗 MCU 实战手册   自己的问题出在模式选择上,选择了扫描模式导致数据出错。   同时还有一点要注意,就是在 AD_start 程序中,要加上一句 while(ADCS); /************************************************************************************ *********************************** * Function Name: R_ADC_Start * Description : This function starts the AD converter. * Arguments : None * Return Value : None ************************************************************************************* **********************************/ void R_ADC_Start(void) { ADCE = 1U; ADIF = 0U; /* clear INTAD interrupt flag */ ADMK = 0U; /* enable INTAD interrupt */ ADCS = 1U; /* enable AD conversion */ while(ADCS); // Delay_adc(1000); }    在串口调试上也出问题了,使用例程的串口程序可以发送数据,但是发送我调用的函数时,发出的 轻松设计 从瑞萨电子开始 223 瑞萨电子低功耗 MCU 实战手册 数据要么是一对重复的数据,要么就是不能发出,单步调试可以正常跟踪到数据是正确的,但是连续运 行就出错。当时一直认为自己的串口没有配置正确,就查看 RL78 的《RL78 用户手册 硬件篇》,查看 串口配置信息等,但是也没有查出有用的东西。 今天上午开始继续调试,利用中断调试跟踪程序的运行,发现串口发送数据中还引出一个中断服务 程序,在这个程序中也在发送数据。按照自己的想法,关闭中断,直接控制数据的传送,不能正常工作, 但调试可以正常,和昨天一样的现象。 一直到下午 5 点才调试成功,而程序只是在 R_UART2_Send 改动一些,添加了   。。。。。。。。 while(g_uart2_tx_count) 。。。。。。 for (i=0; i < 6000; i++) { NOP(); } 。。。。。。 这样做的目的首先不用再次调中断,其次在等待数据发送完成后再次进行发送数据,不会出现之前 重复发数据的问题,根据时钟的不同,可以调整延时的长短,控制 for 循环变量来实现。 更改后的程序如下所示: /********************************************************* ************************************************************** * Function Name: R_UART2_Send * Description : This function sends UART2 data. * Arguments : tx_buf - * transfer buffer pointer * tx_num - * buffer size * Return Value : status - * MD_OK or MD_ARGERROR ************************************************************************************* ** ********************************/ MD_STATUS R_UART2_Send(uint8_t * const tx_buf, uint16_t tx_num) { /* Declare a loop count variable */ uint16_t i; MD_STATUS status = MD_OK; if (tx_num < 1U) { status = MD_ARGERROR; } else { gp_uart2_tx_address = tx_buf; g_uart2_tx_count = tx_num; 轻松设计 从瑞萨电子开始 224 瑞萨电子低功耗 MCU 实战手册 SMR10 |= _0001_SAU_BUFFER_EMPTY; STMK2 = 1U; /* disable INTST2 interrupt */ while(g_uart2_tx_count) { TXD2 = *gp_uart2_tx_address; for (i=0; i < 6000; i++) { NOP(); } gp_uart2_tx_address++; g_uart2_tx_count--; // STMK2 = 0U; /* enable INTST2 interrupt */ } } return (status); } /* Start user code for adding. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ 现在可以正常工作了,只要旋转 AIN2 的电位器,电脑串口数据立马更新。 LABVIEW 界面设计 LABVIEW 界面可以自己自主设计布局,添加想要的功能,界面显示等。 本次项目的界面设计如下图所示:后端程序还需要再进行优化。 轻松设计 从瑞萨电子开始 225 瑞萨电子低功耗 MCU 实战手册 abview 程序设计 查询数据帧头帧尾,子程序利用 RL78 发送的数据头“ST”和数据尾“\r\n”判断一帧的开始和结束, 然后合并数据进行后续的处理。 查询数据帧头帧尾程序设计 轻松设计 从瑞萨电子开始 226 配置串口参数截图 瑞萨电子低功耗 MCU 实战手册 搜索串口数据帧头和帧尾,去除无用的和错误的数据,然后显示索引到的数据,程序截图如下: 还差最后一步,程序联调要在最后一周给调出来,要抓紧时间了。 轻松设计 从瑞萨电子开始 227 瑞萨电子低功耗 MCU 实战手册 >>labview 采集端程序下载 RL78 ad 采集端程序发布 这个采集程序上周都已经完成了,本来想着和 labview 程序一起发布,怕到时帖子发了图片又给弄 乱了,先发布 RL78/G14 的 ad 采集端程序吧。 选取 AD 采样的 AIN3(P23)引脚作为采样的输入管脚,利用 Applilet3 for RL78_G14 产生 AD 的驱动程序。才开始直接采样总是出问题,后来发现是自己的配置错误,使用选择模式,而不是扫描模 式就能解决问题。具体配置如下所示: void R_ADC_Create(void) { ADCEN = 1U; /* supply AD clock */ ADM0 = _00_AD_ADM0_INITIALVALUE; /* disable AD conversion and clear ADM0 register */ ADMK = 1U; /* disable INTADinterrupt */ ADIF = 0U; /* clear INTADinterrupt flag */ /* Set INTAD low priority */ ADPR1 = 1U; ADPR0 = 1U; /* Set ANI0 - ANI3 pin as analog input */ PM2 |= 0x0FU; ADM0 = _30_AD_CONVERSION_CLOCK_4 | _00_AD_TIME_MODE_NORMAL_1 |_00_AD_OPERMODE_ SELECT; ADM1 = _00_AD_TRIGGER_SOFTWARE | _00_AD_CONVMODE_CONSELECT; ADM2 = _00_AD_POSITIVE_VDD | _00_AD_NEGATIVE_VSS | _00_AD_AREA_MODE_1 |_00_AD_ RESOLUTION_10BIT; ADUL = _FF_AD_ADUL_VALUE; ADLL = _00_AD_ADLL_VALUE; ADS = _03_AD_INPUT_CHANNEL_3; } 同时在 ADC_Start 中添加 while(ADCS); ,等待系统 AD 配置完成,才进行下一步。 void R_ADC_Start(void) { ADCE = 1U; 轻松设计 从瑞萨电子开始 228 ADIF = 0U; /* clear INTADinterrupt flag */ ADMK = 0U; /* enable INTADinterrupt */ ADCS = 1U; /* enable ADconversion */ while(ADCS); } 瑞萨电子低功耗 MCU 实战手册 然后编写中断服务函数,修改 r_cg_adc_user.c 中的函数如下: __interrupt static void r_adc_interrupt(void) { /* Start user code. Do not edit comment generated here */ ADCS = 0U; /* disable ADconversion */ uart_adc_value(); /* End user code. Do not edit comment generated here */ } 中断服务函数调用了  uart_adc_value()函数,此函数原型如下: void uart_adc_value(void) { int s,i; uint8_t string[3]={‘\r’,’\n’}; uint8_t start[3]=”ST”; s=((long)(ADCR>>6)*5000)/1024; uint16_ToString(adc_string_value,0,s); while(R_UART2_Send(start,2)); while(R_UART2_Send(adc_string_value,4)); NOP(); while(R_UART2_Send(string,2)); } 其中的 R_UART2_Send 被我修改过,中间添加了延时函数,否则会传输不正常。 原型修改后如下所示: /************************************************************************************ *********************************** * Function Name: R_UART2_Send * Description : This function sends UART2 data. * Arguments : tx_buf - * transfer buffer pointer * tx_num - * buffer size * Return Value : status - * MD_OK or MD_ARGERROR ************************************************************************************* **********************************/ MD_STATUS R_UART2_Send(uint8_t * consttx_buf, uint16_t tx_num) { 轻松设计 从瑞萨电子开始 229 /* Declare a loop count variable */ uint16_t i; MD_STATUS status = MD_OK; 瑞萨电子低功耗 MCU 实战手册 if (tx_num < 1U) { status = MD_ARGERROR; } else { gp_uart2_tx_address= tx_buf; g_uart2_tx_count = tx_num; SMR10 |= _0001_SAU_BUFFER_EMPTY; STMK2= 1U; /* disable INTST2 interrupt */ while(g_uart2_tx_count) { TXD2 =*gp_uart2_tx_address; /* Allow for the transmission to complete */ for (i=0; i < 6000; i++) { /* Add 1 instruction delay */ NOP(); } gp_uart2_tx_address++; g_uart2_tx_count--; // STMK2 = 0U; /* enable INTST2 interrupt */ } } return (status); } 上述的函数 uart_adc_value()由在主函数中的 while 循环中断调用 adc_get_value()函数触发, adc_get_value 函数原型如下: void adc_get_value(void) { R_ADC_Start(); R_ADC_Stop(); } 上述程序经过改动编译后,调试运行结构都符合预期。然后下载程序到 RL78/G14 中的 FLASH 中, 通过 renesas flash programmer 下载到芯片中,然后修改跳线帽使程序全速运行。 >> 源程序下载 轻松设计 从瑞萨电子开始 230 演示视频 瑞萨电子低功耗 MCU 实战手册 相关帖子:>> 基于 LABVIEW 和 RL78 评估板的心电图采集系统 轻松设计 从瑞萨电子开始 231 瑞萨电子低功耗 MCU 实战手册 6.11 EEworld 论坛网友创意列表 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 DIY 创意名称 感光太阳能实时对焦及最合理利用光源 两轮自动平衡小车 简易节能排插功率计 远程健康监测系统 基于 RL78/G14 的视频采集显示系统 实验室监控系统 基于 RL78/G14 的双轮自平衡小车 基于 RL78/G14 的工业水冷风机控制面板 自组网聊天室 DIY 三彩 LED 摇摇灯 粮库监控系统 瑞萨 RL78/G14 评估板 室内温度 , 采集 , 显示 生命特征侦测手表 智能家居 家用光伏发电智能家居 空气清新机 太阳能跟随系统 基于瑞萨 RL78/G14 的简易示波器 / 信号发生器 自行车码表设计 基于 RL78/G14 的数据采集与红外通讯系统 宠物自动喂食器 具有温湿度显示、报警功能的数字时钟 基于瑞萨 RL78/G14 双轮自平衡小车 做一个 360 度旋转的显示时间的广告灯 基于串口个数字万用表 恒功率探测激光控制器 DIY 家用短距离测距兼近距离有人报警闹钟 餐饮业无线点单系统 DDS 信号发生器 瑞萨电子 RL78/G14 评估板申请 电池供电,精确定时,电机驱动,照相机 基于 RL78/G14 评估板的彩色小球识别系统及语音识别认知分拣 低功耗智能家居安全系统,通过各种传感器的结合使用来达到低成本搞质量的安全系统 基于 RL78/G14 的无感无刷直流电机驱动器设计 基于 RL78 单片机的巡逻小车 具有温湿度显示、报警功能的数字时钟 多功能调试测试助手 轻松设计 从瑞萨电子开始 232 38 基于瑞萨 mcu 的空中鼠标 39 基于 LABVIEW 和 RL78 评估板的心电图采集系统 40 电力载波 LED 灯具调光终端 41 智能引领未来 42 基于瑞萨 RL78 板子的可穿戴便携式心率仪 43 不用电的感温杯设计 44 基于 RL78/G14 的公交一体机 45 基于瑞萨方案的光伏逆变器设计 46 自动花卉浇灌设备 47 基于 3G 的短信报警温度监测设备 48 瑞萨 DIY 49 四轴飞行器中无感无刷直流电机电调设计 50 超声波风速风向传感器 51 带自动清洗功能的油烟机智能控制器 52 基于 RL78 单片机 DALI slave 的实现 53 利用 RL78/G14 在无线传感网中的应用 54 高频非接触智能卡终端 55 噪声定位器 56 基于瑞萨 RL78/G14 的无传感矢量风扇 57 瑞萨单片机摇摇棒 58 基于瑞萨 RL78/G14 的四轴飞行器设计 59 基于互联网的远程智能家居控制系统设计 60 基于 RL78/G14 的多路微小电流 / 功耗检测仪 61 宿舍 ( 楼宇 \ 家庭 ) 智能用电监控、保护系统 62 带编码器的步进电机控制器 63 简易电子元件测试仪 64 能效数据采集 瑞萨电子低功耗 MCU 实战手册 轻松设计 从瑞萨电子开始 233 瑞萨电子低功耗 MCU 实战手册 第三部分 瑞萨电子 MCU FAQ Q1- 软件环境的设置 -e2studio 不能调试 YRPBRL78/G14_e2studio_Debugging_Project 问 题。 第一次使用瑞萨的板子。首先当然是把软件环境搭建好,论坛已经有好多讲软件环境设置的了, 按照网友们的文档,都能够搭建完成,我还是比较习惯于 eclipse,但是在按照官方文档设置过程中, YRPBRL78/G14_e2studio_Debugging_Project 一直不能编译调试,直接提示不能 make   而 YRPBRL78/G14_Stick_Demo_SW 却是没有问题的,设置步骤完全一样。经过反复试验摸索, 修改下 workspace 路径就可以了。 Workspace 必 须 要 设 置 为 系 统 默 认 的 这 个 路 径,YRPBRL78/G14_e2studio_Debugging_ Project 才能正常编译调试,实在是诡异。至此,软件编译调试环境搞定。 轻松设计 从瑞萨电子开始 234 相关帖子:>> 软件调试环境搭建 瑞萨电子低功耗 MCU 实战手册 Q2- 驱动都已经安装完成,程序也可以正常编译,但是下载时总是出现下面的错误?该怎么解决呢? [Direct Error Cause] No response from the CPU. Please confirm the signal of the CLOCK or RESET,WAIT and so on.(E1200416 问题在于你的板子中间的四个跳线跳到 OCD 模式了么,不然是不能连接上进行仿真的。而且如果 程序中用到 txd,rxd 脚的话仿真也不能顺利进行,最好避开换其它串口引脚 相关帖子:>> 怎么总是这个错误呢? Q3- 调试的瑞萨 R7F0C80212 芯片的串口真是各种坎坷,我使用的的是瑞萨官方提供的串口发送 程序。使用这个配到的程序的 PDF 文档可以很顺利的进行软件的仿真。但是使用硬件的时候接收到的 字符全是乱码。>> 更多 手头没有 usb 转 uart,后来想到了上示波器看看。把原来代码改成一直发送,但是固定发送 0xAA,0X55,0XAA,就是 01 交替。总体来说波特率是对的,一个 bit 26us,正好是 38461。停止位稍长, 50us,猜测是不是 stop 位为 1.5,但是设置里面是对的,所以也可能是两个 char 之间的正常延时。最后, 这个串口的发送是 MSB first 的,看了网上对于 uart 的波形,都说是 LSB first,再看代码,SCR01L = _00_SAU_MSB | _10_SAU_STOP_1 | _07_SAU_LENGTH_8;,这意思应该就是 MSBfirst,(去 uart 的 format 里面也可以验证) 所以第一建议大家把第一个改成 _80_SAU_LSB ,应该就正常了。群上已验证。 相关帖子: >>R7F0 官方代码串口乱码的解决方法【已有网友验证】 >>【瑞萨电子 MCU 套件免费试用】+ 调试串口乱码问题解决 轻松设计 从瑞萨电子开始 235 瑞萨电子低功耗 MCU 实战手册 第四部分:瑞萨电子官方参考资料 第七章 R7F0C 应用说明 R7F0CXXX 微控制器(R7F0CXXX 协议 A)编程器篇 - R01AN2442CC0100_R7F0CXXX R7F0CXXX 噪声的相关注意事项及对策 - R01AN2445CC0100_R7F0CXXX R7F0C002 【降低系统功耗】切换 LCD 驱动电压生成方式(电容分割方式→内部升压方式) - R01AN2410CC0100_R7F0C002 R7F0C002 串行阵列单元 3 线串行 I/O(SPI 主发送 / 接收)- R01AN2416CC0100_R7F0C002 R7F0C002 时钟发生电路(时钟切换)- R01AN2448CC0100_R7F0C002 R7F0C002 键中断功能 - R01AN2457CC0100_R7F0C002 R7F0C002 实时时钟 - R01AN2450CC0100_R7F0C002 R7F0C002 低功耗(SNOOZE 模式 CSI 篇)- R01AN2402CC0100_R7F0C002 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c001_002/index.jsp R7F0C004 实时时钟 2 - R01AN2451CC0100_R7F0C004 R7F0C004 串行阵列单元 3 线串行 I/O(SPI 主发送 / 接收)- R01AN2447CC0100_R7F0C004 R7F0C004 时钟发生电路(时钟切换)- R01AN2449CC0100_R7F0C004 R7F0C004 A/D 转换器(软件触发、连续转换模式)- R01AN2455CC0100_R7F0C004 R7F0C004 使用 DMA 生成多重 PWM - R01AN2441CC0100_R7F0C004 R7F0C004 串行阵列单元(SAU)(通过简易 IIC 控制 EEPROM 篇) - R01AN2444CC0100_R7F0C004 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c003_004/index.jsp R7F0C009 ELC 入门 - R01AN2452CC0100_R7F0C009 R7F0C009 键中断功能 - R01AN2456CC0100_R7F0C009 R7F0C009 串行阵列单元 3 线串行 I/O(SPI 主发送 / 接收)- R01AN2446CC0100_R7F0C009 R7F0C009 定时器阵列单元(间隔定时器) - R01AN2439CC0100_R7F0C009 R7F0C009 串行阵列单元(SAU)(通过简易 IIC 控制 EEPROM 篇)- R01AN2443CC0100_R7F0C009 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c008_009/Application_Notes.jsp R7F0C010 ELC 入门 - R01AN2427CC0100_R7F0C010 R7F0C010 D/A 转换器正常模式 - R01AN2428CC0100_R7F0C010 R7F0C010 A/D 转换器(软件触发、连续转换模式)- R01AN2431CC0100_R7F0C010 R7F0C010 电压检测电路(复位模式)- R01AN2436CC0100_R7F0C010 R7F0C010 使用 DMA 生成多重 PWM - R01AN2399CC0100_R7F0C010 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c010/Application_Notes.jsp 轻松设计 从瑞萨电子开始 236 瑞萨电子低功耗 MCU 实战手册 R7F0C014 DTC 入门 - R01AN2423CC0100_R7F0C014 R7F0C014 ELC 入门 - R01AN2426CC0100_R7F0C014 R7F0C014 电压检测电路(复位模式)- R01AN2437CC0100_R7F0C014 R7F0C014 串行阵列单元 3 线串行 I/O(SPI 主发送 / 接收) - R01AN2413CC0100_R7F0C014 R7F0C014 时钟发生电路(时钟切换)- R01AN2418CC0100_R7F0C014 R7F0C014 低功耗(SNOOZE 模式 CSI 篇)- R01AN2401CC0100_R7F0C014 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c014/Application_Notes.jsp R7F0C016 ELC 入门 - R01AN2453CC0100_R7F0C016 R7F0C016 电压检测电路(复位模式) - R01AN2458CC0100_R7F0C016 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c015_016/Application_Notes.jsp R7F0C807 定时器阵列单元(间隔定时器)- R01AN2438CC0100_R7F0C807 R7F0C809 A/D 转换器(软件触发、单次转换模式)- R01AN2454CC0100_R7F0C809 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c806_809/Application_Notes.jsp R7F0C902 初始设定 - R01AN2409CC0100_R7F0C902 R7F0C902 串行阵列单元 3 线串行 I/O(SPI 主发送 / 接收)- R01AN2415CC0100_R7F0C902 R7F0C902 串行阵列单元(SAU)(通过简易 IIC 控制 EEPROM 篇)- R01AN2406CC0100_R7F0C902 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c901_902/soft_tools_index.jsp R7F0C908 初始设定 - R01AN2408CC0100_R7F0C908 R7F0C908 电压检测电路(复位模式)- R01AN2434CC0100_R7F0C908 R7F0C908 电压检测电路(复位模式)- R01AN2434CC0100_R7F0C908 R7F0C908 使用 DMA 生成多重 PWM - R01AN2398CC0100_R7F0C908 R7F0C908 串行阵列单元(SAU)(通过简易 IIC 控制 EEPROM 篇) - R01AN2405CC0100_R7F0C908 http://cn.renesas.com/products/mpumcu/products_for_china/r7f0c903_908/Application_Notes.jsp R7F0C807 定时器阵列单元(脉冲间隔测量)- R01AN2489CC0100_R7F0C807 R7F0C809 串行阵列单元(UART 通信)- R01AN2492CC0100_R7F0C809 R7F0C807 串行阵列单元 3 线串行 I/O(主发送 / 接收)- R01AN2495CC0100_R7F0C807 R7F0C809 串行阵列单元 3 线串行 I/O(从发送 / 接收)- R01AN2498CC0100_R7F0C809 R7F0C002 定时器阵列单元(脉冲间隔测量)-R01AN2491CC0100_R7F0C002 R7F0C002 串行阵列单元 3 线串行 I/O(从发送 / 接收)-R01AN2500CC0100_R7F0C002 R7F0C004 串行阵列单元 3 线串行 I/O(主发送 / 接收)-R01AN2497CC0100_R7F0C004 R7F0C009 定时器阵列单元(脉冲间隔测量)-R01AN2490CC0100_R7F0C009 R7F0C010 串行阵列单元 3 线串行 I/O(从发送 / 接收)-R01AN2499CC0100_R7F0C010 R7F0C014 串行阵列单元(UART 通信)-R01AN2493CC0100_R7F0C014 R7F0C014 安全功能(闪存 CRC 运算功能)-R01AN2501CC0100_R7F0C014 R7F0C019 串行阵列单元(UART 通信)-R01AN2494CC0100_R7F0C019 R7F0C901 串行阵列单元 3 线串行 I/O(主发送 / 接收)-R01AN2496CC0100_R7F0C901 R7F0C901 安全功能(A/D 测试)-R01AN2502CC0100_R7F0C901 R7F0C901 安全功能(频率检测功能)-R01AN2503CC0100_R7F0C901 轻松设计 从瑞萨电子开始 237 第八章 R7F0C 示例 瑞萨电子低功耗 MCU 实战手册 R7F0C807 无线充电发送器控制 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c807-wireless-charging R7F0C807 无线充电电动牙刷控制 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c807-wireless-toothbrush R7F0C809 2 个 MCU 配合控制 16 个按键与 10 位 8 段数码管 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c809-10led-16key R7F0C809 便携式电源 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c809-portable-battery R7F0C802 家用燃气报警器 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c802-residential-gas-alarm R7F0C802 温湿度传感器 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c802-temperature-humidity-sensor R7F0C802 窗户报警器(简化版) http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c802-simplified-window-alarm R7F0C802 红外人感传感器 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c802-human-detector R5F100LE 窗户报警器 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r5f100le-window-alarm R5F100LL 旋转编码器控制的 LCM 显示 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r5f100ll-lcm-with-encoder 轻松设计 从瑞萨电子开始 238 瑞萨电子低功耗 MCU 实战手册 R7F0C002 基于 JJY 编码的电波钟 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c002-radio-controlled-clock R7F0C009 智能饮水机控制 http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c009a2-intelligent-water-dispenser-ctrl R7F0C014B2D 控制尺寸为 128×64 的点阵 LCD http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c014b2d-128-64-lcd-control R7F0C014L2D 控制尺寸为 128×64 的点阵 LCD http://cn.renesas.com/applications/platform_cn/index.jsp?campaign=easygo_ sidebanner_201306#page=demoset-r7f0c014l2d-128-64-lcd-control R7F0C014 使用通用 IO 驱动 LCD 的低成本应用(少引脚) R7F0C014 使用通用 IO 驱动 LCD 的低成本应用(多引脚) R7F0C004 实时时钟计时误差校正的应用 R7F0C807 智能手机空调遥控器 R7F0C004 LCD 电子密码保险箱 R7F0C809 LED 电子密码保险箱 R7F0C001 LCD 显示超声波测距 R7F0C809 LED 显示超声波测距 R7F0C002 电子计步器 R7F0C014 编码器通用接口的应用 轻松设计 从瑞萨电子开始 239 附录 1 编委信息与后记 瑞萨电子低功耗 MCU 实战手册 《瑞萨电子低功耗 MCU 实战手册》 整合了瑞萨电子官方资料,以及 EEworld 诸多热爱瑞萨电子 MCU 工程师实战项目开发资料,使得 初次使 用瑞萨电子 MCU 的工程师能够快速上手开发。 在此,特别感谢:EEworld 社区热心坛友对我们活动的支持与关注,尤其感谢文档中进行设计方案 分享的工程师,为我们分享了大量新鲜、一 手的应用经验。 特别感谢 :瑞萨电子的大力支持。 EEworld 社区 2015.03 轻松设计 从瑞萨电子开始 240 附录 2 版权说明 瑞萨电子低功耗 MCU 实战手册 1、《瑞萨电子低功耗 MCU 实战手册》著作权属瑞萨电子和 EEworld 共同所拥有; 2、本着开源思想,我们授权任何对 瑞萨电子有兴趣的工程师免费下载、复制、传播该书; 3、用于商业用途须经瑞萨电子 和 EEworld 书面同意。 轻松设计 从瑞萨电子开始 241

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。