USB/IrDA橋控制芯片STIr4200S
摘要:從功能方塊圖、引腳說明、幀格式、寄存器及其控制指令等幾個方面詳細介紹SigmaTel公司開發的一款專用于USB與IrDA間橋接控制的新型ASIC:STIr4200S。
本文引用地址:http://www.104case.com/article/225733.htm關鍵詞:紅外無線數據通信 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。
評論