目录
一、概述
瑞萨RH850使用记录(一)
瑞萨RH850使用记录(二)
瑞萨RH850使用记录(三)
瑞萨RH850使用记录(四)
瑞萨RH850使用记录(五)
二、时钟
在《RH850/F1K Group User’s Manual: Hardware.pdf》的12章节中,介绍时钟特性:

五个片上时钟振荡器
–振荡频率为16、20和24 MHz的主振荡器(MainOSC)
–振荡频率为32.768 kHz*1的子振荡器(SubOSC)
–标称频率为8 MHz(典型值)的高速内部振荡器(HS IntOSC)
–标称频率为240 kHz(典型值)的低速内部振荡器(LS IntOSC)
–锁相环
CPU时钟
在12.2.2节中
CPUCLK来源于PLL时钟CPLLOUT、MainOSC和EMCLK

其中应急时钟EMCLK由 HS IntOSC提供,若 HS IntOSC未激活,则由 LS IntOSC提供。

锁相环配置
实际应用中,通常是外部晶振,倍频分频后,PLL提供系统时钟。
12.3.5节中,

PLL有MainOSC or HS IntOSC两个输入
PLL有两个时钟输出:“CPLLOUT”和“PPLLOUT”。CPLLOUT是CPU子系统的时钟源之一,PPLLOUT是外围模块的时钟来源之一。
在12.3.5.1节中,给出计算

VCOOUT确定后,CPU时钟可配置为1/4、1/5、1/6
外设时钟固定为1/6

在12.4.2.15节中,寄存器后面有附表

CPU时钟最高120M,外设时钟最高80M
16M晶振作为PLL时钟输入,经过二分频变为8,再60倍频,变为480M。
实际配置:

上面只是配置了锁相环的输出,还需要设置CPU时钟:

疑问
外部晶振必须是16/20/24M????
始终开启区域和隔离区域
时钟频率的计算:关于RH850系统时钟初始化的分析解读
三、FLASH

瑞萨车规级MCU操作Flash没有直接提供寄存器接口,需要安装官方提供的库文件,有三种形式:
FCL:程序存储区仿真库,可使用此库访问程序存储区,一般用于程序自升级操作;
FDL:数据存储区仿真库,可通过此库操作数据区,需要人为定义地址和数据长度,占用Flash空间比EEL略少,但占用RAM大;
EEL:EEPROM仿真库,可使用此库来访问数据内存区,该方法类似于访问外部EEPROM,使用此库时,不用管理对数据区闪存写和擦除操作,其占用Flash容量大,需配合FDL库来操作。
1. code flash

FCL
根据连接进入官网,添加链接描述

下载解压后只有一个RENESAS_FCL_RH850_T01_V2.13.exe。安装后

开关中断
#define __disable_irq() DI()
#define __enable_irq() EI()
参考链接
基于IAR for RH850的瑞萨RH850 FCL库用法介绍
【经验】使用CS+对RH850F1KM-S1的FCL的配置使用以及相关的经验技巧(一)
【经验】使用CS+对瑞萨RH850F1KM-S1的FCL的配置使用及相关经验技巧(二)
RH850 FCL的使用
2. data Flash

64K
FDL
四、RAM
在《RH850/F1K Group User’s Manual: Hardware.pdf》的38章节中,介绍RAM特性:
RH850/F1K包括以下RAM:
–本地RAM
本地RAM可以高速访问。在DeepSTOP模式下,本地RAM中的值不会保留。
–保留RAM
保留RAM是本地RAM的一部分,也可以高速访问。保留RAM中的值在DeepSTOP模式下保留。
此外,除了写访问之外,即使电源电压(REGVCC)降至POC电压以下,只要电压不降至RAM保持电压(VVLVI)以下,保持RAM中的数据就会被保留。

1.是否需要选择用哪个RAM
不管LRAM还是CRAM,在使用前都需要进行初始化,如果使用没有初始化的RAM空间,读数据时可能产生ECC校验错误。
RAM初始化一般在系统启动阶段(跳到main函数之前)通过汇编代码完成。 软件复位(非冷启动,Power On
Reset)系统重启后,没有初始化的RAM中数据还保存上一次的值。
– 【RH850U2A芯片】RAM and Flash介绍
Self 和 CPU
✅ 一句话结论
Self:当前 CPU “自己访问自己本地 RAM”的地址视图(最快)
CPU:通过系统总线访问该 RAM 的地址视图(可被其他核/模块访问)
👉 本质是同一块 RAM,只是地址映射不同
🔍 详细解释
RH850(尤其 F1K)是支持多核/多总线访问架构的,所以:
1️⃣ Self(本地视图)
例如:
Local RAM (Self)
Retention RAM (Self)
含义:
👉 CPU 自己直接访问自己的 RAM
特点:
访问路径最短(本地)
速度最快
无总线竞争
通常用于:
栈(stack)
中断变量
高频访问数据
2️⃣ CPU(系统视图)
例如:
Local RAM (CPU)
Retention RAM (CPU)
含义:
👉 通过系统总线访问这块 RAM
特点:
可以被其他核 / DMA / 外设访问
走系统总线(有仲裁)
速度略慢
🧠 用一个比喻理解
你可以把 RAM 想成一间房间:
Self 地址 = 房间里的“内部通道”(你自己走)
CPU 地址 = 走走廊/大门(别人也能进来)
👉 房间还是同一间,但入口不同
🔥 为什么会有两套地址?
因为 RH850 支持:
多核(有的型号)
DMA / 外设访问 RAM
实时性要求高(要区分本地 vs 总线访问)
所以:
👉 同一块 RAM 会映射两套地址:
一套给“自己用”(Self)
一套给“系统用”(CPU)
备份RAM
-
修改section

