在线时间11 小时
UID2108887
注册时间2014-11-15
NXP金币0
该用户从未签到
注册会员

- 积分
- 178
- 最后登录
- 2018-6-1
|
在一些简单的应用中,有很多客户使用KDS+PE+SDK1.3做项目的开发,由于在目前的Processor Expert(PE)中基于SDK1.3的组件已经完整支持了常用的GPIO、SPI、UART、定时器等内部外设和文件系统、以太网协议栈等中间件的驱动,所以可以大大简化了开发的周期。
但是当客户在使用PE中SDK1.3的组件实现USB的CDC功能,却发现PE中并没有现成的CDC类的驱动组件,而只有HID和MSD类的驱动组件,如下图所示。那应该如何使用KDS+PE+SDK1.3实现USB CDC功能呢?于是笔者结合网上资料摸索了一个步骤,简单记录于此,以供参考。
本文档的目的在于,一方面可以实现PE中暂不支持的CDC类(当然同样的方法用户也可以用来实现Audio 类、PHDC类、复合类等),另一方面方便客户理解USB协议栈的文件结构。简言之,本文档目的在于实现在当前PE中暂不支持的CDC类,描述中尽量简化步骤,方便读者理解和快速实现。
本教程的好处在于,一方面可以实现PE中暂不支持的CDC类(当然同样的方法用户也可以用来实现Audio 类、PHDC类、复合类等),另一方面方便客户理解USB协议栈的文件结构。简言之,本文档目的在于实现在当前PE中暂不支持的CDC类,描述中尽量简化步骤,方便读者理解和快速实现。
Step 1: File->New->Kinetis Project->Board, 选择 Processor Expert;记得修改build Option
Stack Size 0x1000(否则出现unknown device)
Heap Size 0x0400
Step 2: 添加fsl_usb_framework 组件到工程,并设定Baud Rate;
Step 3:在fsl_usb_framework 组件属性框中,使能USBCFG_DEV_CDC类,并Disable组件的自动初始化功能;
Step 4:完成配置, 点击Gernerate Code生成代码;
Step 5:转至以下目录1中拷贝classes文件夹,粘贴到到工程目录2下;(基础文件拷贝)
目录1:C:\Freescale\KSDK_1.3.0\usb\usb_core\device\sources\
目录2:KDS工程/SDK/usb/usb_core/device/sources
Step 6:删除刚才目录2下的除cdc/common/include之外的其他文件夹,只保留CDC相关目录。
Step 7:转至以下目录中拷贝usb_descriptor.h,usb_descriptor.c以及virtual_com.h三个文件到KDS工程/Sources/目录下; (不要拷贝virtual_com.c)
C:\Freescale\KSDK_1.3.0\examples\frdmk64f\demo_apps\usb\device\cdc\virtual_com\
Step 8:添加文件搜索路径到工程;
"${ProjDirPath}/SDK/usb/usb_core/device/sources/classes/include"
"${ProjDirPath}/SDK/usb/usb_core/device/sources/classes/include/config"
"${ProjDirPath}/SDK/usb/usb_core/device/sources/classes/common"
"${ProjDirPath}/SDK/usb/usb_core/device/sources/classes/cdc"
Step 9:依照virtual_com.c修改main.c,编译代码并下载程序;
Note:void APP_init(void)在KSDK1.2.0和KSDK1.3.0之间有些差异,如果是SDK1.3需要修改:
cdc_config.board_init_callback.callback = NULL;
Step 10:连接上USB接口,会在设备管理器中显示“MCU VIRTUAL COM DEMO”,前面又有一个黄色感叹号表示驱动未安装。然后按照SDK1.3 CDC demo中read_me.pdf的步骤安装CDC驱动即可,此处不再赘述。
完成后会在设备管理器显示对应的虚拟串口,可以通过串口助手打开该串口,进行测试,当前实现的是一个echo输入回显功能。
至此,使用KDS+PE+SDK1.3成功实现了USB 的CDC功能。
|
|