《瑞薩RA產(chǎn)品家族初學(xué)者指南》系列文章已收錄成合集,歡迎點(diǎn)擊上方查看合集并訂閱!
10. 使用“靈活配置軟件包”通過(guò)
您將在本章中學(xué)到以下內(nèi)容:
在本部分,我們將使用瑞薩RA產(chǎn)品家族微控制器的“靈活配置軟件包”(FSP)的USB中間件,在每次按下用戶(hù)按鈕S1時(shí),將LED2的當(dāng)前狀態(tài)作為文本字符串通過(guò)USB端口發(fā)送到Windows工作站。與第9章不同的是,我們?cè)诖藢?shí)驗(yàn)中不使用實(shí)時(shí)操作系統(tǒng)和信號(hào)量,而使用全局變量來(lái)指示按鈕開(kāi)關(guān)已激活和綠色LED2的狀態(tài)已更改。
LED狀態(tài)(ON或OFF)更新、USB端口的寫(xiě)操作,以及保存按鈕按下時(shí)的信息的全局變量更新將在IRQ10的回調(diào)例程中完成。端口的寫(xiě)操作將觸發(fā)USB傳輸,將LED的相關(guān)信息發(fā)送給主機(jī)。返回到hal_entry()函數(shù)內(nèi)部的無(wú)限循環(huán)后,將處理USB事件,并通過(guò)將全局變量設(shè)置為“false”和將下一個(gè)字符串及下一個(gè)LED電平分配給各自的變量來(lái)準(zhǔn)備LED狀態(tài)的下次更新。圖10-1詳細(xì)描繪了該程序的流程和中斷回調(diào)函數(shù)的流程。
該端口的大部分設(shè)置將在FSP配置器的圖形界面中完成,應(yīng)用程序程序員只需完成極少的編程工作。在執(zhí)行該練習(xí)中的編程任務(wù)時(shí),可再次體驗(yàn)到FSP給用戶(hù)提供的便利,即便在構(gòu)建如USB之類(lèi)的復(fù)雜通信系統(tǒng)時(shí)也非常方便。
圖10-1:本章練習(xí)的流程圖
本章目錄
-
使用FSP配置器設(shè)置USB端口
-
創(chuàng)建代碼
-
在主機(jī)端設(shè)置接收器
10.1 使用FSP配置器設(shè)置USB端口
如果在完成上次練習(xí)后已關(guān)閉e2 studio,請(qǐng)?jiān)俅未蜷_(kāi)并創(chuàng)建一個(gè)新項(xiàng)目。到目前為止您應(yīng)該已經(jīng)掌握了RA的相關(guān)知識(shí),這里將不再贅述每個(gè)步驟,因?yàn)榇蟛糠中枰獔?zhí)行的任務(wù)在之前的實(shí)驗(yàn)中已經(jīng)做過(guò)介紹。將新項(xiàng)目命名為MyUSBProject,在進(jìn)入“Device and Tools Selection”(器件和工具選擇)屏幕后,選擇EK-RA6M4作為電路板,我們將再次使用該評(píng)估板進(jìn)行實(shí)驗(yàn)。在“Project Type Selection”(項(xiàng)目類(lèi)型選擇)頁(yè)面,確保“Flat (Non-TrustZone) Project”(簡(jiǎn)單(非TrustZone)項(xiàng)目)處于啟用狀態(tài),并確保“RTOS Selection”(RTOS選擇)下的“No RTOS”(無(wú)RTOS)條目已激活。最后,在“Project Template Selection”(項(xiàng)目模板選擇)頁(yè)面上選擇“Bare Metal – Minimal”(裸機(jī) – 最小化),然后單擊“Finish”(完成)。
在項(xiàng)目配置器已創(chuàng)建項(xiàng)目并顯示FSP配置器后,直接轉(zhuǎn)到“Stacks”(堆)選項(xiàng)卡。首先,我們需要添加用于連接到用戶(hù)按鈕S1的外部中斷的模塊。在“HAL/Common Stacks”(HAL/通用堆棧)窗格上,單擊“New Stack”(新堆),然后選擇“Driver→Input →External IRQ Driver on r_icu”(驅(qū)動(dòng)程序 → 輸入 → r_icu 上的外部IRQ驅(qū)動(dòng)程序)。
圖10-2:首先添加S1中斷的驅(qū)動(dòng)程序
在“Properties”(屬性)視圖中,將中斷的“Name”(名稱(chēng))修改為g_external_irq10,將它的“Channel”(通道)修改為10,以作為中斷使用的通道。啟用“Digital Filtering”(數(shù)字濾波)并將“Trigger”(觸發(fā)器)設(shè)置為“Falling”(下降)。這有助于消除開(kāi)關(guān)的抖動(dòng)。最后,需要提供用于該中斷的回調(diào)函數(shù)的名稱(chēng):將其命名為external_irq10_callback,并將“Priority”(優(yōu)先級(jí))改為14,因?yàn)槲覀円_保USB中斷的優(yōu)先級(jí)高于按鈕(參見(jiàn)圖10-3)。
圖10-3:以上是IRQ10的必要設(shè)置
接下來(lái),將USB外設(shè)通信設(shè)備類(lèi)(PCDC)的中間件添加到系統(tǒng)中:創(chuàng)建新堆棧,并選擇“Middleware→USB→USB PCDC driver on r_usb_pcdc”(中間件→USB→ r_usb_pcdc上的USB PCDC驅(qū)動(dòng)程序)(參見(jiàn)圖10-4)。
圖10-4:需要將USB外設(shè)通信設(shè)備類(lèi)驅(qū)動(dòng)程序的中間件添加到系統(tǒng)中
此操作將四個(gè)模塊添加到項(xiàng)目中:用于全速USB端口的實(shí)際PCDC驅(qū)動(dòng)程序(用于實(shí)現(xiàn)應(yīng)用程序級(jí)USB PCDC接口),以及r_usb_basic上的基本USB驅(qū)動(dòng)程序。堆中還顯示兩個(gè)具有粉紅色橫條的模塊。這些模塊用于添加可選的直接內(nèi)存訪(fǎng)問(wèn)控制器(DMAC)驅(qū)動(dòng)程序,以傳輸或接收數(shù)據(jù)。我們將使用USB寫(xiě)入API函數(shù)直接發(fā)送狀態(tài)消息,因此無(wú)需添加它們。關(guān)于模塊的其他色彩色條的含義,只需記住以下規(guī)則:灰色標(biāo)記僅可由一個(gè)其他模塊實(shí)例引用的模塊實(shí)例,藍(lán)色標(biāo)記可由多個(gè)其他模塊實(shí)例(甚至跨多個(gè)堆)引用的通用模塊實(shí)例。通過(guò)彩色條中的小三角形,可以展開(kāi)或折疊模塊樹(shù)。
將USB端口作為PCDC設(shè)備來(lái)實(shí)現(xiàn),可以將USB端口用作虛擬COM端口,從而簡(jiǎn)化主機(jī)端的接收器設(shè)置,因?yàn)樵谧?cè)到Windows后,便可通過(guò)終端應(yīng)用程序進(jìn)行數(shù)據(jù)通信。這就是我們與評(píng)估板進(jìn)行對(duì)話(huà)的方式。
添加所有堆棧后,“Stacks”(堆)窗格的外觀如圖10-5所示:
圖10-5:添加USB驅(qū)動(dòng)程序后“堆”窗格的外觀
只需要對(duì)基本USB驅(qū)動(dòng)程序的“Properties”(屬性)做出兩處更改。突出顯示“g_basic0USBDriver on r_usb_basic”(r_usb_basic上的g_basic0 USB驅(qū)動(dòng)程序)模塊,并在“Properties”(屬性)視圖的“Common”(通用)下,將“Continuous Transfer Mode”(連續(xù)傳輸模式)從“Disabled”(已禁用)切換為“Enabled”(已啟用),將“DMA Support”(DMA支持)從“Enabled”(已啟用)切換為“Disabled”(已禁用)。記錄“g_basic0USBDriver on r_usb_basic”(r_usb_basic上的g_basic0 USB驅(qū)動(dòng)程序)部分的“USB Descriptor”(USB描述符)的名稱(chēng):g_usb_descriptor。稍后將創(chuàng)建一個(gè)具有該名稱(chēng)的結(jié)構(gòu),以描述系統(tǒng)USB的功能,因此應(yīng)記住這個(gè)名稱(chēng)。圖10-6顯示了修改后模塊的屬性。
圖10-6:進(jìn)行必要更改后的連續(xù)傳輸設(shè)置。記錄“USB Descriptor”(USB描述符)的名稱(chēng)
圖10-7顯示了在完成所有更改后“Stacks”(堆)選項(xiàng)卡的外觀:
圖10-7:完成所有增加內(nèi)容和修改后,“Stacks”(堆)選項(xiàng)卡的外觀
在“Stacks”(堆)選項(xiàng)卡中完成所有設(shè)置后,現(xiàn)在需要設(shè)置USB端口的正確操作模式。為此,請(qǐng)切換到“Pins”(引腳)選項(xiàng)卡,在“Pin Selection”(引腳選擇)窗格中,首先展開(kāi)“Peripherals”(外設(shè))下拉列表,然后展開(kāi)“Connectivity: USB”(連接:USB)列表。在“Pin Configuration”(引腳配置)窗格中,將“Operation Mode”(操作模式)從“Custom”(自定義)修改為“Device”(器件),作為要使用的模式。注意,輸入/輸出引腳分配將相應(yīng)改變。
圖10-8:USB端口將使用器件模式,請(qǐng)進(jìn)行相應(yīng)更改
現(xiàn)在還差一步就完成了端口的設(shè)置。最后一步是啟用“USB clock (UCLK)”(USB時(shí)鐘 (UCLK)),用作全速(FS)USB模塊的工作時(shí)鐘,并將其設(shè)置為所需的48 MHz頻率。為此,激活“Clocks”(時(shí)鐘)選項(xiàng)卡,可通過(guò)該選項(xiàng)卡配置時(shí)鐘生成電路。首先啟用USB時(shí)鐘,方法為:將靠近窗格底部的UCLK從“Disabled”(已禁用)更改為“Enabled”(已啟用),并選擇PLL2作為源。接下來(lái),啟用PLL2,它是USB模塊的專(zhuān)用PLL,并選擇高速片上振蕩器(HOCO)作為源。請(qǐng)注意,此時(shí)給定的UCLK頻率為40 MHz,并以紅色突出顯示,因?yàn)閁SB要求的頻率為48 MHz。將PLL2的乘數(shù)值更改為24,以便將PLL2的頻率更改為240 MHz。再使UCLK的除數(shù)5,此時(shí)UCLK的頻率已正確設(shè)置為48 MHz。這里,采用Arm Cortex-M33內(nèi)核的RA MCU系列凸顯了巨大的優(yōu)勢(shì):微控制器上還有第二個(gè)PLL,可以將USB的時(shí)鐘頻率設(shè)置為48 MHz,同時(shí)以最高速度200MHz運(yùn)行MCU。
最后,將標(biāo)準(zhǔn)PLL的源從XTAL更改為HOCO。如果不確定要更改哪些字段,請(qǐng)參見(jiàn)圖10-9。
圖10-9:USB FS需要使用48 MHz的時(shí)鐘,因此需要相應(yīng)地更改時(shí)鐘生成電路。必要的更改已突出顯示
至此,已經(jīng)完成了必須在FSP配置器中進(jìn)行的設(shè)置。保存配置,然后單擊屏幕右上角的“Generate Project Content”(生成項(xiàng)目?jī)?nèi)容)按鈕,以提取文件并創(chuàng)建所需的設(shè)置。最后一步,再次切換到C/C++透視圖。
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第10章(1)
文章出處:【微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17135瀏覽量
351031 -
瑞薩
+關(guān)注
關(guān)注
35文章
22309瀏覽量
86255
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第10章(1)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論