0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CKS32F4xx系列MCU的OTG_FS功能详解

中科芯MCU 来源:中科芯MCU 2024-01-15 09:26 次阅读

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),降低应用程序负荷支持软断开功能

2d97e4fc-b20c-11ee-8b88-92fbcf53809c.png

图1USB OTG FS框图

对于USB OTG FS功能模块,CKS32F4xx系列通过AHB总线访问(AHB频率必须大于14.2Mhz),其中48Mhz的USB时钟,是来自时钟树图里面的PLL48CK(和SDIO共用)。不过,我们提供了一套完整的 USB OTG驱动库(包括主机和设备),通过这个库可以很方便的实现所要的功能。

软件设计

2dcdbe24-b20c-11ee-8b88-92fbcf53809c.png

图2USB配置代码

配置时,我们重点要配置的就是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;
}
}
}

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350994
  • 收发器
    +关注

    关注

    10

    文章

    3424

    浏览量

    105961
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177812
  • usb
    usb
    +关注

    关注

    60

    文章

    7936

    浏览量

    264483

原文标题:MCU微课堂|CKS32F4xx系列OTG_FS功能

文章出处:【微信号:中科芯MCU,微信公众号:中科芯MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCU微课堂|CKS32F4xx系列产品时钟配置

    作为MCU运行的基础,时钟是单片机各个模块工作时序的最小时间单位,推动单片机的各指令执行,是MCU选型的一个重要指标。CKS32F4xx系列产品具有众多的外设,但并非所有的外设均需要系
    发表于 12-12 10:17 831次阅读

    CKS32F4xx系列ETH通信详解

    CKS32F4xx系列芯片自带以太网模块,该模块包括带专用DMA控制器的MAC 802.3(介质访问控制)控制器
    的头像 发表于 11-10 11:13 992次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信<b class='flag-5'>详解</b>

    CKS32F4xx系列DSP功能介绍

    CKS32F4xx系列使用高性能的32位内核,支持浮点运算单元(FPU),同时还支持DSP指令以及存储保护(MPU)用来加强应用的安全性。
    的头像 发表于 03-04 13:43 1540次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DSP<b class='flag-5'>功能</b>介绍

    CKS32F4xx系列产品串口DMA传输

    在上一讲,我们讲过CKS32F4xx系列的6个串口都支持DMA传输。因此本节我们对CKS32F4xx系列的DMA进行介绍,同时利用DMA对串口数据进行传输。
    的头像 发表于 04-10 11:18 1033次阅读

    CKS32F4xx系列RNG功能设置

      MCU 微课堂 CKS32F4xx 系 列RNG功能 随机数发生器简介     CKS32F4xx系列自带了硬件随机数发生器(RNG),
    的头像 发表于 09-08 10:01 603次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG<b class='flag-5'>功能</b>设置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的头像 发表于 11-06 16:56 847次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC<b class='flag-5'>功能</b>

    CKS32F4xx系列ADC多通道DMA电压采集

    CKS32F4xx系列ADC多通道DMA电压采集
    的头像 发表于 11-06 16:53 1096次阅读

    CKS32F4xx系列ADC单通道电压采集

    CKS32F4xx系列ADC单通道电压采集
    的头像 发表于 11-06 16:54 981次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ADC单通道电压采集

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的头像 发表于 11-06 16:59 672次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的头像 发表于 11-06 17:08 621次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式STOP模式

    CKS32F4xx系列产品Timer的基本使用方法-比较输出

    CKS32F4xx系列产品Timer的基本使用方法-比较输出
    的头像 发表于 11-09 17:39 848次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品Timer的基本使用方法-比较输出

    CKS32F4xx系列产品Timer的基本使用方法-定时操作

    CKS32F4xx系列产品Timer的基本使用方法-定时操作
    的头像 发表于 11-09 17:41 616次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品Timer的基本使用方法-定时操作

    MCU微课堂 | CKS32F4xx系列产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品SPI通信
    的头像 发表于 10-24 17:12 699次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置
    的头像 发表于 10-24 15:14 778次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品GPIO口配置

    CKS32F4xx系列FSMC功能简介

    本课讲为大家讲解CKS32F4xx系列产品的FSMC应用实例,FSMC全称是Flexible Static Memory Controller,读作灵活的静态存储控制器,顾名思义,MCU可以通过FSMC扩展静态内存
    的头像 发表于 04-14 15:06 934次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC<b class='flag-5'>功能</b>简介