DWC USB2.0协议学习1--产品概述

本章开始学习记录DWC_otg控制器(新思USB2.0)的特点、功能和应用。

新思USB 2.0 IP主要有两个文档需要参考:

《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Data book》

《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Programming Guide》

前者是描述IP的架构信号、配置寄存器等,后者是编程指导驱动编写主要参考这一部分进行。

1. 系统概述

首先是系统概述,站在系统层面来分析DWC_otg控制器,对DWC_otg控制器的功能做简单概述,典型的系统框架结构图如下图1-1所示,其中浅蓝色部分是根据配置决定,黑色部分是所有配置都有的。

1.1 AHB总线接口

上图1-1左边部分是AHB总线接口,这一部分主要是实现CPU和DWC_otg控制器信息交互功能。

AHB Slave I/F:AHB slave接口,此时DWC_otg控制器是从设备,CPU通过该接口对DWC_otg的控制和状态寄存器(CSR)、数据FIFO和队列进行读写访问。

AHB Master I/F(可选的):AHB master接口,对应DMA部分描述,使能DMA时,DMA是主设备,负责在系统的memory和内部的RAM之间搬运数据。

1.2 Data RAM接口

Data FIFO RAM/IF上图1-1下面部分是Data RAM接口,连接一个外部单端口FIFO RAM(SPRAM)用于数据存储

1.3 PHY 接口

DWC_otg控制器支持3种PHY接口,如上图1-1右边部分所示:

(1)UTMI+ Level 3 PHY 接口(Revision 1.0 or HSIC)

UTMI+PHY可以是单向或双向的,可以配置为8、16或8/16位数据总线(软件可配置)。UTMI+接口可以配置为与符合修订版1.0的PHY或符合HSIC的PHY一起工作。

(2)ULPI PHY 接口 (Revision 1.1)

ULPI PHY可以是单向或双向的,具有8位SDR或4位DDR总线(软件可配置)。

(3)USB 1.1全速串行收发器接口

USB 1.1全速串行收发器可以作为专用接口,也可以在芯片外部PHY的UTMI+或ULPI接口上共享引脚(软件可配)。

1.4 外部DMA控制器接口

当前DWC_otg控制器已经不支持外部DMA接口,不展开。

1.5 其他可选接口

  • AHB Master 接口(使能内部DMA时,DMA是主设备,负责发送和接收数据到AHB总线上)。
  • 供应商控制接口可以访问ULPI和UTMI+ PHY寄存器
  • I2C接口,用于USB 1.1 FS模式下的OTG控制
  • 通用I/O (GPIO)接口
  • SOF更新翻转接口(不用于DWC otg)
  • SOF输入计数接口(不用于DWC otg)
  • 设备和主机模式下支持Scatter/Gather DMA
  • 设备模式下支持多处理器中断

1.6 发送和接收FIFO

DWC_otg控制器上的发送和接收FIFO接口用于将数据移入和移出数据FIFO RAM。这些分为周期性(用于同步和中断传输)或非周期性(用于批量传输和控制传输),总结如下:

  • 非周期性主机OUT传输公用一个Tx FIFO。
  • 周期性主机OUT传输,可以选择一个独立周期传输FIFO。
  • 设备模式下IN端点可选公用非周期性Tx FIFO,和多个周期性TxFIFO
  • 用于周期性/非周期性设备IN传输的每个IN端点可选专用Tx FIFO
  • 主机模式中断OUT和设备模式中断IN(仅在Shared FIFO 操作模式)传输可以编程为通过非周期传输FIFO或周期传输FIFO。

2. 功能列表

