打印

PSoC5的USB谁用,介绍下

[复制链接]
2246|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
波越|  楼主 | 2015-6-29 16:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
谁用过PSoC5的USB,想学习。
沙发
zheng522| | 2015-6-29 16:24 | 只看该作者
介绍PSoC5内的USB总线模块,其内容主
要包括:
USB总线模块概述
USB模块结构
USB模块工作条件
逻辑传输模式PS/2和CMOS I/O模式
USB人体学输入设备的实现

使用特权

评论回复
板凳
zheng522| | 2015-6-29 16:24 | 只看该作者
PSoC USB作为一个USB设备和一个主机进行通信。
USB模块作为PSoC内的一个固定功能的设备。只支持全
速通信(12Mbps),并且和USB2.0协议兼容。USB设备
设计成即插即用,也支持热插拔。

使用特权

评论回复
地板
zheng522| | 2015-6-29 16:25 | 只看该作者
USB总线模块的特点有:
与USB2.0规范兼容;
支持全速外设,最高速率到12Mbps;
支持8个数据端点和1个控制端点;
支持四种类型的传输-块(批量)传输、中断传输,同步传输和控制传输;
支持热插拔;
支持存储转发传输模式,最大包的大小为64个字节;
差分信号(D+和D-)输出;
支持P2/2和CMOS信号;
支持两个Vccd电压范围,通常的电压范围为3.3V;

使用特权

评论回复
5
zheng522| | 2015-6-29 16:25 | 只看该作者
下图给出了USB模块的结构图,该模块由串行接口
引擎(Serial Interface Engine,SIE)和仲裁器构成。

图片8.png (26.66 KB )

图片8.png

使用特权

评论回复
6
zheng522| | 2015-6-29 16:26 | 只看该作者
SIE用于处理译码,以及在发送和接收时,创建数据
和控制包。在接收时,SIE将USB的位流解码成USB的包;
在发送时,创建USB的位流。下面给出SIE的主要特性:
兼容USB2.0规范;
支持1个设备地址;
支持8个数据端点和1个控制端点;
每个端点支持中断;
在48MHz时钟(最大允许的公差为±0.25%)下全速运行;
在控制端点集成一个8字节缓冲区;

使用特权

评论回复
7
zheng522| | 2015-6-29 16:26 | 只看该作者
这个模块的寄存器主要用于配置数据端点操作和控制端点的数据缓冲。寄存器也控制每个端点可用的中断。
SIE在每次传输结束后产生中断。使用USB_SIE_INT_EN寄存器可以使能/禁止端点的中断。通过USB_SIE_INT_SR寄存器可以得到端点的中断状态。
SIE寄存器CNT0和CNT1保持着每个端点的计数值,
这个计数值表示USB传输的数据字节的个数。在输出(
OUT)端点情况下,固件程序确定端点所能接收到的最
大的字节。SIE用所接收到的字节数更新寄存器。在输入
(IN)端点情况下,它保持将要发送数据的字节数。
        USB_SIE_EPx_CR0寄存器保持每个端点的模式值。
模式值决定了USB模块对主机的响应。表5给出了
USB_SIE_EPx_CR0寄存器MODE位域的值。

使用特权

评论回复
8
zheng522| | 2015-6-29 16:28 | 只看该作者
串行接口引擎SIE

dfsdafdsa.jpg (270.09 KB )

dfsdafdsa.jpg

afdsaasdfsdafasdf.jpg (307.24 KB )

afdsaasdfsdafasdf.jpg

使用特权

评论回复
9
zheng522| | 2015-6-29 16:28 | 只看该作者
SIE也报告发送错误,USB_SIE_EPx_CR0寄存器的
比特为“err_in_txn“表示错误的发生。
        当设置该位时,当它接收到来自主机的其它IN令牌
时,硬件自动重发相同的数据。
        这种重发只出现在存储转发模式下。在直通模式
下,通过固件读取该位来确定重发数据。

使用特权

