登录站点

用户名

密码

FREESCALE MC68HC08 USB模块

已有 131 次阅读  2013-03-20 22:23   标签模块 
 USB模块特性
有多种M68HC08具有USB模块,它们的特性并不一定完全相同。下面以MC68HC08JB8USB模块为例,介绍其功能和使用方法。
一、 USB模块的特性
.
支持USB 规程1.1版低速功能;
. 1.5Mbps
数据速率;
.
片内3.3V稳压器;
.
端点0,具有8字节发送和8字节接收缓冲区;
.
端点1,具有8字节发送缓冲区;
.
端点2,具有8字节发送和8字节接收缓冲区;
. USB
数据控制逻辑:
——控制端点0和中断端点12 ;
——包译码和产生;
——CRC产生和检验;
——NRZI(非归零插入)编码/译码;
——位填充。
. USB
复位选择:
——内部MCU复位产生;
——CPU中断请求产生。
.
挂起和唤醒操作,支持远程唤醒;
. USB
中断:
——传输中断驱动;
——唤醒中断;
——包结束中断;
——USB复位.
.STALL
NAKACK应答产生。
二、USB接口
USB
模块具有D+ D- 两个I/O

*** USB模块寄存器
一、USB地址寄存器UADDR,它可读可写

 

7

6

5

4

3

2

1

0

UADDR

USBEN

UADD6

UADD5

UADD4

UADD3

UADD2

UADD1

UADD0

复位值

0

0

0

0

0

0

0

0

USBEN------允许USB模块:
位置位时,允许USB模块和USB引脚,禁止USB使用的引脚的其他功能。清零时,禁止USB响应任何令牌,禁止USB复位和USB中断,USB使用的引脚用作一般I/O脚。
1 =
允许USB功能
0 =
禁止USB功能

UADD6~UADD0------USB功能地址:

它们定义设备的USB地址。复位时为全“0”。
二、USB中断寄存器

1UIR0USB中断允许寄存器。它可读可写

 

7

6

5

4

3

2

1

0

UIR0

EOPIE

SUSPND

TXD2IE

HXD2IE

TXD1IE

0

TXD0IE

HXDIE

复位值

0

0

0

0

0

0

0

0

EOPIE----包结束检测中断允许位:
它允许在EOPF置位时产生中断。
1 =
允许包结束检测产生中断
0 =
禁止包结束检测产生中断
SUSPND----USB
挂起:
为节省电源,可置位本位,使USB在检测到USB总线上3ms无活动时进入省电方式。在置位“SUSPND”前应先清0RESUMF”标志。
TXD2IE-----
端点2发送中断允许位:
它允许在TXD 2F 置位时产生中断。
1 =
允许发送端点2 产生中断
0 =
禁止发送端点1 产生中断
RXD2IE-----
端点2接收中断位:
它允许RXD 2F 置位时产生中断。
1 =
允许接收端点2产生中断
0 =
禁止接收端点2产生中断
TXD1IE-----
端点1发送中断位:
它允许TXD 1F 置位时产生中断。
1 =
允许发送端点1产生中断
0 =
禁止发送端点心产生中断
TXD0IE-----
端点0发送中断位:
它允许TXD 0F 置位时产生中断。
1 =
允许发送端点0 产生中断
0 =
禁止发送端点0 产生中断
RXD0IE-----
端点0 接收中断:
它允许RXD 0F 置位时产生中断。
1 =
允许接收端点0 产生中断
0 =
禁止接收端点0 产生中断

2UIR1-----USB中断标志寄存器,它只可读出和清零

 

7

6

5

4

3

2

1

0

UIR1

EOPF

RSTF

TXD 2F

RXD 2F

TXD 1F

RESUMF

TXD 0F

RXD 0F

复位值

0

0

0

0

0

0

0

0

EOPF-----包结束检测位:
D+ D线上检测到正确的包括结束信号时置位。软件可向EOPFR位写人1来清除它。写入EOPF不影响该位。