-
修改程序
#pragma section r0_disp32 "set" unsigned char my_buffer[100]; #pragma section default
五、GPIO
《RH850_F1K Group User’s Manual_ Hardware.pdf》
GPIO资源如下:

普通IO

Output 1,初始化时直接拉高

中断
把P8_2管脚设置为中断,查看管脚:

不需要自己配置寄存器,选择复用功能。
在生成代码时,不需要在Port Function中去选择输入输出,只需要开启对应中断,选择管脚,设置触发和优先级

生成代码后,需要在主函数内开启中断:
R_INTP9_Start
在r_cg_intc_user.c中找到中断函数,添加需要进行的操作。
注意
1.不是每个IO都能配置中断,需要查看管脚定义确认。
2.RX/INTPx中断,如:

像这种RX管脚带INTP的,是指RX和INTP绑定了,应用场景如休眠前是RX功能,休眠后是INTP功能,注意,这种不能单独作为INTP使用,必须和RX绑定
复用功能的选择
《RH850_F1K Group User’s Manual_ Hardware.pdf》中可以快速查看管脚支持的复用功能:

到对应章节,查看

也可以查阅 《F1x_pinout_v0.30 (internal) - Small V1.3.xlsx》
复用功能由PFCAEn_m、PFCEn_m、PFCn_m、PMn_m四个寄存器共同决定:

CAN0TX四个寄存值分别为:0 0 1 1
CAN0RX四个寄存值分别为:0 0 1 0
以下是一段初始化程序:
/* Set CAN0RX(P0_1) pin */
PORT.PIBC0 &= _PORT_CLEAR_BIT1; // 0: Input buffer disabled
PORT.PBDC0 &= _PORT_CLEAR_BIT1; // 0: Bidirectional mode disabled
PORT.PM0 |= _PORT_SET_BIT1; // d.限制复用选择input,即CAN0TX
PORT.PMC0 &= _PORT_CLEAR_BIT1;
PORT.PFC0 &= _PORT_CLEAR_BIT1; // c.限制复用选择7
PORT.PFCE0 |= _PORT_SET_BIT1; // b.限制复用选择范围7-禁止
PORT.PFCAE0 |= _PORT_SET_BIT1; // a.限制复用选择范围5-禁止
PORT.PMC0 |= _PORT_SET_BIT1; // 选择为复用模式
/* Set CAN0TX(P0_0) pin */
PORT.PIBC0 &= _PORT_CLEAR_BIT0;
PORT.PBDC0 &= _PORT_CLEAR_BIT0;
PORT.PM0 |= _PORT_SET_BIT0;
PORT.PMC0 &= _PORT_CLEAR_BIT0;
PORT.PFC0 |= _PORT_SET_BIT0; // c.限制复用选择2
PORT.PFCE0 &= _PORT_CLEAR_BIT0; // b.限制复用选择范围1-2
PORT.PFCAE0 &= _PORT_CLEAR_BIT0; // a.限制复用选择范围1-4
PORT.PMC0 |= _PORT_SET_BIT0; // 选择为复用模式
PORT.PM0 &= _PORT_CLEAR_BIT0; // d.限制复用选择output,即CAN0TX
高阻
休眠时,为了更低功耗
理论上,除了唤醒要用的管脚,其他管脚全部配成Hiz
模式配置成dio,方向选择输入,不勾选input buffer就是高阻状态
PORT.PMC1 &= _PORT_CLEAR_BIT4; 处于端口模式还是处于复用模式
PORT.PIBC1 &= _PORT_CLEAR_BIT4; 0: Input buffer disabled 1: Input buffer enabled
PORT.PBDC1 &= _PORT_CLEAR_BIT4; 在输出模式下启用输入缓冲区
PORT.PFC1 &= _PORT_CLEAR_BIT4;
PORT.PFCE1 &= _PORT_CLEAR_BIT4;
PORT.PFCAE1 &= _PORT_CLEAR_BIT4;
PORT.PM1 |= _PORT_SET_BIT4;
按照手册描述,大部分普通引脚在复位后默认是高阻
六、AD
同样,不需要在Port Function中去选择输入输出,只需要在ADC中,开启

生成代码后在r_cg_adc.c中有以下接口:
R_ADC0_Create
R_ADC0_Halt
R_ADC0_ScanGroup1_Start
R_ADC0_ScanGroup1_OperationOn
R_ADC0_ScanGroup1_GetResult
需要首先开启AD转换
R_ADC0_ScanGroup1_OperationOn();
R_ADC0_ScanGroup1_Start();
然后通过 R_ADC0_ScanGroup1_GetResult 获取转换结果
ADC1
需要先设置时钟,之后才能开启:

注意
1.管脚不要悬空,电压会非常不准确
2.通道二者选其一。如选择10bit精度后,就无法选择不带s的那种接口了


:时钟、FLASH(开关中断)、RAM、GPIO、AD&spm=1001.2101.3001.5002&articleId=144443428&d=1&t=3&u=675a4a46ada549c2a245383ff7a09260)
1403

被折叠的 条评论
为什么被折叠?



