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

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

3天内不再提示

【开发板评测笔记】Renesas RA6M4开发板之USB-H(下)

瑞萨MCU小百科 来源:未知 2022-12-13 17:25 次阅读

例程编写

编写的例程是使用FSP提供的usb hcdc中间件,实现了一个可使用usb串口设备的usb主机。

首先在RT-Thread Studio上新建一个基于开发板的项目,选择CPK-RA6M4开发板,建立一个模板工程。编译下载后,可以看到LED灯在闪烁,同时可以在串口终端上使用rtt的FinSH控制台。

下一步,打开RASC,在stacks页面,添加一个usb hcdc的驱动栈。

b74ebe82-7ac7-11ed-8abf-dac502259ad0.png

这时候会提示有错误,usb模块使用的UCLK时钟频率不是48MHz的,需要在Clocks页面进行配置。将PLL2时钟源选择为HOCO,分频系数调到2,倍频系数调到24,即可得到240Mhz的输出时钟。将UCLK的时钟源选择为PLL2,再进行5倍分频,即可得到usb模块需要的48MHz时钟了。

b77ff196-7ac7-11ed-8abf-dac502259ad0.png

然后我们可以在Pins的页面中查看USB_FS0组件的引脚相关设置。根据原理图,需要将USB_VBUSEN设置为P500引脚,USB_OVRCURA设置为P501引脚,USB_VBUS是usbd使用的,用于检测usb是否有供电接入,这里不设置应该也是没关系的。

b7a18aae-7ac7-11ed-8abf-dac502259ad0.png

保存点击Generate Project Content按钮,RASC会帮我们更新工程中的FSP代码,ra 、ra_cfg、ra_gen三个文件夹的内容会有所改变。下一步是将更新后的FSP代码加入到工程编译。如果项目资源管理器中设置了对不参与构建的文件进行隐藏,那么新文件在项目资源管理器中是看不到的,需要打开导航器,在导航器中对需要加入构建的文件或文件夹点击右键->资源配置->添加构建。我们需要将ra/fsp/src/r_usb_basic和r_usb_hcdc中的文件加入构建,在r_usb_basic的src文件夹下还有driver和hw两个文件夹,都需要加入构建。这时编译会报有头文件找不到,在工程配置中手动添加一个头文件路径即可。

由于rtt还未对这款开发板的usb host进行支持,所以不需要打开rtt设置中的usb主机模式开关,如果打开了,还会有因宏命名与FSP中的重名导致的编译警告。

到这里,前期的配置准备工作就已经完成了,需要开始写代码了。在src文件夹下新建一个usbh_cdc_demo.c文件用于编写我们的例程。

根据FSP中的API文档介绍,需要一直调用R_USB_EventGet接口来保持底层usb驱动栈的正常工作。所以我们创建一个线程来进行这个操作。

b7c479ec-7ac7-11ed-8abf-dac502259ad0.jpg

在线程中使用一个状态机,根据每次的event来进行不同的操作,这也是瑞萨提供的例程的写法。

b7dd6290-7ac7-11ed-8abf-dac502259ad0.jpgb7fbd05e-7ac7-11ed-8abf-dac502259ad0.jpgb81ddb36-7ac7-11ed-8abf-dac502259ad0.jpgb8498c2c-7ac7-11ed-8abf-dac502259ad0.jpgb8b4b8f8-7ac7-11ed-8abf-dac502259ad0.jpg

在插入usb设备后,拿到的event会变为USB_STATUS_CONFIGURED,这时候FSP已经帮我们枚举好了设备,可以直接进行控制。下一步是发送SetLineCoding和SetControlLineState来配置串口,例如波特率和奇偶校验位等。使用hostControlTransfer发起一个控制传输。

b8cbc660-7ac7-11ed-8abf-dac502259ad0.jpgb8f915fc-7ac7-11ed-8abf-dac502259ad0.jpg

所有配置工作都结束后,就可以使用R_USB_Read和R_USB_Write两个接口来接收和发送串口数据了。简单地在FinSH中添加一个命令来方便我们测试。

b911f888-7ac7-11ed-8abf-dac502259ad0.jpg

刚好模板工程中的按键也是开启使用的状态,我们增加一个回调来按键发送串口数据。

b939f7c0-7ac7-11ed-8abf-dac502259ad0.jpgb94f5a7a-7ac7-11ed-8abf-dac502259ad0.jpgb97f0270-7ac7-11ed-8abf-dac502259ad0.jpg

编译下载,使用一个micro usb转USB-A的otg连接线,就可以接入一个usb串口设备使用了。刚好手上还有上次参加开发者大会的活动获得的板子,于是在上面简单写了一个usbd_cdc的程序,将它们连接起来。

