0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA产品家族初学者指南-第10章(用FSP配置器和USB中间件增加对USB端口的支持)

瑞萨MCU小百科 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2023-01-13 12:15 次阅读

瑞萨RA产品家族初学者指南》系列文章已收录成合集!

10. 使用“灵活配置软件包”通过

USB端口发送数据

本章目录

使用FSP配置器设置USB端口

创建代码

在主机端设置接收器

10.2 创建代码

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

https://www.renesas.cn/cn/zh/document/gde/1520091

如果决定自行编写所有内容,首先在“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网站下载。

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

f9057d8c-92f7-11ed-bfe3-dac502259ad0.jpg

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

f9137324-92f7-11ed-bfe3-dac502259ad0.jpg

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

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

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

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

f92382fa-92f7-11ed-bfe3-dac502259ad0.jpg

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

f9309fbc-92f7-11ed-bfe3-dac502259ad0.jpg

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

f93d7e62-92f7-11ed-bfe3-dac502259ad0.jpg

中断和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设置。如果是,请将其发送给主机。最后,如果发生事件,在此不进行处理,直接确认。

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

f96b1e44-92f7-11ed-bfe3-dac502259ad0.jpg

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

f9785a6e-92f7-11ed-bfe3-dac502259ad0.jpg

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

f98f23d4-92f7-11ed-bfe3-dac502259ad0.jpg

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

f99cf31a-92f7-11ed-bfe3-dac502259ad0.jpg

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

http://www.usb.org/developers/docs/

但这里有两个捷径:一个是在本手册的网站上下载本手册练习的源文件

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra-book

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

f9f21a16-92f7-11ed-bfe3-dac502259ad0.jpg

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

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

10.3 在主机端设置接收器

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

启动终端仿真器程序。在本练习的开发过程中,用到了Tera Term,它是一款非常实用的工具。

复制以下网址在浏览器中打开查看:

https://ttssh2.osdn.jp/

在Tera Term中,可以看到列出的CDC串行端口。在图10-11中显示为COM3,但在其他PC上可能有所不同。如果不确定,使用Windows的“Device Manager”(设备管理器)来查找电路板所连接的端口。

f9fd0516-92f7-11ed-bfe3-dac502259ad0.jpg

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

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

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

在已建立连接并运行Tera Term的情况下,多次按下S1,应该可以看到绿色LED2切换,其输出到终端的状态如图10-12所示。

fa06cac4-92f7-11ed-bfe3-dac502259ad0.jpg

图10-12:在传输运行的情况下,每次按下S1时,终端程序都会显示LED2的状态

fa119b3e-92f7-11ed-bfe3-dac502259ad0.jpgfa6bf0e8-92f7-11ed-bfe3-dac502259ad0.jpg

您已成功完成本练习!

本章要点:

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

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

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

    关注

    145

    文章

    15885

    浏览量

    342773
  • usb
    usb
    +关注

    关注

    59

    文章

    7377

    浏览量

    257462
  • 瑞萨
    +关注

    关注

    31

    文章

    22201

    浏览量

    84744
  • USB端口
    +关注

    关注

    0

    文章

    35

    浏览量

    12716
  • FSP
    FSP
    +关注

    关注

    0

    文章

    23

    浏览量

    7015

原文标题:瑞萨RA产品家族初学者指南-第10章(2)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MDK中间件 部分 使用方法 初学者

    MDK中间件 部分 使用方法 初学者
    发表于 03-21 13:29

    RA4系列开发板体验】开发环境搭建和新手点灯指南

    RA-Eco-RA4M2-100PIN开发板上的一个LED灯。开发环境搭建部分,详细介绍了不依赖额外硬件调试的开发环境,即搭建一个只是使用开发板自带USB口进行烧录的开发环境。新手
    发表于 11-24 22:54

    RA4系列开发板体验】初步认识开发板

    配置软件包 (FSP) 这个开放且灵活的生态系统概念提供支持FSP 基于 FREERTOS 构建,并能够进行扩展,以使用其他实时操作系统 (RTOS) 和
    发表于 12-10 10:26

    【野火启明6M5开发板体验】野火启明开发板和RA MCU介绍

    *1Micro SD卡槽*1RTC电池座*1,需使用 CR1220电池 RA 产品家族简介RA
    发表于 12-14 22:31

    电子推出两个全新入门级产品群以扩展RA MCU产品家族, 打造性能、功能和价值的理想组合

    FSP)的支持,该软件包包含高效的驱动程序和中间件,以简化通信并提升外设功能。FSP的GUI简化加速了开发过程,其可以灵活地使用原有代码,并轻松
    发表于 03-14 15:30

    基于RA4M2的表盘设计

    (FSP),该软件包包含高效的驱动程序和中间件,以简化通信并提升外设功能。FSP的GUI简化加速了开发过程,其可以灵活地使用原有代码,并轻松支持向其它
    发表于 03-22 19:31

    初学者USB技术入门总结

    初涉学USB初学者USB入门总结 一,概述现在很多的主控上都带有USB的功能,但是对于初学者来说,这方面应用还是比较棘手,因为
    发表于 04-22 16:57 711次阅读

    瑞萨RA产品家族初学者指南-第9章(1)

    《瑞萨RA产品家族初学者指南》系列文章已收录成合集,欢迎点击上方 查看合集并订阅! 9. 使用实时操作系统 您将在本章中学到以下内容: 什么
    的头像 发表于 11-15 12:15 493次阅读

    瑞萨RA产品家族初学者指南-第9章(2)

    《瑞萨RA产品家族初学者指南》系列文章已收录成合集,欢迎点击上方 查看合集并订阅! 9. 使用实时操作系统 本章目录 线程、信号量和队列 使
    的头像 发表于 11-15 12:15 593次阅读

    瑞萨RA产品家族初学者指南-第10章(1)

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 10. 使用
    的头像 发表于 01-11 13:10 630次阅读

    瑞萨RA产品家族初学者指南-第11章(1)

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 11. 安全性和TrustZone 您将在本章中学到以下
    的头像 发表于 01-16 13:25 375次阅读

    瑞萨RA产品家族初学者指南-第11章(2)

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 11. 安全性和TrustZone 本章目录 什么是Tr
    的头像 发表于 01-18 12:25 462次阅读

    瑞萨RA产品家族初学者指南-第11章(3)

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 11. 安全性和TrustZone 本章目录 什么是Tr
    的头像 发表于 02-03 01:55 395次阅读

    瑞萨RA产品家族初学者指南-第11章(4)

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 11. 安全性和TrustZone 本章目录 什么是Tr
    的头像 发表于 02-04 13:15 770次阅读

    瑞萨RA初学者指南-第12章【完结篇】

    《瑞萨RA产品家族初学者指南》系列文章 已收录成合集,欢迎点击上方查看合集并订阅! 12. 补充资料 您将在本章中学到以下内容:
    的头像 发表于 02-08 11:35 498次阅读