基于瑞萨RL78/G14系列信息管理系统

描述

 

介绍

该方案的主控型号为RL78/G14系列的R5F104LJ,64pin。其Flash ROM 256k,RAM 24k,Data Flash 8k。主要用到的资源为Data Flash、串口以及高速片上振荡器。-20~85℃范围内高速片上振荡器的误差为±1%。

RL78/G14微控制器平衡了业界最低水平的消费电流(CPU:66 μA/MHz,待机(STOP):240 nA)和51.2 DMIPS(32 MHz)的高计算性能。内置的高功能定时器支持使用三相互补的PWM输出的三相电机控制。它们有一个片上振荡器、数据闪存、A/D和D/A转换器、比较器等。内置的安全功能(检测硬件非法操作的功能)能够支持家用电器安全标准(IEC/UL 60730)。这些微控制器具有广泛的30至100引脚阵容和高达512KB的片上闪存,可用于各种应用,如电机控制和消费及工业设备。

主要内容

一、实现目标示意

瑞萨

1将两块开发板及上位机如上图示意,通过串口连接。

2串口助手发送信息给A板(消息接收协议自定)。

1)A板内未保存序号,则接受当前序号,保存到dataflash中,然后返回A板保存的序号发给串口助手;

2)A板保存了序号,则回复电脑自己的序号,并将接收到的序号发送给B板,B板接收序号;

3)如果B板本身无序号,则保存接收到的序号,然后将B板的序号回复给A板,A板再将接收到的B板序号回复给上位机;

4)如果B板本身有序号,则不处理当前序号,并将B板本身的序号回复给A板,A板再将接收到B板的序号回复给上位机。

二、软件配置

开发环境:CS+ for CC

芯片型号:R5F104LJ

1. 工程配置

1)启动CS+ for CC,新建工程

按照下图箭头指向的顺序所示,完成工程的新建。

瑞萨

2)双击“Clock Generator”,进行时钟配置

【1】Pin assignment

按照下图箭头指向的顺序所示,设置PIOR register,默认:PIOR = 0x00 (设置外设对应的IO重定向寄存器)。

瑞萨

【2】Clock setting

按照下图箭头指向的顺序所示,使用内部振荡器为32MHz,其余不变。

瑞萨

【3】On-chip debug setting

按照下图箭头指向的顺序所示,选择使用在线调试,具体根据个人所用的仿真器进行设置,此处我用的是E2 lite(黄色方框内)。

瑞萨

3)双击“Serial”,进行串行通讯接口配置

【1】SAU0→Channel0/2

按照下图箭头指向的顺序所示,设置[SAU0],点击[Channel 0]选项卡,设置[UART0]; 选择“Transmit/receive function“;点击[Channel 2]选项卡,设置[UART1]; 选择“Transmit/receive function“。

瑞萨

【2】SAU0→UART0/1

A.按照下图箭头指向的顺序所示,设置接收。分别设置“数据长度”,“数据传输方向”,“校验位”,“波特率”,此处皆为默认设置,后续可根据实际情况更改。

注意:此处不取消接收错误callback函数设置(黄色方框内)。

瑞萨

B.按照下图箭头指向的顺序所示,设置发送。分别设置“数据长度”,“数据传输方向”,“校验位”,“波特率”,此处皆为默认设置,后续可根据实际情况更改。

瑞萨

由于任务是两块板子之间的连接,所以我们还要照葫芦画瓢地再配置一下UART1。

4)点击“Generate Code”,生成代码。

瑞萨

根据设置生成的代码如黄方框所示。

2. 添加库

Data flash,直译数据闪存,其实就是单片机留给用户存储自己数据的地方,类似于有些51单片机内部的EEPROM,在CS+中也是可以直接配置生成库函数的,但是不能直接使用!需要安装FDL库。

1)新建一个新的文件夹,命名为lib用来存放库文件

右击File→Add→Add New Category,将之前下载的库文件加入其中,同理将EE.c和EE.h也加入file中,如下图所示。

瑞萨

2)双击“CC-RL(Build Tool)”,在“Common Options”中进行一些更改。

瑞萨

【1】将库文件加入其中后,我们可以对黄色方框内进行查看,看库路径是否正确。

【2】将红色方框内的优化选项更改一下。

3)“CC-RL(Build Tool)”中“Compile Options”

按照下图箭头指向的顺序所示,设置”Memory Model”、”C Language”

瑞萨

4)“CC-RL(Build Tool)”中“Link Options”

按照下图箭头指向的顺序所示,设置“Section”、“Others”。

瑞萨

3. 代码调用及编写

1)基于代码生成工具生成的程序框架及函数,实现UART通讯。

此处有一点需要注意:在r_main.c中增加“#include "EE.h" ”(即黄色方框内容),可以较为方便的调用定义及申明。

瑞萨

2)启动串口

修改《r_main.c》文件,在主程序中增加R_UART1_Start();R_UART0_Start();。

瑞萨

3)串口发送代码编写

瑞萨

4)判断发送的信息是否符合通信协议

瑞萨

三、运行现象

1)代码编译成功后运行,点击view→memory→memory1

瑞萨

在“Move when Stop”后面方框内输入0xf1000,点击“move”,跳转到对应位置。

瑞萨

2)如果我们发现此位置有值,我们需要用RFP先擦除。

3)再次运行程序,查看0xf1000处是否为空白(FF),空白即可开始实验。

瑞萨

4)打开串口工具,打开串口,在发送端输入c0 41 0d 0a程序运行后点击发送。黄色方框内不要忘记勾上。

瑞萨

5)实验现象

【1】发送41,A板处于空闲状态,A板接收并发送41给电脑。

瑞萨

【2】在memory中查看,A板0xf1000处已被写入41。

瑞萨

【3】发送42,A板已有内存值且两值不等,A板将自己的内存值41发给电脑并把42发送给B板,B板空闲接收42,并发送42返回值。(如果发送的值与A板内存储的相同,那么就不会继续发送到B板。)

瑞萨

【4】发送43,A板已有内存值且两值不等,A板将自己的内存值41发给电脑并把43发送给B板,B板已有内存值且两值不等,B板返回42给A板,将43丢给下一块板。

瑞萨

 

审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分