2.1 一般功能

  • 支持OTG2.0和OTG1.3,软件可配.OTG2.0支持ADP (Attach detection Protocol)。
  • 支持3种速率:
  1. High-Speed (HS, 480-Mbps)
  2. Full-Speed (FS, 12-Mbps)
  3. Low-Speed (LS, 1.5-Mbps)。
  • 支持多种低功耗相关配置选项。
  • 支持DMA和非DMA操作方式。
  • MAC-Phy支持多种接口。
  • AHB和PHY接口支持使用不同的时钟,以简化集成。
  • 包括控制端0在内,一共最多支持16个双向端点。
  • DWC_otg作为设备使用时,UTMI+ PHY时不支持低速模式。
  • 最多支持16个主机通道。在主机模式下,当需要支持的设备的端点数量大于支持的主机通道数,软件可以重新编程通道来支持多达127个设备,每个设备有32个端点(IN + OUT),最多4064个端点。
  • Host Buffer DMA模式, Slave模式支持外部HUB连接。
  • 包括自动ping功能。
  • 支持低速模式下的Keep-Alive和高速/全速模式下的SOFs。

2.2 可配置功能

  • 可根据用户需求,使用coreConsultant utility配置控制器。
  • 能够为低功耗模式选择多个电源轨
  • 可选择多种DMA操作模式
  • 可根据需求,选择Mac-Phy接口类型

2.3 应用接口功能

  • AHB的应用程序接口:
  1. AHB从接口,用于访问控制和状态寄存器(CSRs)、数据FIFO和队列。
  2. 可选的AHB主接口,内部DMA使能时给Data FIFO访问使用。
  3. 特定配置下AHB时钟最高可达270MHz。
  • AHB总线上只支持32位数据。
  • 支持通过pin配置小端或者大端模式。
  • AHB从接口支持INCR4,INCR8,INCR16,INCR和SINGLE传输。
  • AHB主接口支持拆分、重试和错误AHB响应。AHB从机接口上不产生拆分和重试响应。
  • DMA模式AHB主接口支持软件配置AHB Burst类型。
  • 只能处理固定的burst address对齐,比如INCR16则地址的位[5:0]都要是0
  • 在AHB主接口上可生成AHB忙周期。
  • 可处理1KB的边界。

2.4 MAC-PHY接口特征

  • 支持以下MAC-PHY接口
  1. UTMI 8/16
  2. ULPI
  3. HSIC
  4. IC_USB (Low/Full速)
  5. FS 和UTMI共享
  • 支持UTMI+ Level 3 接口(Revision 1.0, February 25th, 2004). 8, 16, 和 8/16位数据总线。
  • 支持ULPI接口 (Revision 1.1rc, September 1st, 2004), 8-位 SDR, 4-bit DDR, 6-pin Serial, 3-pin Serial 和 Carkit。
  • UTMI+ L3 和 ULPI可同时存在,由软件选择,或者直接配置只使用一种。
  • 只有在选择了UTMI+的情况下,才能选择HSIC接口。否则无法选择HSIC接口
  • I2C接口。
  • 支持UTMI-to-UTMI Bridge。

2.5 系统Memory体系结构

  • 支持Slave,内部DMA 模式。
  • 使用内部DMA模式时还支持Descriptor-Based Scatter/Gather DMA。

2.6 Non-DWORD对齐支持

  • 主机模式:

     Scatter Gather DMA模式,IN和OUT传输,支持缓冲区的Non-DWORD对齐。

     Buffer DMA和Slave模式,IN和OUT传输,不支持缓冲区的Non-DWORD对齐。

  • 设备模式:

    Scatter Gather DMA模式,IN和OUT传输,支持缓冲区的Non-DWORD对齐。

    Buffer DMA和Slave模式,IN和OUT传输,不支持缓冲区的Non-DWORD对齐。

2.7 内部Memory特征

  • 在Slave和DMA模式,可以给设备的每个IN端点都配置一个专用的传输FIFO。每个FIFO可以保存多个包。
  • 包括可选的Remote Memory Support接口,用于向控制器发出DMA写入完成事件的信号。
  • 利用单端口RAM替代双端口RAM以减少面积和功耗。
  • 支持传输时动态修改端点FIFO的大小。
  • 支持端点FIFO可不是2的指数倍对齐,以利用连续的存储位置。
  • 在主机和设备模式下共享硬件寄存器,以减少门控数量。
  • 设备模式时如果启用DMA并选择专用的Tx FIFO,DMA收发阈值可配,阈值可以通过全局寄存器配置,为了支持配置阈值AHB时钟必须60MHz以上。