评论回复
10
zheng522| | 2015-6-29 16:28 | 只看该作者
模块仲裁器用于处理端点对SRAM存储器访问。CPU
和SIE都可以访问SRAM存储器. 仲裁器负责处理CPU和
SIE访问SRAM的仲裁。仲裁器包含下面的模块:
SIE接口模块
        该模块负责处理和SIE模块的所有交易。SIE从SRAM读数据,然后发送到主机。类似的,将来自主机的数据写到SRAM中。在SIE接口登记这些请求,模块来处理它。
CPU接口模块
        这个模块处理和CPU的所有交易。CPU提出为每个端点读/写SRAM的请求。这些请求在CPU接口模块被登记,然后由模块来处理。

使用特权

评论回复
11
zheng522| | 2015-6-29 16:29 | 只看该作者
存储器接口
存储器接口用于控制USB块和SRAM存储单元之间的接口。最大支持512个字节(256x16位)的存储器容量。这是USB专用的存储器,在USB和存储器单元之间的所有的控制和数据线,包括:数据输入线、数据输出线和使能线,地址线和方向控制线,是由存储器接口来管理的。
SIE和CPU都可以请求访问存储器。SIE接口模块和CPU接口模块用来处理这些请求。

使用特权

评论回复
12
zheng522| | 2015-6-29 16:30 | 只看该作者
DMA引擎
当配置DMA后,DMA接口负责在DMA和USB之间的数据来回传输。这个模块支持用于每个数据端点的DMA请求。DMA的行为取决于在配置寄存器中所配置的逻辑传输模式。
仲裁逻辑
       这是仲裁器的主要模块。用于仲裁所有发生在仲裁器的交易。它仲裁CPU,DMA和SIE对存储器和寄存器的访问。这个模块也处理存储器管理。,固件处理读写地址的操作。这个模块处理缓冲区大小的分配(取决于USB_BUF_SIZE的设置)。它也处理公共存储区域。
      这个模块也处理每个端点的中断请求,每个端点的中断来自:
DMA授权
输入缓冲区满
缓冲区上溢
缓冲区下溢

使用特权

评论回复
13
huihui520| | 2015-6-29 16:41 | 只看该作者
USB模块使用两个时钟:系统时钟和USB时钟。仲裁器使用系统时钟,SIE和OsClock模块使用USB时钟。由于这是两个不同的时钟,因此要求同步,这个模块负责处理同步。
        此外,仲裁器寄存器用于处理端点的配置,读端点地址和写端点地址。它也用于配置每个端点所要求的逻辑传输类型。每个端点支持中断。仲裁器只有一个中断线用于中断控制器。仲裁器寄存器处理使能/禁止端点的中断和保持中断状态。仲裁器也负责存储器的管理(比如在数据端点共享512字节的SRAM)。

使用特权

评论回复
14
huihui520| | 2015-6-29 16:42 | 只看该作者
USB模块工作在某个频率和电压范围。为了正确的操作USB模块,用户必须确认操作条件在允许的范围内。PSoC内USB模块的工作条件包括:
USB模块需要三个不同的时钟:
系统时钟
      用于控制仲裁器、存储器和寄存器块;最小的系统时钟频率为33MHz。
USB时钟
      用于控制SIE和OsClock,用于全速操作的USB时钟48MHz(0.25%的误差)。
ILO时钟
       用于检测一个USB复位,工作频率为100kHz。到USB的时钟称为clk_usb,这个时钟来自IMOCLK,IMOCLK*2,PLL或者DSI时钟。USB的OsClock模块用来确定USB包的频率。

使用特权

评论回复
15
huihui520| | 2015-6-29 16:44 | 只看该作者
USB模块能工作在两种电压范围下:
标准电压范围4.35V-5.25V。
低电压范围3.15V-3.45V。
        USB使用普通的3.3V工作电压。该模块使用数字电压Vccd。支持内部的管理器用于电压的管理。在标准电压范围内,电压通过内部的管理器调整到3.3V。USB_USB_CR1寄存器的reg_enable将用于控制电源管理器的使用。

使用特权