b991623a-7ac7-11ed-8abf-dac502259ad0.pngb9f380c8-7ac7-11ed-8abf-dac502259ad0.png

CheeryUSB移植尝试

打开RT-Thread Settings,在里面找到CherryUSB软件包,添加到工程中,保存后,RT-Thread会自动从github上拉取CheeryUSB的源码放置到packages/CherryUSB-latest目录下,然后将需要构建的文件加入到构建中。需要包括core、osal、port、class四个文件夹下的文件,其中core是协议栈的核心实现部分,osal是操作系统抽象层,port存放移植需要实现的内容,class则是针对不同的usb设备类型编写的驱动代码。osal/usb_osal_rtthread.c文件表明CheeryUSB对RT-Thread系统是有完善支持的。

ba234984-7ac7-11ed-8abf-dac502259ad0.png

usb host的部分,CherryUSB的作者还没出教程,这部分的文档也还没有,只能继续观察已有的代码来猜测着移植。一开始像直接借助FSP的usb_basic来做移植,直接使用R_USB_Open、R_USB_Read等API,结果发现FSP已经封装得很好了,细节操作都没暴露出来,把整个设备枚举的过程都隐藏了起来,每个API的操作也都加了很多条件判断,不便于移植。那就只能看寄存器手册,通过直接操作寄存器来完成操作了。

自己对USB协议只能说稍有了解,对CheeryUSB和瑞萨系列芯片的寄存器也都不熟悉,移植起来确实非常困难,只能一直读FSP的代码,对着寄存器手册去理解。

后续时间也不充裕,还是没能成功移植CheeryUSB,只能再到后面等待其他大佬来搞了。

性能测试

原本想要做的功能是usb hmsc的,也就是可以外接U盘等存储设备,如果是这样的话,就可以进行一些读写测速来测试性能指标了。但是现在换成了usb hcdc,手上现有的usb串口工具波特率调不到很高,也没有使用DMA来做传输,感觉测试不到最快传输速度,所以这个环节只能略过了。

ba55d62e-7ac7-11ed-8abf-dac502259ad0.png

代码与参考资料

源码已经开源到了github上,感兴趣的同学可以识别下方二维码或复制下方链接在浏览器中打开,前往github网页上查看参考。

cpk-ra6m4-usbh-cdc-demo

ba668adc-7ac7-11ed-8abf-dac502259ad0.png

https://github.com/VxTeemo/cpk-ra6m4-usbh-cdc-demo

更多参考资料

Renesas USB MCU USB Basic Host and Peripheral Driver using.pdf

ba7bbba0-7ac7-11ed-8abf-dac502259ad0.png

https://oss-club.rt-thread.org/uploads/20220406/12e477786db53794f1bb48c6c1b66fd9.pdf

CPK-RA6M4用户手册

ba93d50a-7ac7-11ed-8abf-dac502259ad0.png

https://oss-club.rt-thread.org/uploads/20220406/bd0c6707ec63aa179b2a337d5dbd2233.pdf

RA6M4 datasheet

baaa05aa-7ac7-11ed-8abf-dac502259ad0.png

https://oss-club.rt-thread.org/uploads/20220406/0fa9ca3da04f687db684a4e6f9230725.pdf

RA6M4_Group_User’s_Manual_Hardware.pdf

bac401e4-7ac7-11ed-8abf-dac502259ad0.png

https://oss-club.rt-thread.org/uploads/20220406/92c2218e2db4b08cff4b6f34cb61268b.pdf

CPK-RA6M4 MCU评估板原理图.pdf

badcc788-7ac7-11ed-8abf-dac502259ad0.png

https://oss-club.rt-thread.org/uploads/20220406/460d66bee9aa09a6036f302890ebc737.pdf

bafbec4e-7ac7-11ed-8abf-dac502259ad0.svg

向左滑动查看更多

bafbec4e-7ac7-11ed-8abf-dac502259ad0.svg

ba55d62e-7ac7-11ed-8abf-dac502259ad0.png

心得体会

bb36fe24-7ac7-11ed-8abf-dac502259ad0.png

拿到开发板后,感觉还是具有一定挑战性的,首先是usb这个外设并没有现成的驱动,而且我自己对usb协议也不算很熟悉。在摸索了一段时间后,最初的目标是打算做一个usb存储设备的主机,可以用来读取U盘等usb存储设备,在FSP中添加了usb hmsc的栈时发现必须要带操作系统而现在支持的只有FreeRTOS,并且使用的文件系统是FATFS。RT-Thread里面使用的文件系统是elm chan FatFs,尝试加进去之后做下移植,以前只移植过有完善支持的文件系统,对这种情况还是不大处理得了,于是作罢。先完成一个usb hcdc的例程。

