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

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

3天内不再提示

雅特力AT32 OTGHS应用笔记

雅特力 AT32 MCU 2025-03-28 18:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

OTGHS介绍

本章将描述OTGHS支持的一些基本功能。图1.OTGHS框图

c2e89a3a-0bc3-11f0-9434-92fbcf53809c.png

OTGHS特性

OTGHS通用特性:

  • 支持USB2.0协议
  • 内置独立4096字节SRAM
  • 内置USB2.0高速PHY
  • 低功耗模式
  • 支持忽略VBUS状态
  • 支持ID检测以切换主机设备模式
  • 不支持HNP/SRP协议(PHY不支持,不能动态切换模式,只能根据ID状态切换模式)

OTGHS设备模式特性:

  • 支持高速和全速设备
  • 支持内部1.5KΩ上拉
  • 支持软件断开连接
  • 支持1个双向控制端点0
  • 支持7个IN端点,端点号1-7
  • 支持7个OUT端点,端点号1-7
  • 支持控制传输,大容量传输,中断传输,同步传输
  • 端点接收FIFO共享
  • 端点发送FIFO专用
  • 支持内部DMA模式

OTGHS主机模式特性:

  • 支持高速、全速和低速
  • 支持内部15KΩ下拉
  • 支持16个主机通道
  • 支持控制传输,大容量传输,中断传输,同步传输
  • 通道接收FIFO共享
  • 通道发送FIFO专用
  • 支持内部DMA模式

OTGHS高速PHY

OTGHS内置PHY支持高速/全速/低速,为主机和设备模式提供通信支持。

  • DP和DM内置上下拉电阻,由OTGHS根据模式自动使能上下拉电阻当OTGHS处于设备模式时,DP1.5KΩ上拉自动使能当OTGHS处于主机模式时,DP和DM 15KΩ下拉自动使能
  • ID线内置上拉ID线为高电平,默认为设备模式ID线为低电平,为主机模式
  • 设备模式下的VBUS检测(可忽略VBUS检测)设备模式下,仅支持VBUS高低电平检测,当VBUS为高电平,OTGHS认为是有效电平,将使能DP的上拉电阻,让主机识别到设备插入。当VBUS为低电平,OTGHS认为是无效电平,此时不使能DP上拉,处于断开模式。在设备模式下,如果想不检测VBUS,可通过设置寄存器OTGHS_GCCFG.VBUSIG=1来实现,此时可将检测VBUS的引脚释放出来给其它外设使用。
  • PHY的低功耗模式OTGHS全速PHY支持低功耗模式。

OTGHS GPIO引脚

OTGHS使用GPIO引脚如下表所示:表1 OTGHS GPIO引脚c30a1cfa-0bc3-11f0-9434-92fbcf53809c.png注:USB_OE信号当USB在传输数据时,会翻转此信号

OTGHS 12MHz时钟

需要给OTGHS PHY提供12MHz的时钟,建议直接挂12MHz晶振,由晶振直接提供12MHz时钟给PHY。图2.OTGHS 12MHz时钟来源c32b5aaa-0bc3-11f0-9434-92fbcf53809c.png

OTGHS数据FIFO管理

OTGHS分配专用的4096 Byte SRAM作为数据FIFO,在主机或设备模式下,可通过软件配置寄存器给端点/通道分配FIFO,同时可以使用OTG内部DMA实现用户SRAM与FIFO的数据交换。注意:分配的FIFO总大小不要超过4096 Byte
一、设备模式下的FIFO分配设备模式下所有端点的接收共享一个接收FIFO,每个端点的发送对应一个专有的发送FIFO。图3 设备模式FIFO分配c353387c-0bc3-11f0-9434-92fbcf53809c.png

  • RX_FIFO所有端点的接收共享这一块FIFO,配置寄存器OTGHS_GRXFSIZ.RXFDEP,此寄存器值表示接收FIFO大小,注意单位为word(4Byte)。
  • TX_FIFO0端点0的发送FIFO,配置寄存器OTGHS_DIEPTXF0,需要配置起始地址和FIFO大小。OTGHS_DIEPTXF0. INEPT0TXSTADDR=OTGFS_GRXFSIZ.RXFDEPOTGHS_DIEPTXF0. INEPT0TXDEP=端点0发送FIFO大小
  • TX_FIFO1端点1的发送FIFO,配置寄存器OTGFS_DIEPTXF1,需要配置起始地址和FIFO大小。OTGHS_DIEPTXF1.INEPTXFSTADDR=OTGHS_GRXFSIZ.RXFDEP+端点0发送FIFO大小OTGHS_DIEPTXF1.INEPTXFDEP=端点1发送FIFO大小….

