系列文章目录
1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下
5.Keil配置使用(使用 RASC 生成 Keil 工程)
文章目录
目录
一、问题解决(Usage Error:Too many arguments: R7FA2E1A92DFM)?
前言
前期我们学习了 e2-studio开发环境搭建、keil软件开发环境搭建、RA MCU基础知识学习,今天我们从RA 寄存器入手,开始学习寄存器。往期文章大家可以看下,上面系列文章目录。
一、问题解决(Usage Error:Too many arguments: R7FA2E1A92DFM)?
遇到以上问题,解决方法是 在用keil打开 RASC 的时候,提前先打开 RASC 即可正常导入工程,使用无问题。
二、RA寄存器学习
1.RA寄存器与固件库是什么?
寄存器实际上与 RAM、FLASH 一样,也是芯片内部的一种存储器(Memory)。一般而言,RAM 是程序运行的内存,FLASH 则是用来保存程序本身。寄存器与 RAM、FLASH 等存储器的不同之 处在于:寄存器除了保存了芯片的功能状态之外,还是配置和控制芯片的桥梁,我们可以通过寄 存器配置和操作芯片的功能。
一般而言,我们在对 MCU 芯片进行编程时有两种编程方式,一种是寄存器编程,另外一种是固 件库编程(或者说库函数编程)。那么,固件库又是什么东西?固件库说白了其实是通过寄存器 编程之后的产物,它是对寄存器操作的一种封装,最终提供给开发者一套固定的函数 API 进行调 用。
我们可以从以下两种角度来了解寄存器编程与固件库编程的区别。从程序执行效率的角度来看: 一般而言,寄存器编程生成的程序执行效率高,而固件库编程生成的程序执行效率不如寄存器编 程的。然而从开发者的角度来看:固件库编程使得开发者不必深入理解硬件层面的寄存器细节, 在开发时只需要调用库函数以实现所需的功能,因此可以提高开发者的开发效率。
2.RA CPU里面有什么?
MCU 芯片里面主要有两大部分,一是 CPU 内核,二是片上外设。
ARM Cortex-M0+内核:作为RA2E1的核心处理器,它提供了高效的处理能力和低功耗特性。
存储器:RA2E1包含64KB的Flash存储器和4KB的RAM存储器。
外设接口:RA2E1支持多种外设接口,包括UART、SPI、I2C和ADC等。
中断控制器:RA2E1的中断控制器可以管理多达16个中断源。
时钟和定时器:RA2E1包含多个时钟和定时器模块,包括低功耗内部时钟、外部时钟和多个定时器/计数器。
GPIO:RA2E1具有多个通用输入/输出端口,可用于连接外部设备。
类别 | 外设模块 |
存储器模块(Memory) | Flash、SRAM |
直接内存访问(DMA) | DTC、DMAC |
总线(Bus) | CSC、MPU |
系统(System) | POR/LVD、Reset、Mode control、Power control、 ICU、Clocks、CAC、 Battery backup、Register write protection |
定时器(Timers) | GPT、AGT、RTC、WDT/IWDT |
通讯接口(Communication interfaces) | SCI、IIC、SPI、QSPI、OSPI、SDHI、ETHERC、 CAN-FD、USBHS、USBFS、CEC |
人机交互接口(Human machine interface) | CTSU |
模拟(Analog) | ADC、DAC、TSN |
数据处理(Data processing) | CRC、DOC |
事件链接(Event link) | ELC |
安全(Security) | SCE9 |
可以看到,芯片里面的外设模块有很多。其中部分外设模块是相对简单的,而部分则是非常复杂。
3.存储器映射
我们可以看到,除了寄存器和 SRAM、Flash 的地址空 间区域以外,还存在着其他类型的地址空间区域,比如 QSPI area 和 OSPI area。Reserved area 表 示的是保留区域,尚未用到。
二、用寄存器设置引脚的必备
1.IOPORT介绍
IO 引脚最基本的输出功能是输出高、低电平,实现开关控制(比如开关LED灯、继电器或三极管等); 最基本的输入功能是检测外部输入电平(比如通过引脚电平的高低区分按键是否被按下)。 IO 引脚还可以用来连接外部设备,与外部设备进行通讯,发送控制指令,采集传感器数据等等。
IOPORT 即 I/O Port,在代码里面为了方便而写成 “IOPORT”,表示输入输出端口。 IOPORT 是 RA MCU 的一个外设模块,它用来控制芯片的引脚,对每一个引脚进行详细的配置。
配置:
配置引脚为普通 IO 功能,即输入或输出高电平或者低电平。
控制引脚的输入上拉电阻。
控制引脚的驱动能力。
控制引脚是否检测上升沿/下降沿/双边沿。
控制引脚是否作为中断输入引脚。
配置引脚为模拟输入功能或者将引脚在内部连接到其他外设模块。
瑞萨 RA 系列芯片的 IO 端口从理论上被分成16个组(0~9, A, B, C, D, E, F),每组有16个引脚(0~15)。 然而,实际情况并非是完整的“16个组+每组16个引脚”的配置,而是因实际的芯片型号而异。
2.IOPORT工作方式
通用输入输出(GPIO)模式
输入模式(浮空/上拉)
输出模式(推挽/开漏)
模拟输入功能模式
复用功能模式
注:上图中的 “Pmn”,“m = 0 to 9, A, B”表示的是 IO 端口 m 的范围,而“n = 00 to 15”表示的是 IO 引脚 n 的范围。
3.端口引脚功能选择寄存器
位 | 位域名 | 说明 |
0 | PODR | 端口输出数据
|
1 | PIDR | 端口输入数据
|
2 | PDR | 端口方向
|
4 | PCR | 上拉控制
|
6 | NCODR | 输出开漏控制
|
[11:10] | DSCR | 端口驱动能力
|
[13:12] | EOFR | 上升沿/下降沿事件触发设置
|
14 | ISEL | IRQ 输入中断使能
|
15 | ASEL | 模拟输入使能
|
16 | PMR | 端口模式控制
|
[28:24] | PSEL | 端口引脚复用选择 需要查表选择该引脚的复用功能 |
4.端口输入/输出数据寄存器
端口输出数据寄存器:
位 | 位域名 | 说明 |
---|---|---|
[15:0] | PDR | Pmn 引脚方向
|
[31:16] | PODR | Pmn 引脚输出数据
|
端口输入数据寄存器:
位 | 位域名 | 说明 |
---|---|---|
[15:0] | PIDR | Pmn 引脚输入数据
|
[31:16] | EIDR | 端口事件输入数据
|
总结
以上内容基本上覆盖了基础开发的一些寄存器的讲解,都不是深刻的讲解,只是说对大家一个引导,更加细致的还需大家自行去学习。