CPK-RA6M4評估板入門(mén)指南
要點(diǎn)
CPK-RA6M4是用于RA6M4單片機的評估板套件。該套件可通過(guò)靈活配置軟件包(FSP)和e2 studio IDE,對RA6M4 MCU群組的特性進(jìn)行無(wú)縫評估,并對嵌入系統應用程序進(jìn)行開(kāi)發(fā)。本文檔是《瑞薩RA MCU基礎知識》的配套文檔,旨在將該指南中有關(guān)硬件操作的部分在CPK-RA6M4評估板上進(jìn)行實(shí)現。
在使用本文檔之前,推薦您先學(xué)習《瑞薩RA MCU基礎知識》,以了解更多關(guān)于RA MCU的基礎知識以及其他相關(guān)知識,這樣有助于您在本文所述的硬件實(shí)操中更快上手。
開(kāi)發(fā)環(huán)境
e2 studio:2021-04版
FSP:v3.1.0
目錄
首次使用瑞薩CPK-RA6M4評估板
下載并測試示例
Hello World! – Hi Blinky!
使用實(shí)時(shí)操作系統
使用“靈活配置軟件包”通過(guò)USB端口發(fā)送數據
5. 使用“靈活配置軟件包”通過(guò)USB端口發(fā)送數據
本章內容基于《瑞薩RA MCU 基礎知識》中的章節10使用“靈活配置軟件包”通過(guò)USB端口發(fā)送數據所作。
您將在本章中學(xué)到以下內容:
如何使用RA產(chǎn)品家族微控制器的“靈活配置軟件包”的中間件來(lái)設置USB傳輸。
如何在主機工作站上接收MCU發(fā)送的數據。
5.2 創(chuàng )建代碼
現在,添加初始化USB端口和執行端口寫(xiě)入所需的代碼。由于本練習需要輸入大量的內容,建議您通過(guò)瑞薩網(wǎng)站從本手冊對應的網(wǎng)頁(yè)下載該實(shí)驗的解決方案,這樣只需按照說(shuō)明進(jìn)行操作,而無(wú)需手動(dòng)輸入代碼。
如果決定自行編寫(xiě)所有內容,首先在“Project Explorer”(項目資源管理器)中通過(guò)雙擊打開(kāi)hal_entry.c文件。為了確保程序正常運行,需要定義多個(gè)全局變量。首先,在hal_entry()函數的頭部之前聲明USB驅動(dòng)程序狀態(tài)的枚舉。其類(lèi)型應該是usb_status_t,可以將其命名為usb_event。接下來(lái),添加一個(gè)usb_setup_t類(lèi)型的結構(在r_usb_basic_api.h中進(jìn)行聲明),并將其命名為usb_setup。我們稍后將在解碼某些USB事件時(shí)使用該變量,該變量將在USB事件循環(huán)內進(jìn)行初始化。
接下來(lái),我們需要一個(gè)變量來(lái)保存USB模塊的編號。將其設置為uint8_t類(lèi)型,命名為g_usb_module_number,并為其賦值“0x00”。最后,聲明類(lèi)型為usb_class_t的USB類(lèi)類(lèi)型的結構,將其命名為g_usb_class_type,并為其賦值“0x00”。如果要了解我們使用的各種類(lèi)型的詳細信息,請參見(jiàn)《Renesas 靈活配置軟件包 (FSP) 用戶(hù)手冊》,該手冊可以從FSP的GitHub網(wǎng)站下載。
添加這些內容后,此部分代碼現在應如下所示:
我們自己的代碼也依賴(lài)于一些靜態(tài)全局變量。請添加到USB全局變量下方:
命名為send_str的字符數組用于保存我們要通過(guò)USB發(fā)送的文本。將其初始化為“LED on ”,因為將LED3切換到“ON”后,將首次使用該變量。下一個(gè)變量為sw1_pressed,其類(lèi)型為uint8_t,并需要聲明為volatile,因為其值在用戶(hù)按鈕S1(SW1)的回調例程中將更改為true。默認情況下,其值為false,將由IRQ00中斷的回調例程設置為true,表示已按下該按鈕,因此通知主程序該事件已發(fā)生。
如果沒(méi)有將該變量聲明為volatile,C編譯器的優(yōu)化程序可能不會(huì )在每次使用該變量時(shí)重新讀取其值,因此hal_entry()內部的循環(huán)可能無(wú)法識別到更改。
第三個(gè)變量用于保存LED3的電平,在啟動(dòng)時(shí)應該初始化為BSP_IO_LEVEL_HIGH。每次激活S1(SW1) 時(shí),切換該變量的值。
至此,我們已經(jīng)聲明了所有的全局變量,可以繼續編寫(xiě)hal_entry()函數內的代碼。首先,我們需要一個(gè)靜態(tài)變量,用于保存虛擬UART 通信端口的設置,如比特率、停止位和數據位的數量以及奇偶校驗類(lèi)型。該變量的類(lèi)型應該是usb_pcdc_linecoding_t,建議將其命名為g_line_coding。將“在此添加您自己的代碼”占位符替換為聲明。稍后將在USB事件處理程序循環(huán)中初始化該變量。
接下來(lái),編寫(xiě)代碼以打開(kāi)并啟用外部IRQ00,將其連接到評估板的S1。與第4章一樣,使用IRQ FSP驅動(dòng)程序的相應函數:
啟用中斷后,需要打開(kāi)USB并獲取類(lèi)類(lèi)型和模塊編號。為此,使用r_usb_basic上的g_basic0 USB驅動(dòng)程序模塊的相關(guān)函數,并將控制結構傳遞給這些函數,將引用傳遞給配置結構(適用于Open()函數)和相關(guān)的變量。溫馨提示,e2 studio中的代碼補全功能和開(kāi)發(fā)人員幫助可幫助您編寫(xiě)這些代碼行。
中斷和USB端口的初始化現已完成。接下來(lái)編寫(xiě)的所有代碼都應該放置在while(1)循環(huán)內,因為這部分程序將循環(huán)執行。首先,我們編寫(xiě)用于獲取和處理端口的USB相關(guān)事件的代碼。USB驅動(dòng)程序關(guān)聯(lián)多個(gè)事件,但為了簡(jiǎn)潔起見(jiàn),僅處理USB_STATUS_REQUEST事件。如果要全面了解事件處理程序,請參見(jiàn)《靈活配置軟件包 (FSP) 用戶(hù)手冊》中的USB外設通信設備類(lèi)(r_usb_pcdc)文檔。在此,可以找到此類(lèi)處理程序的代碼示例以及流程圖。
現在,您的第一個(gè)任務(wù)是通過(guò)調用R_USB_EventGet()函數來(lái)初始化usb_event變量,然后編寫(xiě)處理程序,只有發(fā)生USB_STATUS_REQUEST事件時(shí)才能執行該處理程序。在if – then – else結構中,首先設置USB端口,然后確定是否請求線(xiàn)路設置。如果是,通過(guò)傳遞g_line_coding變量來(lái)配置虛擬UART設置。
如果否,則查詢(xún)主機是否要接收UART設置。如果是,請將其發(fā)送給主機。最后,如果發(fā)生事件,在此不進(jìn)行處理,直接確認。
下面是我們的處理程序版本的完整代碼:
可以看到,在處理程序中LINE_CODING_LENGTH出現兩次。由于我們還沒(méi)有定義LINE_CODING_LENGTH的值,請返回到文件的頂部,并將其定義為無(wú)符號值0x07。
返回到while(1)循環(huán)中,添加在激活S1后更改LED3電平的代碼,以sw1_pressed的true值表示。類(lèi)似于第4章中寫(xiě)入的內容,但此時(shí)需要將要通過(guò)USB發(fā)送的字符串復制到send_str變量,并將s1_pressed變量設置為false:
最后要添加的代碼是用于外部IRQ00的回調函數的代碼。將其放置在hal_entry ()函數的括號后面。通過(guò)復習第4章,了解回調函數的一些詳細信息。首先,需要導入g_bsp_leds結構,并用其初始化我們的本地Leds變量。然后將sw1_pressed設置為true,表示事件已發(fā)生,接下來(lái)將新值寫(xiě)入引腳寄存器。最后,利用r_usb_basic模塊的R_USB_Write() API,通過(guò)USB端口發(fā)送該字符串。
還記得USB描述符g_usb_descriptor嗎?現在該描述符將發(fā)揮作用。USB需要有關(guān)器件、其配置和供應商信息的準確描述。該文件十分復雜,具有長(cháng)達484行代碼。有關(guān)該描述符的說(shuō)明,請參閱《FSP用戶(hù)手冊》的r_usb_basic部分,有關(guān)如何構建該描述符的詳細說(shuō)明,請參見(jiàn)通用串行總線(xiàn)規范2.0版。
但這里有兩個(gè)捷徑:一個(gè)是在本手冊的網(wǎng)站上下載本手冊練習的源文件。另一個(gè)是使用FSP配置器放置在項目 ra 目錄下的模板。其名稱(chēng)為 r_usb_pcdc_descriptor.c.template,可以在“項目資源管理”中轉到ra → fsp → src → r_usb_pcdc文件夾進(jìn)行訪(fǎng)問(wèn)(參見(jiàn)圖5-6)。將該文件復制到hal_entry.c所在的src文件夾中,并將其重命名為r_usb_descriptor.c。修改供應商ID和產(chǎn)品ID,以便與您自己的產(chǎn)品ID相匹配。如果尚未獲得這些數據,暫時(shí)使用值0x045BU和0x5310U。到這一步已經(jīng)完成了要進(jìn)行的設置和要編寫(xiě)的代碼。
圖5-6:FSP配置器自動(dòng)創(chuàng )建USB描述符的模板
最后還需要編譯項目。第一次執行此操作需要較長(cháng)時(shí)間,因為需要對項目中包含的所有FSP模塊的代碼進(jìn)行編譯。在項目編譯完成后,如果沒(méi)有任何錯誤和警告,即可連接CPK-RA6M4評估板并啟動(dòng)調試會(huì )話(huà)。打開(kāi)“Debug”(調試)透視圖,雙擊“Resume”(恢復)以啟動(dòng)程序。作為快速測試手段,按一次S1,以查看 用戶(hù)LED(紅色) 是否切換。
5.3 在主機端設置接收器
在程序運行的情況下,將第二根USB type A Micro-B電纜連接到評估板的系統控制和生態(tài)系統訪(fǎng)問(wèn)區域左下方標有J9的USB端口。將另一端插入Windows工作站,稍等片刻,直到Windows識別該電路板,對其進(jìn)行枚舉并安裝驅動(dòng)程序。
啟動(dòng)終端仿真器程序。在本練習的開(kāi)發(fā)過(guò)程中,用到了Tera Term(復制以下鏈接到瀏覽器中打開(kāi)網(wǎng)頁(yè)訪(fǎng)問(wèn)下載https://ttssh2.osdn.jp/),它是一款非常實(shí)用的工具。在Tera Term中,可以看到列出的CDC串行端口。在圖5-7中顯示為COM3,但在其他PC上可能有所不同。如果不確定,使用 Windows的“Device Manager”(設備管理器)來(lái)查找電路板所連接的端口。
圖5-7:如果 Windows正確識別該電路板,它將在Tera Term中列為串行連接
如果沒(méi)有列出該電路板,或者“Device Manager”(設備管理器)指示錯誤,則驅動(dòng)程序可能有問(wèn)題。請復制以下鏈接到瀏覽器中打開(kāi),進(jìn)入瑞薩知識庫網(wǎng)頁(yè)中了解有關(guān)此主題的最新支持條目以解決此問(wèn)題:
https://en-support.renesas.com/knowledgeBase/18959077
在已建立連接并運行Tera Term的情況下,多次按下S1,應該可以看到用戶(hù)LED(紅色)切換狀態(tài),其輸出到終端的狀態(tài)如圖5-8所示。
圖5-8:在傳輸運行的情況下,每次按下S1時(shí),終端程序都會(huì )顯示用戶(hù)LED(紅色)的狀態(tài)
您已成功完成本練習!也完成了CPK-RA6M4評估板的入門(mén)操作!
本章要點(diǎn)
使用FSP配置器和USB中間件便于增加對USB端口的支持。
要進(jìn)行USB傳輸,必須具有USB描述符文件。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
16148瀏覽量
345134 -
瑞薩
+關(guān)注
關(guān)注
32文章
22220瀏覽量
85107 -
評估板
+關(guān)注
關(guān)注
1文章
450瀏覽量
29064 -
RA6M4
+關(guān)注
關(guān)注
0文章
51瀏覽量
389
原文標題:CPK-RA6M4評估板入門(mén)指南-第5章(2)【完結篇】
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論