8056|9

1366

帖子

6

TA的资源

版主

楼主
 

XMC4800 评测(三)--USB复用设备CDC+HID [复制链接]

本帖最后由 RCSN 于 2019-1-6 14:29 编辑

楼主看到板载的仿真器有虚拟串口,以为是有连接到XMC4800的串口上,但是看了原理图以及手册,是没有的。是接到USIC的一个外设上,看起来是个串口,但是得配置一些相关模式,比如配置启动模式(ASC BSL mode),这里楼主并没有找到官方的相关代码参考,只是用户手册里面有做相关说明,由此不太明白这个模式,在这里为了保险也不做这个。转变思路到USB设备中来,利用官方参考代码,整合描述为复合设备,也就是HID+CDC设备,来作为最初的上下位机交互

  



此帖出自工控电子论坛

最新回复

感谢楼主分享 内容非常细节~~辛苦楼主~~   详情 回复 发表于 2019-6-20 11:16
点赞 关注(1)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复
举报

1366

帖子

6

TA的资源

版主

沙发
 
官方的固件库可以在英飞凌官方的相关链接下载,链接:https://www.infineon.com/cms/cn/ ... ed-on-arm-cortex-m/ 提供了DAVE\IAR\MDK等平台的例子,例子比较丰富,各个外设可以边对着用户手册和代码进行学习,英飞凌的外设实在很丰富,短时间熟悉也不太可能。最好的方式就是利用demo,理解外设整合跑通。
  
  官方使用的第三方USB库是LUFA库,这个库之前用在ATMEL比较多,英飞凌也做了相关的适配文件以便方便平台移植。相比winusb,rl-usb,lufa库方便快速移植上手、可维护性、代码编译占用空间小等。为此官方也做了相关的解释如下:
  
   那么接下来就是移植工作了,这里比较方便,官方也为此做了一些适配以及移植文件,我们直接添加到工程即可。比如HID类设备驱动、CDC类,还有MSC类设备,这里楼主尚未整合。添加的文件如下截图。对于外设库,楼主比较懒,直接用MDK的魔术棒点击生生成。
  

此帖出自工控电子论坛
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 
由于USB启动需要48M时钟支持,但是启动文件的弱定义时钟初始化函数并没有对USB时钟进行初始化,所以第一步我们得自己定义一个时钟初始化,进行相关分频提供一个USB时钟。
我们首先来看下官方提供的时钟树,看起来是比较简约

   可以看出来时钟控制单元(CCU)由两个主要子块组成:时钟发生单元(CGU)、时钟选择单元(CSU)。CGU并行向CSU提供三个时钟:USB PLL时钟fPLLUSB,系统PLL输出时钟fPLL、来自备份时钟源的内部生成时钟fOFI。还有RTC外部晶体模块等。
  具体的一些系统时钟设置可以参考官方手册,这里具体说明外部晶振12M(板载晶振)下的PLL时钟以及USB时钟的配置。在正常模式下,PLL时钟计算公式如下:
  
  在这里官方也提供了一些PLL相关配置例子。
  
  在这里我们配置为120M.如下:

  USB时钟使用PLLUSB下的石基

  
此帖出自工控电子论坛
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

4
 
楼主也是第一次玩USB设备类,对于相关的USB协议实在复杂也没仔细了解,短时间也无法加深了解,我也是在仿真的过程中,逐渐大概了解建立过程。一开始楼主老是只有一个设备出现,另外一个设备并没有出现,后来找找github的相关代码,发现还是设备标识符等配置得不对。
总的流程大概就是,初始化USB、USB中断、建立端点事件处理程序、设备事件处理程序、然后进行USB连接。

    然后连接过程中,主机会不断下发处理设备请求,比如当设备在控制端点上收到Get Descriptor请求时,就传回描述符细节并将相应的描述符发送回USB主机。若主机识别到相对应的设备类,则一次建立成功。如果设备描述符等不正确,会使主机认为是非法USB设备。
   这里还定义了配置描述符结构,定义了HID类和CDC类, 该描述符位于FLASH存储器中,描述了该用法包括有关任何设备接口的信息和端点。 在选择时,枚举过程中USB主机读取描述符配置,以便主机可以与USB设备通信。
   具体可在desriptors文件查看。
   根据根据端点事件处理我们可以回调连接和断开等事件,在这里的接口我们可以直接写入我们的应用逻辑。

  端点事件处理一般是收发信息事件,这里也有相对应的读写回调。比如HID的读写回调如下

  CDC的读写回调。



此帖出自工控电子论坛
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

5
 
在循环里面还需要添加CDC设备任务,HID设备任务,USB任务,以便一直在轮询工作中。这个在RTOS设定比较方便。楼主目前只是放在while里面轮询。后续会移植freertos进行分配任务。



    完成了相关配置之后,下载代码运行。会出现两个设备类,分别是CDC和HID。
   
此帖出自工控电子论坛
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

6
 
好困。不小心就过了明年了。工程在附件,欢迎坛友多交流。新年快乐


USBToHID&CDC.zip

7.12 MB, 阅读权限: 10, 下载次数: 3

此帖出自工控电子论坛
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

7608

帖子

18

TA的资源

五彩晶圆(高级)

7
 
我嘞去,RC好勤奋。
此帖出自工控电子论坛

点评

对,感动哭  详情 回复 发表于 2019-1-1 09:59
 
 

回复

1万

帖子

203

TA的资源

管理员

8
 
freebsder 发表于 2019-1-1 09:28
我嘞去,RC好勤奋。

对,感动哭
此帖出自工控电子论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
RCSN 发表于 2019-1-1 00:48 好困。不小心就过了明年了。工程在附件,欢迎坛友多交流。新年快乐

大神,cdc不通,需要你的帮助,谢谢哈

此帖出自工控电子论坛
 
 

回复

935

帖子

1

TA的资源

禁止发言

10
 

感谢楼主分享 内容非常细节~~辛苦楼主~~

此帖出自工控电子论坛
个人签名存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表