摘要:从功能方块图、引脚说明、帧格式、寄存器及其控制指令等几个方面详细介绍SigmaTel公司开发的一款专用于USB与IrDA间桥接控制的新型ASIC:STIr4200S。
关键词:红外无线数据通信 USB IrDA STIr4200S
STIr4200S是SigmaTel公司开发的一款专用于USB与IrDA间桥接控制的新型ASIC,采用低功耗CMOS设计,直接从USB口馈电,片内集成4K字节的FIFO缓冲,采用28脚SSOP封装,IrDA数据传输率范围从2.4
Kbps到4 Mbps,主要用于通过USB口实现红外无线数据通信。
1 功能方块图
功能方块图如 图 1 所示,总的来说STIr4200由两个部分组成:USB控制器和数字红外传输器。USB控制器向USB宿主机提供1个控制端点、1个批量数据输入端点和1个批量数据输出端点。数字红外传输器由发送接口和接收接口组成,这两个接口与模拟红外收发器相连。
2 引脚描述
STIr4200S引脚排列如 图 2 所示。
STIr4200S引脚说明如 表 1 所列。
表1 STIr4200S引脚说明
引脚号 | 信号名 | 类型 | 描 述 | 引脚号 | 信号名 | 类型 | 描 述 |
1 | TXDIODE GND | PWR | TXDIODE供电地 | 15 | NC | - | 悬空 |
2 | TXDIODE | O | 可选的LEXD激励输出 | 16 | NC | - | 悬空 |
3 | NC | - | 悬空 | 17 | DPOS | I-O | USB接口(+)数据 |
4 | NC | - | 悬空 | 18 | VDA | PWR | USB传输器供电(+) |
5 | RXFAST | I | 从红外模块接收数据(快速模式) | 19 | UIN | I/O | 测试 |
6 | TXDATA | O | 蒋数据传送给红外模块 | 20 | TST_CLK | I | 测试时钟输入 |
7 | RXSLOW | I | 从红外模块接数据(慢速模式) | 21 | TSTD | I/O | 测试数据输入、输出 |
8 | UOUT | O | SD/模式控制 | 22 | TST_EN | I | 测试使能 |
9 | DGND | PWR | 数字电源地 | 23 | RESETZ | I | 主复位 |
10 | VDD | PWR | 数字电源(+) | 24 | GNDD | PWR | 电源地 |
11 | AGND | PWR | USB传输供电地 | 25 | XTALI | I | 12MHz晶振输入 |
12 | DNEG | I/O | USB接口(-)数据 | 26 | XTALO | O | 12MHz晶振输出 |
13 | NC | - | 悬空 | 27 | NC | - | 悬空 |
14 | NC | - | 悬空 | 28 | NC | - | 悬空 |
3 指令说明
STIr4200S为用户提供了一个指令集,允许通过USB驱动程序读写数字IR传输器的寄存器以及USB控制器的ROM,其指令集详述如下。
(1)写多个寄存器指令
写多个寄存器指令可使用户写数字IR传输器连续的多个寄存器,其指令格式如
表 2 所列。每一个寄存器长为1字节,命令给出了读写的第一个寄存器、连续读写的寄存器数,以及写入数据所在的数据周期。
表2 写多个寄存器指令说明
偏移量 | 字段名 | 长度/字节 | 值(十六进制) | 描 述 |
0 | BmRequestType | 1 | 0x40 | 请求类型 |
1 | Brequest | 1 | 0x00 | 写多个寄存器 |
2 | Wvalue | 2 | 未用 | |
4 | Windex | 2 | 0x0001-000f | 欲写的第一个寄存器 |
6 | Wlength | 2 | 0x0001-0x000f | 欲写的寄存器数 |
表3 写1个寄存器指令说明
偏移量 | 字段名 | 长度/字节 | 值(十六进制) | 描 述 |
0 | BmRequestType | 1 | 0x40 | 请求类型 |
1 | Brequest | 1 | 0x03 | 写一个寄存器 |
2 | Wvalue | 2 | LSB contains data | 欲写入的数据 |
4 | Windex | 2 | 0x0001-000f | 欲写的第一个寄存器 |
6 | Wlength | 2 | 未用 |
表4 读多个寄存器指令说明
偏移量 | 字段名 | 长度/字节 | 值(十六进制) | 描 述 |
BmRequestType | 1 | 0xc0 | 请求类型 | |
1 | Brequest | 1 | 0x01 | 读多个寄存器 |
2 | Wvalue | 2 | 未用 | |
4 | Windex | 2 | 0x0001-000f | 欲读的第一个寄存器 |
6 | Wlength | 2 | 0x0001-0x000f | 欲读的寄存器数 |
表5 读ROM指令说明
偏移量 | 字段名 | 长度/字节 | 值(十六进制) | 描 述 |
0 | BmRequestType | 1 | 0xc0 | 请求类型 |
1 | Brequest | 1 | 0x02 | 读ROM |
2 | Wvalue | 2 | 未用 | |
4 | Windex | 2 | 0x0001-0x00ff | ROM基地址 |
6 | Wlength | 2 | 0x01-0x0040 | 欲读的ROM字节数(<或=64字节) |
(2)写1个寄存器指令说明,如 表 3 所列。
(3)读多个寄存器指令说明,如 表 4 所列。
(4)读ROM指令说明,如 表 5 所列。
读ROM指令可使DRIVER读取USB控制器端点0中ROM,这主要是为了调试时用于验证该ROM中的内容。每次最多可读取64字节。
4 数字红外传输器
数字红外传输器,从模拟红外收发器接收数字输入。主要由传送调制器、接收解调器、FIFO、模拟传输部分及寄存器组组成,如 图 3 所示。可以通过设置寄存器的值来实现对设备的操作,如调制模式、波特率、FIFO中帧的大小以及RX输入方式等。其中FIFO的大小为4 K字节。
由USB控制器送往TX调制器的数据必须组成IrLAP帧。一个IrLAP帧的格式 由以下几部分组成。其中BOF为帧开始标志,A为地址字段,C为控制字段,I 为信息字段,FCS为帧的CRC校验码,EOF为帧结束标志。
BOF | A | C | I | FCS | EOF |
另外,FIFO中的内容发送给USB控制器以前,还必须在报文中加一个2字节的ID码以及2 字节的帧大小。
5 帧格式
为了标识红外传输帧的边界在帧格式中用到了一些特殊的字符,如
表 6
所列,当这些字符在数据区出现时,就必须对它们进行转义表示。同时,由于在传输过程中,USB批量数据输入/输出缓冲区的边界可能和红外传输帧的边界不能对齐,因此,在帧格式中还定义了一个字符0x7D用于实际的帧边界描述。另外,在FIR模式下引入了0x7F作为预同步字符。
5.1 SIR模式下的帧格式
SIR模式下的传输率可以是2.4,9.6,19.2, 38.4,57.6及115.2 Kbps。帧格式如 图 4、 图 5 所示。
5.2 MIR模式下的帧格式
MIR模式下传输率可以是576 Kbps和1.152 Mbps。帧格式如 图 6 、图 7 所示。
5.3 FIR模式下的帧格式
FIR模式下的传输率为4 Mbps,帧格式如图8、图9所示。
6 寄存器设置
在数字红外传输器中共有16个寄存器,如 表 7
所列。可以设置数字红外传输器的工作模式、波特率等,也可以通过访问状态寄存器来获取其工作状态。下面对除测试寄存器和DPLL寄存器以外的各寄存器的设置进行详细的说明。测试寄存器和DPLL寄存器只用于厂家的调试。
表6 转义字符说明
传输模式 | 原始字符 | 在数据区的表示 | 作 用 |
SIR | 0xC0 | 0x7D 0xE0 | BOF(帧起始标识) |
0xC1 | 0x7D 0xE1 | EOF(帧结束标识) | |
0x7D | 0x7D 0x5D | 实际的帧边界标识 | |
MIR | 0x7E | 0x7D 0x5E | BOF(帧起始标识) |
0x7E | 0x7D 0x5E | EOF(帧结束标识) | |
0x7D | 0x7D 0x5D | 实际的帧边界标识 | |
FIR | 0x7F | 0x7D 0x5F | 传输帧预同步 |
0x7E | 0x7D 0x5E | BOF(帧起始标识) | |
0x7E | 0x7D 0x5E | EOF(帧结束标识) | |
0x7D | 0x7D 0x5D | 实际的帧边界标识 |
表7 数字IR传输器中寄存器说明
偏移量 | 描述 | 存取 | 位状态 | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
0 | FIFO数据寄存器 | 读写 | 保留 | |||||||
1 | 模式寄存器 | 读写 | FIR | MIR | SIR | ASK | FASTRXEN | FFRSTEN | FFSPRST | PDCLK |
2 | 波特率寄存器 | 读写 | PDCLK(7..0) | |||||||
3 | 控制寄存器 | 读写 | SDMODE | RXSLOW | DLOOP1 | TXPWD | RXPWD | RXPWD | TXPWR(1:0) | SRESET |
4 | 灵敏度寄存器 | RXDSNS(2:0) | BSTUFF R/W | SPWIDTH R/W | ID(2) RO | ID(1) RO | ID(0) RO | |||
5 | 状态寄存器 | EPFRAME RO | FFUNDER ROC | FFOVER ROC | FFDIR RO | FFCLR WO | FFEMPTY RO | FFRXERR ROC | FFTXERR ROC | |
6 | FIFO计数寄存器(LSB) | 只读 | FFCNT(7..0) | |||||||
7 | FIFO主数寄存器(MSB) | 只读 | 0 | 0 | 0 | FFCNT(12:8) | ||||
8 | DPLL调节寄存器 | 只读 | DPCNT(5:0) | LONGP(1:0) | ||||||
9 | IRDIG初始寄存器 | 读写 | RXHIGH | TXLOW | 保留 | 保留 | 保留 | 保留 | 保留 | 保留 |
10 | 保留 | 读写 | 保留 | |||||||
11 | 保留 | 读写 | 保留 | |||||||
12 | 保留 | 读写 | 保留 | |||||||
13 | 保留 | 读写 | 保留 | |||||||
14 | 保留 | 读写 | 保留 | |||||||
15 | 测试寄存器 | 读写 | PLLDWN | LOOPIR | LOOPUSB | TSTENA | TSTOSC(3:0) |
表8模式寄存器设置说明
位址 | 助记符 | 操作 | 功 能 |
7 | FIR | 读写 | 将红外调制器设为快速模式 |
6 | MIR | 读写 | 将红外调制器设为中速模式 |
5 | SIR | 读写 | 将红外调制器设为慢速模式 |
4 | ASK | 读写 | 将红外调制器设为相移键控模式 |
3 | FASTRXEN | 读写 | 同时读写FIFO使能 |
2 | FFRSTEN | 读写 | 在FIR模式中使FIFO接收移位寄存器自动复位 |
1 | FFSPRST | 读写 | 手动复位FIFO移位寄存器 |
0 | PDCLK(8) | 读写 | 波特率寄存器的最高位 |
表9 波特率寄存器设置说明
传输模式 | 波特率/kbps | 模式寄存器 | 波特率寄存器 |
FIR | 4000.0 | 0x80 | 0x20 |
MIR | 1152 | 0x40 | 0x01 |
576 | 0x40 | 0x03 | |
SIR | 115.2 | 0x20 | 0x09 |
57.6 | 0x20 | 0x13 | |
38.4 | 0x20 | 0x1D | |
19.2 | 0x20 | 0x3B | |
9.6 | 0x20 | 0x77 | |
2.4 | 0x21 | 0xDF |
表10 灵敏度寄存器设置说明
位址 | 助记符 | 操作 | 功 能 | |||
7-5 | RXDSN(2:0) | 读写 | 用于设置DRS解调器的灵敏度 | |||
值 | FIR | MIR | SIR | |||
000 | 1 | 1 | 4 | |||
001 | 2 | 2 | 8 | |||
010 | 3 | 3 | 12 | |||
011 | 4 | 4 | 16 | |||
100 | 5 | 5 | 20 | |||
101 | 非法 | 6 | 24 | |||
110 | 非法 | 7 | 28 | |||
111 | 非法 | 非法 | 非法 | |||
4 | BSTUFF | 读写 | 为MIR模式阻塞IRDA数据 | |||
3 | SPWIDTH | 读写 | 为0时,SIR传输脉冲宽度为1.6us;为1时,为0.3us | |||
2-0 | ID(2:0) | 读写 | 芯片的版本号 |
表11 状态寄存器设置说明
位址 | 助记符 | 操作 | 功 能 |
7 | EOFRAME | 只读 | 指示整个帧已完全装入FIFO |
6 | FFUNDER | 只读 | FIFO underrun error |
5 | FFOVE | 只读 | FIFO overrun error |
4 | FFDIR | 只读 | 为1时,FIFO处于传送模式:为0时,处于接收模式 |
3 | FFCLR | 只写 | 为1时,清空FIFO,将其指针置0位。进行FIFO操作时,必须置0 |
2 | FFEMPTY | 只读 | 为1时,FIFO中无数据 |
1 | FFRXERR | 只读 | 为1时,表明当红外接收写FIFO时出错 |
0 | FFTXERR | 只读 | 为1时,表明FIFO写红外传送器时出错 |
表12 IRDIG初始寄存器设置说明
位址 | 助记符 | 操作 | 功 能 |
7 | RXHIGH | 读写 | 设为1时,将反转RXFAST和RXSLOW脚的数据的极性 |
6 | TXLOW | 读写 | 设为1时,将反转TXDATA脚的数据极性 |
5-0 | 保留 | 读写 | 未写 |
(1)FIFO数据寄存器
默认设置为0x00,用于USB接口进入FIFO中的数据,但这个寄存器很少使用。因为一般情况下,USB可通过Bulk read/write指令来对FIFO进行操作。
(2)模式寄存器
默认状态为0x20。设置说明如 表 8 所列。
(3)波特率寄存器
这个8位寄存器全为PDCLK位,默认值为0x77。 表 9 通过设置模式寄存器、波特率寄存器来设置IrDA的传输模式。
(4)控制寄存器
默认值为0x00。bit7为SDMODE位,只有当STIr4200S连接到TEMIC类型的红外传输器时,才使用此位,用于将红外传输器设置成省电状态。bit6为RXSLOW位,设为1时,采用RXSLOW接收输入信号;设为0时,采用RXFAST接收输入信号。bit5为DLOOP1位,当设为1时,表示将红外传送器与红外接收器相连,此位不能用于STIr4200S集成解决方案。bit4为TXPWD位,当设为1时,将停止红外调制器供电。bit3为RXPWD位,设为1时,表示停止红外解调器供电。bit2~1为TXPWR(1:0)位,用以设置内部下拉电阻控制传输二极管的电流:00表示设成最大电流,01表示为中高电流,10将设置成中低电流,11为最小电流。bit0为SRESET位,设成1时,将对红外调制解调器进行复位。
(5)灵敏度寄存器
默认值为0x26,具体设置规则如 表 10 所列。
(6)状态寄存器
默认值为0x14,设置说明如 表 11 所列。
(7)IRDIG 初始寄存器
IRDIG主要用于设置红外传输器与前端红外模拟收发器连接的引脚极性,设置说明如 表 12所列。
结束语
本文介绍了一款USB/IrDA桥控制芯片STIr4200S的原理和结构。在该芯片内部集成了USB和IrDA之间的协议转换功能,通信协议完全符合USB1.1 spec 和IrDA spec,通信速度可达4 Mbps。
上一篇:四通道可编程数字下变频器HSP50216及其在软件无线电中的应用
下一篇:内嵌微控制器的无线数据发射器的特性及应用