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

寄存器是什么?怎么操作寄存器點(diǎn)亮LED燈?


嵌入式系統(tǒng):[7.1]--實(shí)驗(yàn)一使用寄存器點(diǎn)亮LED燈(原理)(2)#硬聲創(chuàng)作季

嵌入式系統(tǒng):[7.2]--實(shí)驗(yàn)一使用寄存器點(diǎn)亮LED燈(操作)(1)#硬聲創(chuàng)作季
用寄存器點(diǎn)亮led燈
如何用STM32F429寄存器點(diǎn)亮LED燈
如何使用寄存器點(diǎn)亮LED燈
怎樣使用寄存器點(diǎn)亮LED燈呢
ONE STM32單片機(jī)使用寄存器點(diǎn)亮LED燈

GPIO輸出——使用FSP庫點(diǎn)亮LED燈

評(píng)論