第7章
本章内容主要参考以下的芯片硬件手册:
《RA6M5 Group User’s Manual:Hardware》
《RA4M2 Group User’s Manual:Hardware》
《RA2L1 Group User’s Manual:Hardware》
学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
一般而言,点灯例程就像是刚学习C语言那时的“Hello World”程序那样,是简单入门一块单片机开发板的经典例程。C语言的“Hello World”程序使用printf函数来打印“Hello World!”字符串,而我们学习这块开发板的第一个例程的内容却不是打印“Hello World!”字符串,而是首先要学会控制芯片的引脚。我们在后面的第19章“SCI UART——串口通讯”里才会开始使用到printf函数来打印字符串,所以接下来就先来学习如何控制芯片的引脚吧!
7.1IOPORT简介
芯片的引脚可以被粗略地分为IO引脚和非IO引脚。非IO引脚就是电源引脚、晶振引脚等的那些引脚,他们不具备GPIO(通用输入输出)功能。而IO引脚是那些具备GPIO功能的引脚,他们可以配置为各种模式、实现各种通用功能。
IO引脚最基本的输出功能是输出高、低电平,实现开关控制(比如开关LED灯、继电器或三极管等);最基本的输入功能是检测外部输入电平(比如通过引脚电平的高低区分按键是否被按下)。
IO引脚还可以用来连接外部设备,与外部设备进行通讯,发送控制指令,采集传感器数据等等。
IOPORT即I/O Port,在代码里面为了方便而写成“IOPORT”,表示输入输出端口。IOPORT是RA MCU的一个外设模块,它用来控制芯片的引脚,对每一个引脚进行详细的配置。具体地说,IOPORT 可以对引脚进行以下几个方面的配置:
配置引脚为普通IO功能,即输入或输出高电平或者低电平。
控制引脚的输入上拉电阻。
控制引脚的驱动能力。
控制引脚是否检测上升沿/下降沿/双边沿。
控制引脚是否作为中断输入引脚。
配置引脚为模拟输入功能或者将引脚在内部连接到其他外设模块。
瑞萨RA系列芯片的IO端口从理论上被分成16个组(0~9,A,B,C,D,E,F),每组有16个引脚(0~15)。然而,实际情况并非是完整的“16个组+每组16个引脚”的配置,而是因实际的芯片型号而异。以野火启明6M5板子上的R7FA6M5BH3CFC芯片为例,它是LQFP 176-pin封装,一共有176个引脚,其中的大部分引脚都是可以被IOPORT模块控制的IO引脚。而这些IO引脚被分成了0~9,A,B共11组引脚(注:A,B是10,11的十六进制表示),每组一般有16个引脚(引脚号为0~15),实际上有些组不到16个引脚。对于引脚数比较少的封装(LQFP 144-pin和LQFP 100-pin封装)来说,芯片的可用IO引脚数也会相对减少。
7.2IOPORT的框图分析
RA6M5、RA4M2、RA2L1这三者的IOPORT模块框图结构是基本一致的。
以RA6M5为例,下图是RA6M5的外设IOPORT的功能结构框图,标有字母A处表示的是芯片实际引出 IO引脚。
接下来我们对IOPORT外设的结构框图进行分析,将不难得出IOPORT有如下几种工作模式:
通用输入输出(GPIO)模式
输入模式(浮空/上拉)
输出模式(推挽/开漏)
模拟输入功能模式
复用功能模式
7.2.1
IO端口方向
见图中标注①处。
PDR(Port Direction Register)是端口方向寄存器,它控制端口的GPIO方向。当IO引脚需要控制输出高电平或者低电平时,可设置引脚的GPIO方向为GPIO输出;而当需要读取IO引脚的电平时,可设置引脚的GPIO方向为GPIO输入。
7.2.2
IO输入上拉控制
见图中标注②处。
PCR(Pull-up Control Register)是上拉控制寄存器,它控制IO引脚的GPIO输入是否使能上拉。当设置为允许上拉时,实际上会使得图中字母B处的弱上拉电阻连接到VCC电源正极,从而使得引脚处于弱上拉输入模式。需要注意的是,当引脚的GPIO方向被配置为“输入”时,才可以设置使用弱上拉电阻。从上图还可以看出,RA6M5的IO端口是没有下拉电阻的。
7.2.3
IO驱动能力和开漏输出控制
见图中标注③处。
DSCR(Port Drive Capability Register)是端口驱动能力寄存器,它控制IO引脚的驱动能力。驱动能
力指的是IO驱动的电流强度和IO的最大翻转速率。
NCODR(N-Channel Open-Drain Control Register)是开漏输出控制寄存器,它控制IO引脚是否使能开漏模式。当引脚的GPIO方向被配置为“输出”时,可以配置IO引脚输出的模式是推挽输出还是使能开漏输出。
7.2.4
IO端口输出数据
见图中标注④处。
这部分看似比较复杂,但是实际上EOSR、POSR、PORR、EORR的箭头最终都指向PODR,这意味着操作EOSR、POSR、PORR、EORR这些寄存器,实际上将最终操作的是PODR寄存器。
图中PODR(Port Output Data Regist)是端口输出数据寄存器,它控制GPIO引脚输出的电平。当引脚的GPIO方向被配置为“输出”时,可以配置引脚输出高电平或者低电平。
图中EOSR(Event Output Set Register)是事件输出置位寄存器(该寄存器我们暂且忽略它)。
图中POSR(Pmn Output Set Register)是端口输出数据寄存器,它控制GPIO引脚输出为高电平,但却不能控制输出低电平。
图中PORR(Pmn Output Reset Register)是端口输出数据寄存器,它控制GPIO引脚输出为低电平,但却不能控制输出高电平。
图中EORR(Event Output Reset Register)是事件输出复位寄存器(该寄存器我们暂且忽略它)。
7.2.5
IO端口输入数据
见图中标注⑤处。
PIDR(Port Input Data Register)是端口输入数据寄存器,可以通过它读取GPIO引脚的电平状态。
当引脚的GPIO方向被配置为“输入”时,程序可以读出输入引脚的电平是高电平还是低电平。
7.2.6
模拟输入模式
见图中标注⑥处。
ASEL(Analog Input Enable)是模拟输入选择控制位,可以通过它来将引脚配置为模拟输入模式。
当使用ADC功能时,需将引脚配置为模拟输入模式。
7.2.7
端口模式控制和外设复用选择
见图中标注⑦处。
PMR(Port Mode Control)是端口模式控制位,可以通过它来将引脚配置为GPIO输入/输出模式,
或者配置作为复用外设功能引脚。
PSEL(Peripheral Select)是外设复用选择,可以通过它来选择将引脚连接到某一个外设功能上。
7.2.8
IO边沿检测与中断
见图中标注⑧处。
EOFR(Event on Falling/Event on Rising)是事件触发选择,可以通过它来让引脚检测边沿信号,如果检测到指定信号将触发一个事件。
ISEL(IRQ Input Enable)是IRQ输入使能控制位,可以配置是否产生中断。
-
led灯
+关注
关注
22文章
1596浏览量
109867 -
寄存器
+关注
关注
31文章
5439浏览量
124819 -
瑞萨
+关注
关注
36文章
22389浏览量
88119 -
C语言
+关注
关注
180文章
7633浏览量
142013 -
引脚
+关注
关注
16文章
1769浏览量
53087
原文标题:第一个实验:用寄存器点亮 LED 灯——瑞萨RA系列FSP库开发实战指南(18)
文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
瑞萨RA系列FSP库开发实战指南(19)使用寄存器点亮LED灯



如何用STM32F429寄存器点亮LED灯
如何使用寄存器点亮LED灯
怎样使用寄存器点亮LED灯呢
ONE STM32单片机使用寄存器点亮LED灯

评论