CPK-RA6M4评估板入门指南(六)

电子说

1.2w人已加入

描述

CPK-RA6M4评估板入门指南

要点

CPK-RA6M4是用于RA6M4单片机的评估板套件。该套件可通过灵活配置软件包(FSP)和e2 studio IDE,对RA6M4 MCU群组的特性进行无缝评估,并对嵌入系统应用程序进行开发。本文档是《瑞萨RA MCU基础知识》的配套文档,旨在将该指南中有关硬件操作的部分在CPK-RA6M4评估板上进行实现。

在使用本文档之前,推荐您先学习《瑞萨RA MCU基础知识》,以了解更多关于RA MCU的基础知识以及其他相关知识,这样有助于您在本文所述的硬件实操中更快上手。

开发环境

e2 studio:2021-04版

FSP:v3.1.0

目录

首次使用瑞萨CPK-RA6M4评估板

下载并测试示例

Hello World! – Hi Blinky!

使用实时操作系统

使用“灵活配置软件包”通过USB端口发送数据

5. 使用“灵活配置软件包”通过USB端口发送数据

本章内容基于《瑞萨RA MCU 基础知识》中的章节10使用“灵活配置软件包”通过USB端口发送数据所作。

您将在本章中学到以下内容:

如何使用RA产品家族微控制器的“灵活配置软件包”的中间件来设置USB传输。

如何在主机工作站上接收MCU发送的数据。

5.2 创建代码

现在,添加初始化USB端口和执行端口写入所需的代码。由于本练习需要输入大量的内容,建议您通过瑞萨网站从本手册对应的网页下载该实验的解决方案,这样只需按照说明进行操作,而无需手动输入代码。

如果决定自行编写所有内容,首先在“Project Explorer”(项目资源管理器)中通过双击打开hal_entry.c文件。为了确保程序正常运行,需要定义多个全局变量。首先,在hal_entry()函数的头部之前声明USB驱动程序状态的枚举。其类型应该是usb_status_t,可以将其命名为usb_event。接下来,添加一个usb_setup_t类型的结构(在r_usb_basic_api.h中进行声明),并将其命名为usb_setup。我们稍后将在解码某些USB事件时使用该变量,该变量将在USB事件循环内进行初始化。

接下来,我们需要一个变量来保存USB模块的编号。将其设置为uint8_t类型,命名为g_usb_module_number,并为其赋值“0x00”。最后,声明类型为usb_class_t的USB类类型的结构,将其命名为g_usb_class_type,并为其赋值“0x00”。如果要了解我们使用的各种类型的详细信息,请参见《Renesas 灵活配置软件包 (FSP) 用户手册》,该手册可以从FSP的GitHub网站下载。

添加这些内容后,此部分代码现在应如下所示:

mcu

我们自己的代码也依赖于一些静态全局变量。请添加到USB全局变量下方:

mcu

命名为send_str的字符数组用于保存我们要通过USB发送的文本。将其初始化为“LED on ”,因为将LED3切换到“ON”后,将首次使用该变量。下一个变量为sw1_pressed,其类型为uint8_t,并需要声明为volatile,因为其值在用户按钮S1(SW1)的回调例程中将更改为true。默认情况下,其值为false,将由IRQ00中断的回调例程设置为true,表示已按下该按钮,因此通知主程序该事件已发生。

如果没有将该变量声明为volatile,C编译器的优化程序可能不会在每次使用该变量时重新读取其值,因此hal_entry()内部的循环可能无法识别到更改。

第三个变量用于保存LED3的电平,在启动时应该初始化为BSP_IO_LEVEL_HIGH。每次激活S1(SW1) 时,切换该变量的值。

至此,我们已经声明了所有的全局变量,可以继续编写hal_entry()函数内的代码。首先,我们需要一个静态变量,用于保存虚拟UART 通信端口的设置,如比特率、停止位和数据位的数量以及奇偶校验类型。该变量的类型应该是usb_pcdc_linecoding_t,建议将其命名为g_line_coding。将“在此添加您自己的代码”占位符替换为声明。稍后将在USB事件处理程序循环中初始化该变量。

mcu

接下来,编写代码以打开并启用外部IRQ00,将其连接到评估板的S1。与第4章一样,使用IRQ FSP驱动程序的相应函数:

mcu

启用中断后,需要打开USB并获取类类型和模块编号。为此,使用r_usb_basic上的g_basic0 USB驱动程序模块的相关函数,并将控制结构传递给这些函数,将引用传递给配置结构(适用于Open()函数)和相关的变量。温馨提示,e2 studio中的代码补全功能和开发人员帮助可帮助您编写这些代码行。

mcu