注意:对应端点FIFO配置寄存器中FIFO大小值的单位都是word(4Byte)。注意:发送端点的起始地址一般配置为前面所有端点已占用的FIFO大小,例程如端点2的发送FIFO起始地址为RX_FIFO大小+TX_FIFO0大小+TX_FIFO1大小。
二、主机模式下的FIFO分配主机模式下,所有通道共享一个接收FIFO,通道发送FIFO分为非周期性发送FIFO和周期性发送FIFO。非周期性和周期性通过传输类型来区分,每个主机通道寄存器都有配置传输类型,包含4种传输类型:控制传输(Control),同步传输(ISO),批量传输(Bulk),中断传输(Interrupt)

  • 非周期性:控制传输(Control),批量传输(Bulk)
  • 周期性传输:同步传输(ISO),中断传输(Interrupt)

图4 主机模式下FIFO分配c36f2f28-0bc3-11f0-9434-92fbcf53809c.png

  • RX_FIFO所有主机通道的接收共享这一块FIFO,配置寄存器OTGHS_GRXFSIZ.RXFDEP,此寄存器值表示接收FIFO大小,注意单位为word(4Byte)。
  • Non-periodic TxFIFO非周期性的主机通道发送FIFO,配置寄存器OTGHS_GNPTXFSIZ,需要配置起始地址和FIFO大小。OTGHS_GNPTXFSIZ. NPTXFSTADDR=OTGHS_GRXFSIZ.RXFDEPOTGHS_GNPTXFSIZ. NPTXFDEP=非周期性发送FIFO大小
  • Periodic_TxFIFO周期性的主机通道发送FIFO,配置寄存器OTGHS_HPTXFSIZ,需要配置起始地址和FIFO大小。OTGHS_HPTXFSIZ.PTXFSTADDR=OTGHS_GRXFSIZ.RXFDEP+OTGFS_GNPTXFSIZ.NPTXFDEPOTGHS_HPTXFSIZ. PTXFSIZE=周期性发送FIFO大小

注意:对应FIFO配置寄存器中FIFO大小值的单位都是word(4Byte)。

OTGHS中断结构

图5.OTGHS中断结构c3911250-0bc3-11f0-9434-92fbcf53809c.png全局常用中断OTGHS_GINTSTS,此寄存器中包含了主机和设备的中断标志,部分中断标志只在设备模式或者主机模式下有效。

  • 设备和主机模式都有效中断标志OTGHS_GINTSTS. MODEMIS:模式不匹配(主机和设备都适用)OTGHS_GINTSTS. SOF:SOF中断(主机和设备都适用)OTGHS_GINTSTS.RXFLVL:接收FIFO非空(主机和设备都适用)OTGHS_GINTSTS. CONIDSCHG:ID线状态变化(主机和设备都适用)OTGHS_GINTSTS.WKUPINT:唤醒信号中断(主机和设备都适用)
  • 仅主机模式下有效中断标志OTGHS_GINTSTS. NPTXFEMP:非周期发送FIFO为空(主机适用)OTGHS_GINTSTS. PRTINT:主机端口中断(主机适用)OTGHS_GINTSTS. HCHINT:主机通道中断(主机适用)OTGHS_GINTSTS. PTXFEMP:周期性发送FIFO为空(主机适用)OTGHS_GINTSTS. DISCONINT:设备断开(主机适用)
  • 仅设备模式下有效中断标志OTGHS_GINTSTS. USBSUSP:设备挂起(设备适用)OTGHS_GINTSTS. USBRST:USB复位(设备适用)OTGHS_GINTSTS. ENUMDONE:枚举速度完成(设备适用)OTGHS_GINTSTS. ISOOUTDROP:同步OUT包丢失(设备适用)OTGHS_GINTSTS. IEPTINT:IN端点中断(设备适用)OTGHS_GINTSTS. OEPTINT:OUT端点中断(设备适用)OTGHS_GINTSTS. INCOMPISOIN:未完成的同步IN传输(设备适用)