2.8 软件功能

为了减少门数和提供灵活性,一些功能由软件去实现:

  • 设备模式,软件协助硬件实现非周期IN时序(仅适用Shared FIFO操作)。
  • 软件处理USB命令(检测SETUP事务,并将其命令有效载荷转发给应用程序进行解析)。
  • 软件处理USB错误。

2.9 功耗优化

  • 有源时钟门控功能:允许控制器在USB和AHB通信的IDLE时段内关闭AHB和PHY时钟,来降低动态功耗。同样也可以在SPRAM未使用时关闭RAM的时钟输出。
  • 支持Link Power Management (LPM)。
  • 几个节能功能,包括两个用于高级电源管理的电源轨。可以根据自己的要求选择以下节能选项:
  1. 关闭时钟门控
  2. 部分断电
  3. 休眠
  • USB Suspend,LPM和Session-Off模式支持PHY时钟门控。
  • USB Suspend和Session-Off模式支持AHB时钟门控。
  • USB Suspend和 Session-Off模式支持部分掉电。
  • 层次结构支持多个电源轨,以便在挂起期间启用休眠功能。
  • 输入信号需要powered-off的块驱动到safe 0
  • Data FIFO RAM不使用时关闭片选。
  • Data FIFO RAM支持时钟门控。
  • 设备和主机模式都支持在USB Suspend,LPM和Session-Off 模式时切换到32-KHz低频时钟。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题

前言 本篇文章主要是记录解决百问网论坛上面设置 IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题,如下图: 一、查看原理图,找出对应引脚 在这里我们如何确定哪个扩展口中的引脚输出PWM波呢?我们可以通过查看原理图。 查看…

作业6.20

1.已知网址www.hqyj.com截取出网址的每一个部分(要求,该网址不能存入文件中) 2.将配置桥接网络的过程整理成文档,发csdn 步骤i:在虚拟机设置中启用桥接模式 1. 打开VMware虚拟机软件。 2. 选择您想要配置的虚拟机,点击菜单栏中的“…

C++ 基础:指针和引用浅谈

指针 基本概念 在C中,指针是存储其他变量的内存地址的变量。 我们在程序中声明的每个变量在内存中都有一个关联的位置,我们称之为变量的内存地址。 如果我们的程序中有一个变量 var,那么&var 返回它的内存地址。 int main() {int var…

北大医院副院长李建平:用AI解决临床心肌缺血预测的难点、卡点和痛点

2024年6月14日,第六届北京智源大会在中关村展示中心开幕,海内外的专家学者围绕人工智能关键技术路径和应用场景,展开了精彩演讲与尖峰对话。在「智慧医疗和生物系统:影像、功能与仿真」论坛上,北京大学第一医院副院长、…

java复习宝典,jdbc与mysql数据库

一.java 1.面向对象知识 (1)类和对象 类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成。 类是对象的概括或者抽象,对象是类的实例化。 举例:例如车有很多类型&#xf…

计算机系统基础知识(下)

嵌入式系统以及软件 嵌入式系统是为了特定应用而专门构建且将信息处理过程和物理过程紧密结合为一体的专用计算机系统,这个系统目前以涵盖军事,自动化,医疗,通信,工业控制,交通运输等各个应用领域&#xff…

【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)

【Matlab 六自由度机器人】机器人动力学概述 近期更新前言正文一、拉格朗日方程的推导1. 单自由度系统2. 单连杆机械臂系统3. 双连杆机械臂系统 二、MATLAB实例推导1. 机器人模型的建立2. 动力学代码 总结参考文献 近期更新 【汇总】 【Matlab 六自由度机器人】系列文章汇总 …

JVM专题十:JVM中的垃圾回收机制

在JVM专题九:JVM分代知识点梳理中,我们主要介绍了JVM为什么采用分代算法,以及相关的概念,本篇我们将详细拆分各个算法。 垃圾回收的概念 垃圾回收(Garbage Collection,GC)确实是计算机编程中的…