1 = 检测到包结束信号
0 =
未检测到包结束信号
RSTF-----USB
复位标志位:
D+ D线上检测到正确的复位信号时置位。如系统设置寄存器(CONFIG)的“URSTD”位为零,这个复位条件可产生内部复位信号以复位CPU和其他外围控制部件(包括USB)。如URSTD置位,该置位条件将产生USB中断。
RSTFR位写入1可清除该位。
TXD 2F -----
端点2数据发送标志位:
在端点2发送缓冲区中的数据被发送出去并收到来自主机的“ACK”应答包后置位该位。在发送缓冲区已准备的下一个数据时,软件应向TXD2FR位写入1来清除该标志。为允许下一次数据包发送,也必须置位“TX2E
如“TXD 2F ”未清零,则下一次“IN”传输时,将返回“ANK”应答包。
写入TXD 2F 不影响该位。
1 =
已执行完端点2 的发送
0 =
未执行完端点2 的发送
RXD 2F -----
端点2数据接收标志位:
USB模块收到一个数据包并发送“ACK”应答包后置位。在读走所有接收数据后,软件应向RXD2FR写入“ 1” 来清除它。为允许下一次数据包接收,软件也必须置位RX2E
如未清除RXD 2F ,则下一次“OUT”传输时,将回“NAK”应答包。
写入RXD 2F 不影响该位。
1 =
端点2已发生接收
0 =
端点2未发生接收
TXD 1F -----
端点1数据发送标志位:
在端点1发送缓冲区中的数据发送完并收到主机的“ACK”应答包后置位。在发送缓冲区已准备好下一个数据时,软件应向TXD1FR位写“ 1” 来清零该标志。
为允许下一次数据包发送。也必须置位TX1E位。如TXD 1F 未清零,则下一次“IN”传输时,将返回“NAK”应答包。写入TXD 1F 不影响该位。
1 =
已执行完端点1发送
0 =
未执行完端点1发送
RESUMF-----
重执行标志:
在置位“SUSPND”位时,检测到USB总线活动时置位该位。软件应向RESUMFR位写入1来清零它。写入RESUMF不影响该位。
1 =
检测到USB总线活动
0 =
未检测到USB总线活动
TXD 0F -----
端点0数据发送标志位:
在端点0发送缓冲中的数据发送完并收到主机的“ACK”应答包后置位。在发送缓冲区已准备好下一个数据时,软件应向TXD0FR位写入“ 1” 来清零该标志。
为允许下一次数据包发送,也必须置位TX0E。如TXD 0F 未清零,则下一次“IN”传输时,将返回NAK应答包。写入TXD 0F 不影响该位。
1 =
已执行完端点0发送
0 =
未执行完端点0发送
RXD 0F -----
端点0数据接收标志:
USB模块收到一个数据包发送“ACK”应答包后置位。在读走所有接收数据后,软件应向RXD0FR写入“ 1” 来清零它。

为允许下一次数据包接收,软件也须置位RX0E。如未清零RXD 0F ,则下一次“OUT”传输时,将返回“NAK”应答包。写入RXD 0F 不影响该位。
1 =
端点0已发生接收
0 =
端点0未发生接收

3UIR2----USB状态清除寄存器。它只可以写入,读时总为全“ 0

 

7

6

5

4

3

2

1

0

UIR2

EOPFR

RSTFR

TXDIER

RXDIFR

TXD1FR

RESUMFR

TXD0FR

RXD0FR

复位值

0

0

0

0

0

0

0

0

EOPFRRSTFRTXD2FRRXD2FRTXD1FRRESUMFRTXD0FRRXD0FR写入“1”,则分别清零EOPFRSTFTXD 2F RXD 2F TXD 1F RESUMFTXD 0F RXD 0F 标志位。向它们写入0 不影响该位。
三、USB控制寄存器

1UCR0-----USB控制寄存器0,它可读可写

 

7

6

5

4

3

2

1

0

UCR0

T0SEQ

0

TX0E

RX0E

TP0SIZ3

TP0SIZ2

TP0SIZ1

TP0SIZ0

复位值

0

0

0

0

0

0

0

0

T0SEQ-----端点0发送顺序位:
这位决定端点0下一次“IN”传输时发出的数据包类型(DATA0DATA1)。必须由软件来取反这位。
1 =
下一次端点0发送DATA1
0 =
下一次端点0发送DATA0
TX0E-----
端点0发送允许位:
它允许在USB主机控制器向端点0发出“IN”令牌时进行发送。在数据准备发送时,软件应置位该位。在没有新的端点0数据发送时,软件应清零端位。如这位为“ 0” 或“TXD 0F ”置位,USB将对任何端点0IN令牌发NAK”应答。
1 =
数据准备发送
0 =
数据设准备好,应答“NAK
RX0E-----
端点0接收允许位:
它允许在USB主机控制器向端点0发出“OUT”令牌时进行接收。在准备接收数据时,软件应置位该位。在不能接收数据时,软件应清零该位。如这位为“ 0” 或“RXD 0F ”置位,USB将对任何端点0OUT令牌发NAK”应答。
1 =
准备接收数据
0 =
没准备好接收数据,应答NAK
TP0SIZ3~~TP0SIZ0-----
端点0发送数据包长度:
它存放下一次对端点0IN”令牌请求时的发送数据字节数。

2UCR1-----USB控制寄存器1,它可读可写

 

7

6

5

4

3

2

1

0

UCR1

T1SEQ

STALL1

TXIE

FRESUM

TP1SIZ3

TP1DIZ2

TP1SIZ2

TP1SIZ0

