您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> 设计中心 >> 嵌入式系统 >> 正文
  [组图]移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25           ★★★ 【字体:
移植ARM CMSIS USB Stack的CDC类到飞思卡尔Kinetis KL25
作者:61IC    文章来源:61IC    点击数:    更新时间:2015-5-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。

    为了适配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文件夹下,如下图:

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,但是协议中自带拆包打包等功能,不需要用户关心),可以接收返回同样的数据,如下图所示。

    好了,今天就不多聊了,简单介绍到这,博客最后是完整的移植好的代码包供参考。此外,该代码参考了超核电子的开发包,在此表示感谢。有点累,休息一下,呵呵,未完待续~

附件:http://www.61icbbs.com/forum.php?mod=viewthread&tid=63676&page=1&extra=#pid74973

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    ARM你必须知道的事儿——为啥…
    ARM常用汇编指令
    ARM-Linux一移植必杀技
    ARM处理器内核列表
    binutils工具集,软件开发利…
    基于ARM的微波频率自动测量系…
    基于ARM的Linux系统移植研究…
    关于ARM的22个常用概念介绍
    对ARM加载域和运行域的理解
    ARM-LINUX-2.6.36-LDD3-scul…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2