CKS32F4xx系列MCU的OTG_FS功能详解

usb是英文universal serial bus(通用串行总线)的缩写,而其中文简称为“通用串行总线“,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在pc领域的接口技术。usb发展到现在已经有usb1.0/1.1/2.0/3.0等多个版本。目前用的最多的就是usb1.1和usb2.0,usb3.0目前已经开始普及。
cks32f4xx系列自带的usb符合usb2.0规范。标准usb共四根线组成,除vcc/gnd外,另外为d+和d-,这两根数据线采用的是差分电压的方式进行数据传输的。在usb主机上,d-和d+都是接了15k的电阻到地的,所以在没有设备接入的时候,d+、d-均是低电平。而在usb设备中,如果是高速设备,则会在d+上接一个1.5k的电阻到vcc,而如果是低速设备,则会在d-上接一个1.5k的电阻到vcc。这样当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。 cks32f4xx系列芯片自带有usb otg fs(全速)和usb otg hs(高速),其中hs需要外扩高速phy芯片实现,我们本章节对usb otg fs进行介绍。
usb otg fs主要特性
cks32f4xx系列的usb otg fs是一款双角色设备(drd)控制器,同时支持从机功能和主机功能,完全符合usb2.0规范的on-the-go补充标准。此外,该控制器也可配置为“仅主机”模式或“仅从机”模式,完全符合usb2.0规范。在主机模式下,otgfs支持全速(fs,12mb/s)和低速(ls,1.5mb/s)收发器,而从机模式下则仅支持全速(fs,12mb/s)收发器。otg fs同时支持hnp和srp。cks32f4xx系列的usb otg fs主要特性可分为三类:通用特性、主机模式特性和从机模式特性。
- 通用特性 -
1、经usb-if认证,符合通用串行总线规范第2.0版
2、集成全速phy,且完全支持定义在标准规范otg补充第1.3版中的otg协议:
支持a-b器件识别(id线)
支持主机协商协议(hnp)和会话请求协议(srp)
允许主机关闭vbus以在otg应用中节省电池电量
支持通过内部比较器对vbus电平采取监控
支持主机到从机的角色动态切换
3、可通过软件配置为以下角色:
具有srp功能的usb fs从机(b器件)
具有srp功能的usb fs/ls主机(a器件)
usb on-the-go全速双角色设备
4、支持fs sof和ls keep-alive令牌
sof脉冲可通过pad输出
sof脉冲从内部连接到定时器2(tim2)
可配置的帧周期
可配置的帧结束中断
5、具有省电功能,例如在usb挂起期间停止系统、关闭数字模块时钟、对phy和dfifo电源加以管理
6、具有采用高级fifo控制的1.25kb专用ram
可将ram空间划分为不同fifo,以便灵活有效地使用ram
每个fifo可存储多个数据包
动态分配存储区
fifo大小可配置为非2的幂次方值,以便连续使用存储单元
7、一帧之内可以无需要应用程序干预,以达到最大usb带宽
- 主机(host)模式特性 -
1、通过外部电荷泵生成vbus电压
2、多达8个主机通道(管道):每个通道都可以动态实现重新配置,可支持任何类型的usb传输
3、内置硬件调度器:
在周期性硬件队列中存储多达8个中断加同步传输请求
在非周期性硬件队列中存储多达8个控制加批量传输请求
4、管理一个共享rx fifo、一个周期性tx fifo和一个非周期性tx fifo,以有效使用usb数据ram
- 从机(slave/device)模式特性 -
1、1个双向控制端点0
2、3个in端点(ep),可配置为支持批量传输、中断传输或同步传输
3、3个out端点(ep),可配置为支持批量传输、中断传输或同步传输
4、管理一个共享rx fifo和一个tx-out fifo,以高效使用usb数据ram
5、管理多达4个专用tx-in fifo(分别用于每个使能的in ep),降低应用程序负荷支持软断开功能
图1 usb otg fs框图
对于usb otg fs功能模块,cks32f4xx系列通过ahb总线访问(ahb频率必须大于14.2mhz),其中48mhz的usb时钟,是来自时钟树图里面的pll48ck(和sdio共用)。不过,我们提供了一套完整的 usb otg驱动库(包括主机和设备),通过这个库可以很方便的实现所要的功能。
软件设计
图2 usb配置代码
配置时,我们重点要配置的就是usb_app文件夹下面的代码。 usb_bsp.c提供了几个usb库需要用到的底层初始化函数,包括:io设置、中断设置、vbus配置以及延时函数等。usb device(slave)和usb host共用这个.c文件。 usbd_usr.c提供用户应用层接口函数,即usb设备类的一些回调函数,当usb状态机处理完不同事务的时候,会调用这些回调函数,我们通过这些回调函数,就可以知道usb当前状态,比如:是否枚举成功、是否连接、是否断开等,根据这些状态,用户应用程序可以执行不同操作,完成特定功能。 要使用usb otg fs,必须在编译器的全局宏定义里面,定义:use_usb_otg_fs 具体的usb库调用函数篇幅较大,不再详细描述,以下为main函数代码:
int main(void){u32t;nvic_prioritygroupconfig(nvic_prioritygroup_2);delay_init(168);uart_init(115200);led_gpio_init();usbh_init(&usb_otg_core_dev,usb_otg_fs_core_id,&usb_host,&hid_cb,&usr_callbacks);while(1){usbh_process(&usb_otg_core_dev, &usb_host);if(bdevicestate==1)//ᬽó½¨á¢áë{if(usbh_check_hidcommdead(&usb_otg_core_dev,&hid_machine)){ usbh_hid_reconnect();}}else{if(usbh_check_enumedead(&usb_host)){ usbh_hid_reconnect();}}t++;if(t==200000){led1=!led1;t=0;}}}


时序分析基本概念介绍—Timing Arc
微波炉原理是电磁波吗
e络盟为工业应用等严苛环境实现无缝连接及安全高效通信
采用系统级封装(SIP)技术的ADAQ23875
NDT推出创新PSG压感触控方案,开拓笔记本Touchpad交互新形态
CKS32F4xx系列MCU的OTG_FS功能详解
路由器处理器
变频电机与直流电机的区别
青岛医疗人工智能科技创新中心揭牌成立
UDP协议原理详解
阳光区块链应用取得什么成就
谷歌、Oculus、三星等公司成立全球VR协会组织 独缺Valve公司
表面洁净度检测仪的功能特点是怎样的
NOR Flash芯片大缺货,华邦未来三季累计涨幅将超过30%
中国创业团队成功研制出可以在空气中成像并交互的显示面板
爱心流水灯实验电路图设计
功率模组是什么东西
传新iPad将于本月27日在大陆正式上市
照明出口也有“失算”的时候
找不到服务器或DNS错误时该怎么办