复位值

0

0

0

0

0

0

0

0

T1SEQ-----端点1发送顺序位:
这位决定端点1下一次“IN”传输时发送出的数据包类型(DATA0DATA1)。必须由软件来取反这位。
1 =
下一次端点1发送DATA1
0 =
下一次端点1发送DATA0
STALL1-----
端点1强制阻塞位:
它使端点1在收到“IN”或“OUT”令牌时均返回“STALL”应答。
1 =
发送STALL应答
0 =
缺省值
TX1E-----
端点1发送允许:
它允许在USB主机控制器向端点1发送“IN”令牌后进行发送。相应的“端点允许位”:
UCR3
寄存器中的“ENABLE 1 位也必须置位。
在数据准备发送时,软件应置位“TX1E”位。在无新数据发送时,软件应清零该位。
如这位为“ 0” 或“TXD 1F ”置位,USB将对任何端点1IN令牌发NAK”应答。
1 =
数据准备发送
0 =
无数据准备发送,应答“NAK
FRESUM-----
强制重执行:
它强制向USB数据线上发非空闲电平以初始化远程唤醒。软件应控制强制重执行时间为10~15ms
置位该位不会引起“RESUMF”置位。
1 =
强制数据线为非空闲态
0 =
缺省值
TP1SIZ3~TP1SIZ0 ---------------
端点1发送数据包长度
它存放下一次对端点1IN”令牌请求的发送数据字节数。

3UCR2-----USB控制寄存点2,它可读可写

 

7

6

5

4

3

2

1

0

UCR2

T2SEQ

STALL2

TX2E

RX2E

TPLSIZ3

TP2SIZ2

TP2SIZ1

PT2SIZ0

复位值

0

0

0

0

0

0

0

0

T2SEQ——端点2发送顺序位:
这位决定端点2下一次“IN”传输时发出的数据类型(DATA0DATA1)。必须由软件来取反这位。
1 =
下一次端点2发送DATA1
0 =
下一次端点2发送DATA0
STLL2
——端点2强制阻塞位:
它使端点2在收到“IN”或“OUT”令牌时均返回“STALL”应答。
1 =
发送STALL应答
0 =
缺省值
TX2E
——端点2发送允许
它允许在USB主机控制器向端点2发送“IN”令牌时进行发送。相应的端点允许位:
UCR3
寄存器中的“ENABLE 2 位也必须置位。在数据准备发送时,软件应置位“TX2E”位。在无新数据发送时,软件应清零该位。

如这位为“0”或“TXD2F”置位,USB将对任何端点2IN令牌发NAK”应答。
1 =
数据准备发送
0 =
无数据准备发送,应答NAK
RX2E
——端点2接收允许:
它允许在USB主机控制器向端点2发出“OUT”令牌时进行接收。在准备接收数据时,软件应置位该位。在不能接收数据时,软件应清零该位。
如这位为“0”或“RXD2F”置位,USB将对任何端点2OUT令牌发NAK”应答。
1 =
准备接收数据
0 =
没准备好接收数据,应答NAK
TP2SIZ3~TP2SIZ0
——端点2发送数据包长度:
它存放在下一次对端点2IN”令牌请求的发送数据字节数。
4
UCR3——USB控制寄存器3
7TX1ST)只可读出,位6TX1STR)只可写入,其他位可读可写。

 

7

6

5

4

3

2

1

0

UCR3

TX1ST

TX1STR

OSTALL0

ISTALL0

0

PULLEN

ENABLE2

ENABLE1

复位值

0

0

0

0

0

0

0

0

TX1ST——端点0发送先发生标志
如端点0数据发送标志(TXD 0F )置位,在USB控制逻辑置位端点数据接收标志(RXD 0F )时将置位本标志。它告诉软件端点0发送在端点0接收前发生。
1 =
SETUP/OUT前发生“IN”传输
0 =
SETUP/OUT后发生“IN”传输
TX1STR
——清零端点0发送先发生标志
向这位写入1清零“TX1ST”。写入0不影响TX1ST位。
OSTALL0
——端点0? OUT”令牌强制阻塞位。
它使端点0在收到USB主机控制的“OUT”令牌时返回“STALL”应答。在收到“SETUP”令牌时USB硬件清零该位。
1 =
发“STALL”应答
0 =
缺省值
ISTALL0
——端点0IN”令牌强制阻塞位:
它使端点0在收到USB主机控制器的“IN”令牌时返回“STALL”应答。在收到“SETUP”令牌时USB硬件清零该位。
1 =
发送“STALL”应答
0 =
缺省值
PULLEN
——上拉允许:
在允许USB模块时,这位允许USB D— 脚的上拉电阻功能。
1 =
设置D—脚有内部上拉电阻
0 =
设置D—脚无内部上拉电阻
ENABLE2
——端点2允许位:
它允许端点2,并允许USB响应访问端点2的“IN”或“OUT”包。
1 =
允许端点2,可响应“IN”或“OUT”令牌
0 =
禁止端点2
ENABLE1
——端点1允许位“

