介绍
该方案的主控型号为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丢给下一块板。
理解FPGA的基础知识——FPGA专业术语
自然语言处理中极其重要的句法分析
vivo X80系列手机怎么样:双芯协同深挖旗舰性能
智能网联汽车电磁辐射发射测试面临的挑战
基于AN8026控制芯片的变频器电源设计方案
基于瑞萨RL78/G14系列信息管理系统
50种经典电路图分享
SK海力士已重组其CMOS图像传感器(CIS)团队
GPS导航定位系统组成解说
TDA4856各引脚功能电压资料
无线快充成标配,充电宝还有存在的必要吗
佐思汽研发布《2022年汽车仪表和中控显示行业研究报告》
权衡数据传输不同方法的优缺点
制造业大环境下,机器人产业的转折点
C64x+ DSP高速缓存一致性分析与维护
荣耀Note10和黑鲨游戏手机哪个好
针对自动驾驶优化的全新微处理器架构Cortex A65AE
美国对中国制造业的围剿,有几个重要的手段?
PCB板布局中的Power的回路设计
将量子计算与人工智能融合已成为首要任务