打印
[Kinetis]

移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25

[复制链接]
952|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
后会无期1|  楼主 | 2015-4-17 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

现在越来越多的用户在使用USB的CDC类做USB虚拟串口,毕竟现在笔记本已经基本没有9针串口了,再去拿一个USB转串口线还是比较麻烦的,所以USB CDC类还是不错的选择。而好消息是,ARM官网为其Cortex-M系列(目前支持M0, M0+, M3, M4)定制化了一套非常精简的USB协议栈,这套协议栈在Keil安装目录下以.lib的形式提供,但是其在ARMmbed开源调试器CMSIS-DAP项目中将该协议栈开放出来。该协议支持USB Host和USB Device,其中USB Host支持HID和MSC类,USB Device支持HID类,MSC类,CDC类,Audio类和自定义设备类,其整体功能框架如下图,并在CMSIS-DAP项目中适配了Freescale的K20DX128Vxx5和NXP的LPC11u35及LPC4322。

    为了适配USB CDC类的应用,我将CMSIS-DAP项目中的关于USB CDC类协议栈文件抠了出来,并将其移植到FRDM-KL25的官方SampleCode里,移植过程非常简单,使用起来也很方便,下面简单介绍下移植的环境和步骤:

开发环境:IAR v7.3

开发平台:FRDM-KL25

参考例程:KL25_SC中kl25_sc_rev10\klxx-sc-baremetal\build\iar\platinum(基于该例程进行修改)


相关帖子

沙发
后会无期1|  楼主 | 2015-4-17 21:09 | 只看该作者

1. 将CMSIS USB Stack协议栈相关文件放到kl25_sc_rev10\klxx-sc-baremetal\src\projects\platinum文件夹下,如下图:

2. 打开platinum例程的IAR工程,并将CMSIS USB Stack->src和CMSIS USB Stack->Porting use两个文件夹下的文件添加到IAR工程管理目录下,如下图,并在IAR的General Options->C/C++ Complier->Preprocesser选项中添加CMSIS USB Stack->inc的头文件搜索路径,从下图可以看到USB Device CDC类相关的文件只有7个,比较清晰简洁:

3. 打开main.c文件,将如下图的相关代码全部copy并覆盖掉原代码,如下图所示:

4. 此外,针对该工程还需要修改两个部分,一是需要配置时钟部分PLL锁相环的倍频系数,使其倍到96M(因为USB的时钟源为MCGPLL/2=48),即修改freedom.h中PLL0_VDIV参数为48,然后由于PLL输出96M,其Coreclock和busclock的配置需要保证SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(1) | SIM_CLKDIV1_OUTDIV4(1);即Coreclock=48MHz,Busclock=24M。二是将USB的中断服务函数加载到中断向量表里面,即打开isr.h,配置如下:

5. 按照以上步骤修改完毕,重新编译并下载到KL25,将FRDM-KL25的另个USB口插到电脑即会弹出安装驱动的提示,由于程序中我将设备描述符中的VID和PID改成了官方USB Stack 4.1.1的配置,所以安装驱动时直接选择其目录下的inf文件即可(该**最后我附上的代码中也带了该驱动文件),安装完后即可枚举成Virtual Com Port的虚拟串口设备,如下图。然后打开串口调试助手,输入任意连续的字符串并点击发送(端口我配置了最大包的size是32bytes,但是协议中自带拆包打包等功能,不需要用户关心),可以接收返回同样的数据,如下图所示。


使用特权

评论回复
板凳
后会无期1|  楼主 | 2015-4-17 21:36 | 只看该作者
附件中为基该工程完整的代码包供参考:
KL25 CMSIS USB Stack.zip (611.58 KB)

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2015-4-20 15:25 | 只看该作者
   非常感谢你关于Kinetis的经验分享 !

使用特权

评论回复
5
action=login| | 2015-5-13 23:02 | 只看该作者

能在 non-os 下实现 USB Stack 吗?感谢楼主的分享!

使用特权

评论回复
6
奥德赛| | 2015-5-14 13:47 | 只看该作者
kl46上能直接用啊

使用特权

评论回复
7
奥德赛| | 2015-5-14 13:48 | 只看该作者
在st单片机上有实现吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

208

帖子

0

粉丝