【自然语言处理系列】探索NLP:使用Spacy进行分词、分句、词性标注和命名实体识别,并以《傲慢与偏见》与全球恐怖活动两个实例文本进行分析

本文深入探讨了scaPy库在文本分析和数据可视化方面的应用。首先,我们通过简单的文本处理任务,如分词和分句,来展示scaPy的基本功能。接着,我们利用scaPy的命名实体识别和词性标注功能,分析了Jane Austen的经典小说《傲…

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持

RocketMQ源码学习笔记:Broker启动流程

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Broker启动流程2、一些重要的类2.1、MappedFile2.2、MessgeStore2.3、MessageStore的加载启动流程 3、技术亮点3.1、 内存映射3.1.1、简介3.1.2、源码 1、Broker启动流程 Broker启动流程…

RabbitMQ中lazyqueue队列

lazyqueue队列非常强悍 springboot注解方式开启 // 使用注解的方式lazy.queue队列模式 非常GoodRabbitListener(queuesToDeclare Queue(name "lazy.queue",durable "true",arguments Argument(name "x-queue-mode",value "lazy&…

3.蓝牙模块HC-08

目录 一.简介​编辑 二.主要参数 三.模块引脚说明 四、LED指示灯状态 五.AT指令 5.1AT指令重点 5.2 AT指令注意点 5.3 AT指令集 六.AT常用指令 6.1 测试指令 AT 6.2 查询当前参数ATRX 6.3设置主从模式 ATROLE 6.4设置蓝牙模式 ATNAME 6.5 设置波特率 …

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制,本篇文章是要将各类NMS添加到yolov5中,同时…

6.25作业

1.整理思维导图 2.终端输入两个数,判断两数是否相等,如果不相等,判断大小关系 #!/bin/bash read num1 read num2 if [ $num1 -eq $num2 ] then echo num1num2 elif [ $num1 -gt $num2 ] then echo "num1>num2" else echo &quo…

200.回溯算法:子集||(力扣)

class Solution { public:vector<int> res; // 当前子集vector<vector<int>> result; // 存储所有子集void backtracing(vector<int>& nums, int index, vector<bool>& used) {result.push_back(res); // 将当前…

【嵌入式Linux】<总览> 进程间通信(更新中)

文章目录 前言 一、管道 1. 概念 2. 匿名管道 3. 有名管道 二、内存映射区 1. 概念 2. mmap函数 3. 进程间通信&#xff08;有血缘关系&#xff09; 4. 进程间通信&#xff08;没有血缘关系&#xff09; 5. 拷贝文件 前言 在文章【嵌入式Linux】&#xff1c;总览&a…

浏览器断点调试(用图说话)

浏览器断点调试&#xff08;用图说话&#xff09; 1、开发者工具2、添加断点3、查看变量值 浏览器断点调试 有时候我们需要在浏览器中查看 html页面的js中的变量值。1、开发者工具 打开浏览器的开发者工具 按F12 &#xff0c;没反应的话按FnF12 2、添加断点 3、查看变量值

清理占道经营商贩自砸西瓜?智慧城管AI视频方案助力城市街道管理

一、背景分析 近日有新闻报道&#xff0c;在山西太原&#xff0c;城管凌晨3时许查处商贩占道经营&#xff0c;商贩将西瓜砸碎一地&#xff0c;引起热议。据悉&#xff0c;事件发生的五龙口街系当地主要街道&#xff0c;来往车辆众多。该商贩长期在该地段占道经营&#xff0c;影…

昇思25天学习打卡营第2天|快速入门

快速入门 操作步骤1.引入依赖包2.下载Mnist数据集3.划分训练集和测试集4.数据预处理5.网络构建6.模型训练7.保存模型8.加载模型9.模型预测 今天通过昇思大模型平台AI实验室提供的在线Jupyter工具&#xff0c;快速入门MindSpore。 目标&#xff1a;通过MindSpore的API快速实现一…