它允许端点1,并允许USB响应访问端点1的“IN”或“OUT”包。
1 =
允许端点1,可响应“IN”或“OUT”令牌
0 =
禁止端点1响应
5
UCR4——USB控制寄存器4
它只有3位,均可读可写。它只用于特殊应用场合,一般情况不应使用该寄存器。

 

7

6

5

4

3

2

1

0

UCR4

0

0

0

0

0

FUSB0

FDP

FDM

复位值

0

0

0

0

0

0

0

0

FUSB0——强制USB输出:
它允许USB输出缓冲器
1 =
允许USB输出缓冲器
0 = USB
模块处于正常操作方式
FDP
——强制D+
它决定D+的输出电平
1 = D+
输出高电平
0 = D+
输出低电平
FDM
——强制D-
它决定D-的输出电平。
1 = D-
输出高电平
0 = D-
输出低电平
四、USB状态寄存器

1USR0——USB状态寄存器0

它只可读出,不受复位影响

 

7

6

5

4

3

2

1

0

USR0

R0SEQ

SETUP

0

0

PR0SIZ3

PR0SIZ2

PR0SIZ1

PR0SIZ0

复位值

0

0

0

U

U

U

U

U

R0SEQ——端点0接收顺序:
它指出端点0上次收到数据包的类型(DATA0DATA1)。
1 =
上次端点0收到的数据包为DATA1
0 =
上次端点0收到的数据包为DATA0
SETUP
——“SETUP”令牌位:
它指出已收到一个正确的“SETUP”令牌。
1 =
上次端点0收到的令牌为“SETUP
0 =
上次端点0收到的令牌不是“SETUP
RP0SIZ3~RP0SIZ0
——端点0接收数据长度:
它们存放上次端点0收到的“OUT”或“SETUP”数据包的字节数。

2USR1——USB状态寄存器1,它只可读出

 

7

6

5

4

3

2

1

0

USR1

R2SEQ

TXACK

TXNCK

TXSTL

RP2SIZ3

RP2SIZ2

RP2SIZ1

RP2SIZ0

复位值

U

0

0

U

U

U

U

U

R2SEQ——端点2接收顺序位:
它指出端点2上次收到数据包的类型(DATA0DATA1)。
1 =
上次端点2收到的数据包为DATA1
0 =
上次端点2收到的数据包为DATA0
TXACK
——“ACK”令牌发送位:
它指出已发送“ACK”令牌,它在数据发送结束时更新。
1 =
端点0上次发送的令牌为ACK令牌
0 =
端点0上次发送的令牌不是ACK令牌
TXNAK
——“NAK”令牌发送位:
它指出已了送NAK令牌,它在数据发送结束时更新。
1 =
端点0上次发送的为“NAK”令牌
0 =
端点0上次了送的令牌不是“NAK”令牌
TXSTL
——“STALL”令牌发送位:
它指出已发送“STALL”令牌,它在数据发送结束时更新。
1 =
端点0上次发送的令牌为“STALL”令牌
0 =
端点0上次发送的令牌不为“STALL”令牌
RP2SIZ3~RP2SIZ0
——端点2接收数据包长度:
它们存放上次端点2收到的“OUT”传送的数据的字节数。
五.USB数据寄存器

1、端点0数据寄存器

UE0D0~UE0D78个端点0数据寄存器。写入UE0D0~UE0D7时访问8个发送数据寄存器。读出UE0D0~UE0D7时访问8个接收寄存器。

2、端点1数据寄存器

UE1D0~UE1D78个端点1数据寄存器,它们只可写入,为8个发送数据寄存器。

3、端点2数据寄存器

UE2D0~UE2D78个端点2数据寄存器。写入UE2D0~UE2D7时访问8个发送数据寄存器,读出UE2D0~UE2D7时访问8个接收数据寄存器。

*** USB中断
MC68HC08JB8
具有三种USB中断。

1USB传输结束中断

有五个传输结束中断,包括端点02接收和端点012发送,它们有各自的中断标志和允许位。

2重执行中断

在进入挂起状态后,如检测到低速总线活动后USB模块产生CPU中断。在挂起状态,
USB
数据线变为非常闲状态将置位UIR1寄存器的RESUMF标志。它无局部中断允许位,均由CCR1位所控制。只有在挂起状态才能发生重执行中断。

3包结束中断

由包结束发生USB中断。在检测到包结束信号时,USB模块将置位EOPF位,并在EOPIE位置位时产生CPU中断。

没有了 下一篇: 推荐几个网站

分享 举报