中断和USB端口的初始化现已完成。接下来编写的所有代码都应该放置在while(1)循环内,因为这部分程序将循环执行。首先,我们编写用于获取和处理端口的USB相关事件的代码。USB驱动程序关联多个事件,但为了简洁起见,仅处理USB_STATUS_REQUEST事件。如果要全面了解事件处理程序,请参见《灵活配置软件包 (FSP) 用户手册》中的USB外设通信设备类(r_usb_pcdc)文档。在此,可以找到此类处理程序的代码示例以及流程图。

现在,您的第一个任务是通过调用R_USB_EventGet()函数来初始化usb_event变量,然后编写处理程序,只有发生USB_STATUS_REQUEST事件时才能执行该处理程序。在if – then – else结构中,首先设置USB端口,然后确定是否请求线路设置。如果是,通过传递g_line_coding变量来配置虚拟UART设置。

如果否,则查询主机是否要接收UART设置。如果是,请将其发送给主机。最后,如果发生事件,在此不进行处理,直接确认。

下面是我们的处理程序版本的完整代码:

mcu

可以看到,在处理程序中LINE_CODING_LENGTH出现两次。由于我们还没有定义LINE_CODING_LENGTH的值,请返回到文件的顶部,并将其定义为无符号值0x07。

mcu

返回到while(1)循环中,添加在激活S1后更改LED3电平的代码,以sw1_pressed的true值表示。类似于第4章中写入的内容,但此时需要将要通过USB发送的字符串复制到send_str变量,并将s1_pressed变量设置为false:

mcu

最后要添加的代码是用于外部IRQ00的回调函数的代码。将其放置在hal_entry ()函数的括号后面。通过复习第4章,了解回调函数的一些详细信息。首先,需要导入g_bsp_leds结构,并用其初始化我们的本地Leds变量。然后将sw1_pressed设置为true,表示事件已发生,接下来将新值写入引脚寄存器。最后,利用r_usb_basic模块的R_USB_Write() API,通过USB端口发送该字符串。

mcu

还记得USB描述符g_usb_descriptor吗?现在该描述符将发挥作用。USB需要有关器件、其配置和供应商信息的准确描述。该文件十分复杂,具有长达484行代码。有关该描述符的说明,请参阅《FSP用户手册》的r_usb_basic部分,有关如何构建该描述符的详细说明,请参见通用串行总线规范2.0版。

但这里有两个捷径:一个是在本手册的网站上下载本手册练习的源文件。另一个是使用FSP配置器放置在项目 ra 目录下的模板。其名称为 r_usb_pcdc_descriptor.c.template,可以在“项目资源管理”中转到ra → fsp → src → r_usb_pcdc文件夹进行访问(参见图5-6)。将该文件复制到hal_entry.c所在的src文件夹中,并将其重命名为r_usb_descriptor.c。修改供应商ID和产品ID,以便与您自己的产品ID相匹配。如果尚未获得这些数据,暂时使用值0x045BU和0x5310U。到这一步已经完成了要进行的设置和要编写的代码。

mcu

图5-6:FSP配置器自动创建USB描述符的模板

最后还需要编译项目。第一次执行此操作需要较长时间,因为需要对项目中包含的所有FSP模块的代码进行编译。在项目编译完成后,如果没有任何错误和警告,即可连接CPK-RA6M4评估板并启动调试会话。打开“Debug”(调试)透视图,双击“Resume”(恢复)以启动程序。作为快速测试手段,按一次S1,以查看 用户LED(红色) 是否切换。

5.3 在主机端设置接收器

在程序运行的情况下,将第二根USB type A Micro-B电缆连接到评估板的系统控制和生态系统访问区域左下方标有J9的USB端口。将另一端插入Windows工作站,稍等片刻,直到Windows识别该电路板,对其进行枚举并安装驱动程序。

启动终端仿真器程序。在本练习的开发过程中,用到了Tera Term(复制以下链接到浏览器中打开网页访问下载 https://ttssh2.osdn.jp/),它是一款非常实用的工具。在Tera Term中,可以看到列出的CDC串行端口。在图5-7中显示为COM3,但在其他PC上可能有所不同。如果不确定,使用 Windows的“Device Manager”(设备管理器)来查找电路板所连接的端口。

mcu

图5-7:如果 Windows正确识别该电路板,它将在Tera Term中列为串行连接

如果没有列出该电路板,或者“Device Manager”(设备管理器)指示错误,则驱动程序可能有问题。请复制以下链接到浏览器中打开,进入瑞萨知识库网页中了解有关此主题的最新支持条目以解决此问题:

https://en-support.renesas.com/knowledgeBase/18959077

在已建立连接并运行Tera Term的情况下,多次按下S1,应该可以看到用户LED(红色)切换状态,其输出到终端的状态如图5-8所示。

mcu

图5-8:在传输运行的情况下,每次按下S1时,终端程序都会显示用户LED(红色)的状态

mcu

mcu

mcu

您已成功完成本练习!也完成了CPK-RA6M4评估板的入门操作!

本章要点

使用FSP配置器和USB中间件便于增加对USB端口的支持。

要进行USB传输,必须具有USB描述符文件。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分