图6.中断处理流程c3b8165c-0bc3-11f0-9434-92fbcf53809c.png

OTG模式

通过配置如下寄存器让OTGHS处于OTG模式:

  • OTGHS_GUSBCFG.FDEVMODE=0(非强制设备模式)
  • OTGHS_GUSBCFG.FHSTMODE=0(非强制主机模式)

OTGHS可以通过检测ID线上的状态来确定当前处于设备模式还是主机模式。当ID状态为高电平时为设备模式,当ID状态为低电平时为主机模式。

寄存器GINTSTS.CURMOD=0,表示当前为设备模式寄存器GINTSTS.CURMOD=1,表示当前为主机模式另外可以根据GINTSTS. CONIDSCHG中断来检测当前ID线的状态是否有变化,当检测到ID线有变化时,根据当前的模式位(GINTSTS.CURMOD),应用程序选择初始化主机程序还是设备程序。图7.OTG模式连接示意图c3ceabce-0bc3-11f0-9434-92fbcf53809c.png

设备模式

OTGHS作为设备时支持高速和全速设备,不支持低速设备。支持8个IN端点(包括端点0),8个OUT端点(包括端点0)。

OTGHS强制作为设备

通过设定如下寄存器将OTGHS强制作为设备:OTGHS_GUSBCFG.FDEVMODE=1(强制设备模式)OTGHS_GUSBCFG.FHSTMODE=0(非强制主机模式)图8.设备模式连接示意图c3e0f464-0bc3-11f0-9434-92fbcf53809c.png注意:绿色线表示可选连接,当使能VBUSIG信号时,VBUS引脚可作为普通I/O。

OTGHS设备常用功能

本节介绍OTGHS作为设备模式时的一些功能。

  • 软件断开可以通过配置设备模式下的寄存器,达到让设备断开与主机的连接。原理是通过控制DP的上拉使能来控制连接状态。配置OTGHS_DCTL.SFTDISCON=1,DP上拉不使能,断开连接。配置OTGHS_DCTL.SFTDISCON=0,DP上拉使能,开始连接。
  • Remote wakeup唤醒当设备进入挂起状态之后,可以通过Remote wakeup功能唤醒主机。唤醒流程:1. 设置OTGHS_DCTL.RWKUPSIG=1;2. 延迟1-15ms3. 设置OTGHS_DCTL.RWKUPSIG=0;
  • 忽略VBUS信号在设备模式下,可以忽略VBUS信号,此模式可以释放VBUS引脚给其它外设使用。通过配置OTGHS_GCCFG.VBUSIG=1来忽略VBUS信号。
  • 支持内部DMAIN/OUT端点都支持DMA操作,可通过DMA交换USB FIFO和用户SRAM的数据。


OTGHS设备端点配置

