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
    +关注

    关注

    145

    文章

    15988

    浏览量

    343325
  • 瑞萨
    +关注

    关注

    32

    文章

    22210

    浏览量

    84880
  • RA6M4
    +关注

    关注

    0

    文章

    51

    浏览量

    377

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

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

收藏 人收藏

    评论

    相关推荐

    【Longan Pi 3H 开发板试用连载体验】基于 Longan Pi 3H 开发板完成智能家居控制小型项目

    和存储空间显示为4GB+32G,如图 三、项目计划 我的试用项目是基于 Longan Pi 3H 开发板完成智能家居控制小型项目目标如下: 通过 Longan Pi 3H
    发表于 04-02 22:37

    ART-Ri STM32H750XBH6开发板和STM32H750XBH6开发板有什么区别?

    ART-Ri STM32H750XBH6开发板跟STM32H750XBH6开发板有什么区别
    发表于 03-20 07:01

    飞腾派开发板评测获奖名单公布!!!

    恭喜以上小伙伴!经过飞腾专家评选,前三名小伙伴可保留飞腾派开发板,其余小伙伴需退回开发板,有问题请微信联系工作人员(微信号:elecfans123) 飞腾派开发板简介: 飞腾派是由中电港萤火工场
    发表于 01-30 17:02

    学习笔记分享|ElfBoard开发板初识

    大家分享一篇共创官学习笔记,共同见证携手进步的真实写照: 最近很荣幸能够参加保定飞凌嵌入式公司举办的Elfboard\"自创一派\" 共创社活动。下图是本次活动采用的ElF 1开发板
    发表于 01-04 10:22

    BananaPi BPI-M4 Berry 开发板,采用全志H618, 2G内存,8G eMMC #开发板

    开源硬件开发板
    Banana Pi开源硬件
    发布于 :2023年11月02日 09:17:00

    #fpga开发板 Lattic-mipi开发板

    FPGA开发板
    明德扬科技
    发布于 :2023年10月25日 18:01:23

    【LuckFox Pico Plus开发板免费试用】+开发板初体验

    引出,其引脚的排列关系见图3所示。 图3 引脚排列顺序 在安装软件MobaXterm的情况,可通过串口同系统进行交互,该软件的界面如图4所示。 图4 软件界面 将串口模块与开发板
    发表于 10-13 16:38

    【悟空派H3开发板免费体验】悟空派H3开发板

    Cortex-A72内核和4个Arm Cortex-A53内核。开发板还配备了16GB DDR4内存、64GB eMMC存储、10/100/1000M以太网、
    发表于 09-19 10:04

    ART-Ri STM32H750XBH6开发板和STM32H750XBH6开发板的区别是什么?

    ART-Ri STM32H750XBH6开发板跟STM32H750XBH6开发板有什么区别
    发表于 08-08 07:55

    #51单片机 #开发板

    开发板
    发布于 :2023年08月04日 07:03:00

    CPKIOT-RA6Mx开发板手册

    CPKIOT-RA6Mx开发板手册
    发表于 07-03 18:35 0次下载
    CPKIOT-<b class='flag-5'>RA</b>6Mx<b class='flag-5'>开发板</b>手册

    STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

    iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助
    发表于 05-31 10:16

    【CW32饭盒派开发板试用体验】开发板简单介绍和开发板初体验

    开发板配有完善的进阶例程及各种技术支持服务。 这块开发板有以下特点: 48PIN MCU:CW32F030C8T6位微控制器,64M主频;4
    发表于 05-22 10:56