在编写例程的过程中,也去了解了一下CherryUSB(详见github官网),这是一个非常优秀的usb device/host驱动,于是便尝试将RA6M4也添加支持。观察了一下工程结构,需要在port文件夹下编写移植代码,之前群里也有人说RA6M4的usb IP是叫做fsdev,里面确实有这么一个文件夹,只有usb device的实现,里面操作的寄存器和现在这款单片机是对不上的,到处搜了一圈也没有关于fsdev和RA6M4 usb IP相关的内容,只能继续凭着感觉移植。总体来说这次的评测体验还是非常不错的。

芯片中还有设计用于存储数据的8KB Data Flash,可以不用将ROM做数据空间使用了,无需外接SPI存储芯片就可以实现方便的非易失数据存储,也不需要考虑和代码共用空间产生的种种问题,甚至还能更好地实现平衡磨损,这个设计还是很不错的。

在RASC中新增了usb的stack之后,rt-thread studio并不能自动识别新增文件并加入到构建中,其他的模块好像是没问题的,不知道是不是usb驱动这边多了一层hw和driver文件夹的原因。需要手动添加构建就可以解决。

现在大部分设备都已经使用type-c接口了,micro usb的设备越来越少,现在手上有一堆type-c转USB-A的转接头,但是为了这次测试,还是需要另外购买micro usb转USB-A的转接头。micro usb接口相比type-c接口确实是有更稳定、兼容性更强等优点,但个人还是希望能升级到type-c接口。

1

END

1

往期推荐

1

瑞萨RA产品家族初学者指南

2

RA6M4通过DTC实现ADC多次采样

3

[瑞萨RA产品家族]器件生命周期管理密钥安装应用笔记

瑞萨电子 (TSE: 6723)

科技让生活更轻松,致力于打造更安全、更智能、可持续发展的未来。作为全球微控制器供应商,瑞萨电子融合了在嵌入式处理、模拟电源及连接方面的专业知识,提供完整的半导体解决方案。成功产品组合加速汽车、工业、基础设施及物联网应用上市,赋能数十亿联网智能设备改善人们的工作和生活方式。

更多信息,敬请访问renesas.com

bb7ab43e-7ac7-11ed-8abf-dac502259ad0.gif


原文标题:【开发板评测笔记】Renesas RA6M4开发板之USB-H(下)

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


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

    关注

    146

    文章

    16876

    浏览量

    349872
  • 瑞萨
    +关注

    关注

    34

    文章

    22281

    浏览量

    85928
  • RA6M4
    +关注

    关注

    0

    文章

    51

    浏览量

    421

原文标题:【开发板评测笔记】Renesas RA6M4开发板之USB-H(下)

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

