第7章
本章內(nèi)容主要參考以下的芯片硬件手冊:
《RA6M5 Group User’s Manual:Hardware》
《RA4M2 Group User’s Manual:Hardware》
《RA2L1 Group User’s Manual:Hardware》
學習本章時,配合以上芯片手冊中的“19. I/O Ports”章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。本章內(nèi)容涉及到較多寄存器方面的深入內(nèi)容,對于初學者而言這些內(nèi)容豐富也較難理解,但非常有必要細讀研究、夯實基礎。
一般而言,點燈例程就像是剛學習C語言那時的“Hello World”程序那樣,是簡單入門一塊單片機開發(fā)板的經(jīng)典例程。C語言的“Hello World”程序使用printf函數(shù)來打印“Hello World!”字符串,而我們學習這塊開發(fā)板的第一個例程的內(nèi)容卻不是打印“Hello World!”字符串,而是首先要學會控制芯片的引腳。我們在后面的第19章“SCI UART——串口通訊”里才會開始使用到printf函數(shù)來打印字符串,所以接下來就先來學習如何控制芯片的引腳吧!
7.1IOPORT簡介
芯片的引腳可以被粗略地分為IO引腳和非IO引腳。非IO引腳就是電源引腳、晶振引腳等的那些引腳,他們不具備GPIO(通用輸入輸出)功能。而IO引腳是那些具備GPIO功能的引腳,他們可以配置為各種模式、實現(xiàn)各種通用功能。
IO引腳最基本的輸出功能是輸出高、低電平,實現(xiàn)開關控制(比如開關LED燈、繼電器或三極管等);最基本的輸入功能是檢測外部輸入電平(比如通過引腳電平的高低區(qū)分按鍵是否被按下)。
IO引腳還可以用來連接外部設備,與外部設備進行通訊,發(fā)送控制指令,采集傳感器數(shù)據(jù)等等。
IOPORT即I/O Port,在代碼里面為了方便而寫成“IOPORT”,表示輸入輸出端口。IOPORT是RA MCU的一個外設模塊,它用來控制芯片的引腳,對每一個引腳進行詳細的配置。具體地說,IOPORT 可以對引腳進行以下幾個方面的配置:
配置引腳為普通IO功能,即輸入或輸出高電平或者低電平。
控制引腳的輸入上拉電阻。
控制引腳的驅(qū)動能力。
控制引腳是否檢測上升沿/下降沿/雙邊沿。
控制引腳是否作為中斷輸入引腳。
配置引腳為模擬輸入功能或者將引腳在內(nèi)部連接到其他外設模塊。
瑞薩RA系列芯片的IO端口從理論上被分成16個組(0~9,A,B,C,D,E,F(xiàn)),每組有16個引腳(0~15)。然而,實際情況并非是完整的“16個組+每組16個引腳”的配置,而是因?qū)嶋H的芯片型號而異。以野火啟明6M5板子上的R7FA6M5BH3CFC芯片為例,它是LQFP 176-pin封裝,一共有176個引腳,其中的大部分引腳都是可以被IOPORT模塊控制的IO引腳。而這些IO引腳被分成了0~9,A,B共11組引腳(注:A,B是10,11的十六進制表示),每組一般有16個引腳(引腳號為0~15),實際上有些組不到16個引腳。對于引腳數(shù)比較少的封裝(LQFP 144-pin和LQFP 100-pin封裝)來說,芯片的可用IO引腳數(shù)也會相對減少。
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驅(qū)動能力和開漏輸出控制
見圖中標注③處。
DSCR(Port Drive Capability Register)是端口驅(qū)動能力寄存器,它控制IO引腳的驅(qū)動能力。驅(qū)動能
力指的是IO驅(qū)動的電流強度和IO的最大翻轉(zhuǎn)速率。
NCODR(N-Channel Open-Drain Control Register)是開漏輸出控制寄存器,它控制IO引腳是否使能開漏模式。當引腳的GPIO方向被配置為“輸出”時,可以配置IO引腳輸出的模式是推挽輸出還是使能開漏輸出。
7.2.4
IO端口輸出數(shù)據(jù)
見圖中標注④處。
這部分看似比較復雜,但是實際上EOSR、POSR、PORR、EORR的箭頭最終都指向PODR,這意味著操作EOSR、POSR、PORR、EORR這些寄存器,實際上將最終操作的是PODR寄存器。
圖中PODR(Port Output Data Regist)是端口輸出數(shù)據(jù)寄存器,它控制GPIO引腳輸出的電平。當引腳的GPIO方向被配置為“輸出”時,可以配置引腳輸出高電平或者低電平。
圖中EOSR(Event Output Set Register)是事件輸出置位寄存器(該寄存器我們暫且忽略它)。
圖中POSR(Pmn Output Set Register)是端口輸出數(shù)據(jù)寄存器,它控制GPIO引腳輸出為高電平,但卻不能控制輸出低電平。
圖中PORR(Pmn Output Reset Register)是端口輸出數(shù)據(jù)寄存器,它控制GPIO引腳輸出為低電平,但卻不能控制輸出高電平。
圖中EORR(Event Output Reset Register)是事件輸出復位寄存器(該寄存器我們暫且忽略它)。
7.2.5
IO端口輸入數(shù)據(jù)
見圖中標注⑤處。
PIDR(Port Input Data Register)是端口輸入數(shù)據(jù)寄存器,可以通過它讀取GPIO引腳的電平狀態(tài)。
當引腳的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)是事件觸發(fā)選擇,可以通過它來讓引腳檢測邊沿信號,如果檢測到指定信號將觸發(fā)一個事件。
ISEL(IRQ Input Enable)是IRQ輸入使能控制位,可以配置是否產(chǎn)生中斷。
-
led燈
+關注
關注
22文章
1594瀏覽量
109318 -
寄存器
+關注
關注
31文章
5419瀏覽量
123239 -
瑞薩
+關注
關注
36文章
22366瀏覽量
87697 -
C語言
+關注
關注
180文章
7630瀏覽量
140168 -
引腳
+關注
關注
16文章
1539瀏覽量
52279
原文標題:第一個實驗:用寄存器點亮 LED 燈——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(18)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
寄存器是什么?怎么操作寄存器點亮LED燈?




如何用STM32F429寄存器點亮LED燈
如何使用寄存器點亮LED燈
怎樣使用寄存器點亮LED燈呢
ONE STM32單片機使用寄存器點亮LED燈

評論