评论回复
16
huihui520| | 2015-6-29 16:45 | 只看该作者
USB模块包括收发器。主机和USB之间使用的是差分
信号。
接收器接收差分信号,然后转换为单端信号。给到USB模块的单端信号电压范围为1.55V-1.95V。
发送器将单端信号转换成差分信号,并且传送给主机。差分
    信号给到“上游设备”,电压范围0V-3.3V。
      收发器也支持PS/2信号,能在0V-5V范围内接收/发送
PS/2信号。收发器有上拉电阻支持PS/2信号。除了PS/2信
号外,收发器还支持CMOS信号。使用USB_USBIO_CR1
和USB_USBIO_CR2寄存器来选择PS/2和CMOS模式。

使用特权

评论回复
17
huihui520| | 2015-6-29 16:45 | 只看该作者
能通过手工方式强迫发送器发送信号。寄存器
USB_USBIO_CR0用于手工发送信号。
       下面给出一个例子:
       1)当使能手工发送时,寄存器配置成发送单端0信
号(即,D+和D-都为低);
       2)可配置发送USB信号,USB信号有两类:
               D+低,D-高=J;D+高,D-低=K;
       3)寄存器有一位用于读取信号的电平,该位能确认D+<D-还是D+>D-

SIE和仲裁器支持8个单向(支持IN或者OUT)数据端点或者一个控制端点(EP0)。数据端点共享512字节的SRAM存储器空间。使用SIE和仲裁器寄存器配置为端点配置方向和其它配置。通过仲裁器访问端点的“读地址”和“写地址”寄存器。每个端点支持一个中断集。每个端点的中断能使能或者禁止。每个端点的中断也可以集中使能或者禁止。
        端点能各自的激活。固件决定存储器分配,这样就不需要指定活动的端点。USB_EP_TYPE寄存器用来控制端点的传输方向(IN/OUT)。在运行时,不能动态地改变端点的参数,比如:激活、传输类型和方向。控制端点有一个单独的8字节用于它的数据。

使用特权

评论回复
18
雾霾和青山| | 2015-6-29 16:53 | 只看该作者
PSoC USB支持全速的传输,与USB2.0规范兼容。支持下面的四种类型:
中断传输
块传输
同步传输
控制传输


SIE和仲裁器产生中断。下面的中断线能用于中断控制器:
9个中断控制线(一个用于每个端点和控制器端点)
完成包发送后产生。
自动响应传输
能使能用于非响应的传输
寄存器USB_SIE_EP_INT_EN寄存器用于使能每个端点的SIE中断。寄存器的每一位相对于一个端点。
使用USB_SIE_EP_INT_SR寄存器读取SIE中断的状态。
为每个数据端点和控制端点独立的中断线。
寄存器SIE_EP_INT_EN和SIE_EP_INT_SR寄存器控制/显示SIE和数端点中断的状态。

使用特权

评论回复
19
雾霾和青山| | 2015-6-29 16:55 | 只看该作者
仲裁器中断线
     在下面事件时,仲裁器为端点产生中断:
缓冲区上溢
缓冲区下溢
DMA授权
IN端点本地缓冲区满

下面这些信息用于仲裁器中断:
每个端点能产生这些中断。寄存器USB_ARB_EPx_INT_EN(x=1~8)用于使能每个端点的中断。
使用USB_ARB_EPx_INT_SR寄存器读取每个端点的中断状态。
为每个数据端点和控制端点独立的中断线。
使用对应于每个端点的USB_ARB_INT_EN寄存器的每一个比特位,集中使能/禁止一个端点的中断。
使用寄存器USB_ARB_INT_SR寄存器,读取一个端点的仲裁器中断的状态。

使用特权

评论回复
20
雾霾和青山| | 2015-6-29 16:55 | 只看该作者
为SOF的SIE中断线
          当接收到SOF时,产生。
SIE数据端点中断线
交易中,用于数据有效或者错误的中断。
一个中断线用于所有的端点。
在USB_SIE_EPx_CNT0寄存器内的data_valid位,用于指示数据的有效状态。
在USB_SIE_EPx_CR0寄存器内的err_in_txn位,用于指示交易状态的错误。
复位中断线
检测到一个复位时,产生中断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

566

帖子

0

粉丝