收藏 人收藏

    评论

    相关推荐

    RA-Eco-RA2E1-48PIN-V1.0开发板试用】1、开箱+环境搭建

    RA-Eco-RA2E1-48PIN-V1.0开发板 简介: 以R7FA2E1A72DFL为主控芯片,拥有丰富的外设,集成度高功能非常强大,具有优越的性能和低功耗。 48MHz ARMⓇ CortexⓇ-M23低功耗
    发表于 10-24 11:17

    ​Banana Pi BPi-M4 Zero 开源硬件开发板评测试: 全志科技H618 方案设计 ,板载4G 内存,32G eMMC

    ​Banana Pi BPi-M4 Zero 开源硬件开发板评测试: 全志科技H618 方案设计 ,板载4G 内存,32G eMMC
    的头像 发表于 10-15 12:04 310次阅读

    试用活动 | 100套!!瑞萨RA6E2/RA4E2开发板评测活动

    活动简介: 瑞萨RA6E2/RA4E2开发板评测活动是一个针对瑞萨电子推出的通用微控制器(MCU)RA6E2 和
    的头像 发表于 09-10 11:18 468次阅读
    试用活动 | 100套!!瑞萨<b class='flag-5'>RA6</b>E2/<b class='flag-5'>RA4</b>E2<b class='flag-5'>开发板</b><b class='flag-5'>评测</b>活动

    Banan Pi BPI-M4 Berry 全志科技H618开发板烧录镜像教程

    Banan Pi BPI-M4 Berry 全志科技H618开发板烧录镜像教程
    的头像 发表于 07-02 16:13 643次阅读
    Banan Pi BPI-<b class='flag-5'>M4</b> Berry 全志科技<b class='flag-5'>H</b>618<b class='flag-5'>开发板</b>烧录镜像教程

    Banana Pi BPI-M4 Berry开源硬件开发板采用全志H618芯片设计

    BPI-M4 Berry 开发板作为一款强大的单板计算机(SBC),充分挖掘了全志 H618 系统级芯片(SoC)的功能,为开发人员提供了令人印象深刻的性能和丰富的特性。与树莓派
    的头像 发表于 07-01 14:37 518次阅读
    Banana Pi BPI-<b class='flag-5'>M4</b> Berry开源硬件<b class='flag-5'>开发板</b>采用全志<b class='flag-5'>H</b>618芯片设计

    米尔基于NXP iMX.93开发板M33处理器应用开发笔记

    资源MYD-LMX9X开发板(米尔基于NXPiMX.93开发板)3.软件资源Windows7及以上版本软件:IAREmbeddedWorkbench4.板载固件调试
    的头像 发表于 06-29 08:01 1198次阅读
    米尔基于NXP iMX.93<b class='flag-5'>开发板</b>的<b class='flag-5'>M</b>33处理器应用<b class='flag-5'>开发笔记</b>

    基于瑞萨电子RA系列的野火耀阳RA8D1开发板产品简介

    野火耀阳RA8D1开发板是一款功能强大的开发板,适用于各种嵌入式应用开发。它采用瑞萨电子的RA系列R7FA8D1BHECBD微控制器作为主控
    的头像 发表于 05-29 14:19 740次阅读
    基于瑞萨电子<b class='flag-5'>RA</b>系列的野火耀阳<b class='flag-5'>RA</b>8D1<b class='flag-5'>开发板</b>产品简介

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPGA芯片、时钟模块、电源模块、输入输出接口等组
    的头像 发表于 03-14 18:20 1739次阅读

    fpga开发板使用教程

    FPGA开发板的使用教程主要包括以下几个关键步骤。
    的头像 发表于 03-14 15:50 925次阅读

    fpga开发板与linux开发板区别

    FPGA开发板与Linux开发板是两种不同的硬件开发平台,各自具有不同的特点和应用场景。在以下的文章中,我将详细介绍FPGA开发板和Linux开发板
    的头像 发表于 02-01 17:09 2005次阅读

    使用RA6M5开发板的简易热成像仪设计

    本项目是使用RA6M5开发板搭载RTThread系统+LVGL图形库实现的一个简易热成像仪。其中传感器使用的是mlx90640,屏幕是320*240的电容触摸屏,整个交互由触摸完成。
    的头像 发表于 01-02 13:50 736次阅读
    使用<b class='flag-5'>RA6M</b>5<b class='flag-5'>开发板</b>的简易热成像仪设计

    基于RA6M5开发板的低功耗电子时钟设计

    本项目是基于启明RA6M5开发板搭载2.4寸液晶屏的电子时钟,该电子时钟有两个模式——正常模式和低功耗模式,可以通过开发板的按键改变时钟模式。
    的头像 发表于 12-25 12:26 845次阅读
    基于<b class='flag-5'>RA6M</b>5<b class='flag-5'>开发板</b>的低功耗电子时钟设计

    快速上手Banana Pi BPI-M4 Zero 全志科技H618开源硬件开发开发板

    快速上手Banana Pi BPI-M4 Zero 全志科技H618开源硬件开发开发板
    的头像 发表于 11-30 14:42 1402次阅读
    快速上手Banana Pi BPI-<b class='flag-5'>M4</b> Zero 全志科技<b class='flag-5'>H</b>618开源硬件<b class='flag-5'>开发</b><b class='flag-5'>开发板</b>

    Banana Pi BPI-M4 Berry 全志H618开源开发板低温环境测试启动和运行

    Banana Pi BPI-M4 Berry 全志H618开源开发板低温环境测试启动和运行
    的头像 发表于 11-30 14:36 863次阅读
    Banana Pi BPI-<b class='flag-5'>M4</b> Berry 全志<b class='flag-5'>H</b>618开源<b class='flag-5'>开发板</b>低温环境测试启动和运行

    Banana Pi BPI-M4 Berry 全志H618开源开发板低温环境测试启动和运行

    Banana Pi BPI-M4 Berry 全志H618开源开发板低温环境测试启动和运行
    的头像 发表于 11-30 14:26 510次阅读
    Banana Pi BPI-<b class='flag-5'>M4</b> Berry 全志<b class='flag-5'>H</b>618开源<b class='flag-5'>开发板</b>低温环境测试启动和运行