介绍
该方案的主控型号为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丢给下一块板。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !