例程编写
编写的例程是使用FSP提供的usb hcdc中间件,实现了一个可使用usb串口设备的usb主机。
首先在RT-Thread Studio上新建一个基于开发板的项目,选择CPK-RA6M4开发板,建立一个模板工程。编译下载后,可以看到LED灯在闪烁,同时可以在串口终端上使用rtt的FinSH控制台。
下一步,打开RASC,在stacks页面,添加一个usb hcdc的驱动栈。
这时候会提示有错误,usb模块使用的UCLK时钟频率不是48MHz的,需要在Clocks页面进行配置。将PLL2时钟源选择为HOCO,分频系数调到2,倍频系数调到24,即可得到240Mhz的输出时钟。将UCLK的时钟源选择为PLL2,再进行5倍分频,即可得到usb模块需要的48MHz时钟了。
然后我们可以在Pins的页面中查看USB_FS0组件的引脚相关设置。根据原理图,需要将USB_VBUSEN设置为P500引脚,USB_OVRCURA设置为P501引脚,USB_VBUS是usbd使用的,用于检测usb是否有供电接入,这里不设置应该也是没关系的。
保存点击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驱动栈的正常工作。所以我们创建一个线程来进行这个操作。
在线程中使用一个状态机,根据每次的event来进行不同的操作,这也是瑞萨提供的例程的写法。
在插入usb设备后,拿到的event会变为USB_STATUS_CONFIGURED,这时候FSP已经帮我们枚举好了设备,可以直接进行控制。下一步是发送SetLineCoding和SetControlLineState来配置串口,例如波特率和奇偶校验位等。使用hostControlTransfer发起一个控制传输。
所有配置工作都结束后,就可以使用R_USB_Read和R_USB_Write两个接口来接收和发送串口数据了。简单地在FinSH中添加一个命令来方便我们测试。
刚好模板工程中的按键也是开启使用的状态,我们增加一个回调来按键发送串口数据。
编译下载,使用一个micro usb转USB-A的otg连接线,就可以接入一个usb串口设备使用了。刚好手上还有上次参加开发者大会的活动获得的板子,于是在上面简单写了一个usbd_cdc的程序,将它们连接起来。
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系统是有完善支持的。
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来做传输,感觉测试不到最快传输速度,所以这个环节只能略过了。
代码与参考资料
源码已经开源到了github上,感兴趣的同学可以识别下方二维码或复制下方链接在浏览器中打开,前往github网页上查看参考。
cpk-ra6m4-usbh-cdc-demo
https://github.com/VxTeemo/cpk-ra6m4-usbh-cdc-demo
更多参考资料
Renesas USB MCU USB Basic Host and Peripheral Driver using.pdf
https://oss-club.rt-thread.org/uploads/20220406/12e477786db53794f1bb48c6c1b66fd9.pdf
CPK-RA6M4用户手册
https://oss-club.rt-thread.org/uploads/20220406/bd0c6707ec63aa179b2a337d5dbd2233.pdf
RA6M4 datasheet
https://oss-club.rt-thread.org/uploads/20220406/0fa9ca3da04f687db684a4e6f9230725.pdf
RA6M4_Group_User’s_Manual_Hardware.pdf
https://oss-club.rt-thread.org/uploads/20220406/92c2218e2db4b08cff4b6f34cb61268b.pdf
CPK-RA6M4 MCU评估板原理图.pdf
https://oss-club.rt-thread.org/uploads/20220406/460d66bee9aa09a6036f302890ebc737.pdf
向左滑动查看更多
心得体会
拿到开发板后,感觉还是具有一定挑战性的,首先是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
原文标题:【开发板评测笔记】Renesas RA6M4开发板之USB-H(下)
文章出处:【微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !