查看: 3112|回复: 1

[求助] [转]移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25

[复制链接]

该用户从未签到

7

主题

193

帖子

0

中级会员

Rank: 3Rank: 3

积分
399
最后登录
2018-5-3
发表于 2015-4-22 15:03:15 | 显示全部楼层 |阅读模式
      现在越来越多的用户在使用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。
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25 1.png


    为了适配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. 将CMSIS USB Stack协议栈相关文件放到kl25_sc_rev10\klxx-sc-baremetal\src\projects\platinum文件夹下,如下图:
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25 2.png


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个,比较清晰简洁:
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25 3.png


3. 打开main.c文件,将如下图的相关代码全部copy并覆盖掉原代码,如下图所示:
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25 4.png


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,配置如下:
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25 5.png


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

附件是完整的移植好的代码包供参考。
KL25 CMSIS USB Stack.zip (611.58 KB, 下载次数: 27)
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2017-4-27 10:34
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    507

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1450
    最后登录
    2020-8-3
    发表于 2015-4-22 17:40:22 | 显示全部楼层
    赞一个
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 19:32 , Processed in 0.133861 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表