本节简单介绍OTGHS端点寄存器的配置。
一、IN端点配置IN端点寄存器OTGHS_DIEPCTLx(x为0~7),端点寄存器存放端点的基本信息。如下是一个IN端点的基本配置选项:

  • OTGHS_DIEPCTLx.MPS(最大包长度)
  • OTGHS_DIEPCTLx.EPTYPE(端点类型:控制传输,同步传输,块传输,中断传输)
  • OTGHS_DIEPCTLxTXFNUM(发送FIFO编号,正常跟端点号相同)
  • OTGHS_DIEPCTLx.USBACEPT(激活端点)
  • OTGHS_DIEPCTLx.SNAK(设置端点为NAK状态)
  • OTGHS_DIEPCTLx.CNAK(清除端点NAK状态)
  • OTGHS_DIEPCTLx.STALL(设置端点为STALL状态)
  • OTGHS_DIEPCTLx.EPTENA(开始传输数据)


二、OUT端点配置OUT端点寄存器OTGHS_DOEPCTLx(x为0~7),端点寄存器存放端点的基本信息。如下是一个OUT端点的基本配置选项:

  • OTGHS_DOEPCTLx.MPS(最大包长度)
  • OTGHS_DOEPCTLx.EPTYPE(端点类型:控制传输,同步传输,块传输,中断传输)
  • OTGHS_DOEPCTLx.USBACEPT(激活端点)
  • OTGHS_DOEPCTLx.SNAK(设置端点为NAK状态)
  • OTGHS_DOEPCTLx.CNAK(清除端点NAK状态)
  • OTGHS_DOEPCTLx.STALL(设置端点为STALL状态)
  • OTGHS_DOEPCTLx.EPTENA(开始传输数据)

主机模式

OTGHS作为主机模式时支持高速/全速/低速设备,同时支持16个主机通道。

OTGHS强制作为主机

通过设定如下寄存器将OTGHS强制作为主机,此时DP/DM下拉自动使能:

  • OTGHS_GUSBCFG.FDEVMODE=0(非强制设备模式)
  • OTGHS_GUSBCFG.FHSTMODE=1(强制主机模式)

图9.主机模式连接示意图c40780a2-0bc3-11f0-9434-92fbcf53809c.png

OTGHS主机常用功能

  • 支持高速、全速和低速设备通过OTGHS_HPRT.PRTSDP判断当前连接的设备是全速设备还是低速设备;OTGHS_HPRT.PRTSDP=0表示高速OTGHS_HPRT.PRTSDP=1表示全速OTGHS_HPRT.PRTSDP=2表示低速
  • 复位通过设置OTGHS_HPRT.PRTRST来设置端口复位;OTGHS_HPRT.PRTRST=1;延时10msOTGHS_HPRT.PRTRST=0;
  • 挂起通过设置OTGHS_HPRT.PRTSUP=1来设置端口挂起,此时主机停止发送SOF;
  • 支持内部DMA主机通道支持DMA操作,可通过DMA交换USB FIFO和用户SRAM的数据

OTGHS主机通道配置

主机通道配置寄存器OTGHS_HCCHARx(x为0~15),通道寄存器存放通道的基本信息。如下是一个通道的基本配置选项:

  • OTGHS_HCCHARx.MPS(最大包长度)
  • OTGHS_HCCHARx.EPTNUM(指示设备端点号)
  • OTGHS_HCCHARx.EPTDIR(指示设备端点方向OUT/IN)
  • OTGHS_HCCHARx.LSPDDEV(低速设备)
  • OTGHS_HCCHARx.EPTYPE(端点类型:控制传输,同步传输,块传输,中断传输)
  • OTGHS_HCCHARx.MC(周期性传输在每帧内传输的事务个数)
  • OTGHS_HCCHARx.DEVADDR(设备地址)
  • OTGHS_HCCHARx.ODDFRM(周期性传输奇数帧/偶数帧)
  • OTGHS_HCCHARx.CHDIS(通道禁止)
  • OTGHS_HCCHARx.CHENA(通道使能)

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

    关注

    0

    文章

    191

    浏览量

    9086
  • AT32
    +关注

    关注

    1

    文章

    121

    浏览量

    3105
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    识别AT32 MCU的应用笔记

    本应用笔记介绍了在AT32微控制器上如何实现当前使用内核版本、MCU厂商及型号的识别
    发表于 10-24 06:37

    AT32 PWC应用笔记

    AT32 PWC应用笔记主要以低功耗为基础进行讲解和案例解析。
    发表于 10-25 06:45

    携高效能AT32 MCU“芯”动亮相ICCAD 2020

    高峰论坛,获得了业界人士、广大客户及众多媒体的广泛关注。 (供图,下同) 在同期举办的IP 与 IC 设计专题论坛上,
    的头像 发表于 12-16 17:12 2660次阅读

    携高性能AT32 MCU精彩亮相全球MCU生态发展大会

    技术、边缘AI、新兴应用和生态发展等热门议题。 业务处长陈佳延在大会发表了题为“
    的头像 发表于 08-30 10:04 5220次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>携高性能<b class='flag-5'>AT32</b> MCU精彩亮相全球MCU生态发展大会

    AT-Link Family为用户带来更完美开发体验

    AT-Link Family由AT-Link、AT-Link-Pro、AT-Link-ISO与AT-Link-EZ四款编程调试工具组成,为采用AT32系列MCU进行方案设计和量产
    的头像 发表于 07-29 15:14 1435次阅读

    携高性能 MCU亮相ELEXCON 2022,持续发中高端

    32位微控制器的创新领导者科技携高性能AT32 MCU亮相ELEXCON 2022,期间携工业控制、电机控制、消费电子、智能家居及汽车电子等五大领域近百款产品与方案亮相此次展会,
    发表于 11-17 14:30 747次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>携高性能 MCU亮相ELEXCON 2022,持续发<b class='flag-5'>力</b>中高端

    AT32 SPI

    AT32 SPI 科技AT32F415系
    发表于 03-30 10:44 843次阅读

    携高性能AT32 MCU精彩亮相D Forum 2021 微控制器论坛

    AT32高效能MCU平台–持续布局多元化应用市场”的主题演讲。产品与行销处长杜立博先生在演讲中首先介绍了公司近几年来取得的成绩,
    的头像 发表于 02-24 09:33 1364次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>携高性能<b class='flag-5'>AT32</b> MCU精彩亮相D Forum 2021 微控制器论坛

    AT32 MCU完整生态系统,加速创新开发进程

    和技术支持等都是MCU产品竞争的关键。除了用先进工艺开发产品,还秉持服务精神持续完善整个生态链,构建了一个基于AT32MCU的开发平台,从系统开发阶段至量产
    的头像 发表于 03-17 09:42 1637次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU完整生态系统,加速创新开发进程

    展台首日速递,AT32 MCU精彩亮相

    8月23日,elexcon2023深圳国际电子展在深圳会展中心(福田)正式拉开帷幕!携AT32MCU精彩亮相,电机控制、工业控制、消费&商务、电力&电源、智能家电及汽车电子等
    的头像 发表于 08-24 08:17 1221次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>展台首日速递,<b class='flag-5'>AT32</b> MCU精彩亮相

    如何使用AT32 MCU定时器进行PWM输入测试

    如何使用AT32 MCU定时器进行PWM输入测试
    的头像 发表于 10-27 14:20 4819次阅读
    如何使用<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU定时器进行PWM输入测试

    AT32 MCU实现高效电机驱动控制与应用

    发展。受邀出席此次会议,产品市场总监林金海发表了题为“AT32MCU实现高效电机驱动
    的头像 发表于 11-17 08:15 1445次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU实现高效电机驱动控制与应用

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32 MCU产品,SEGGER工具链的加持使AT32
    的头像 发表于 02-23 10:27 958次阅读

    AT32F423入门使用指南

    初步环境准备开发环境下载地址:
    的头像 发表于 05-14 08:15 4387次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423入门使用指南

    AT32 MCU推动低空经济发展

    AT32系列MCU凭借288MHz主频与高精度外设,为无人机飞控、电调及云台提供核心算支持,实现厘米级定位与高效动力控制,显著提升在
    的头像 发表于 12-04 09:53 1182次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU推动低空经济发展