Professional Documents
Culture Documents
DIO Technical Guide (TW) v1.11 2018010402
DIO Technical Guide (TW) v1.11 2018010402
2
目錄
目錄 ......................................................................................................................................................................... 3
術語與縮寫 ............................................................................................................................................................ 4
版權聲明................................................................................................................................................................. 4
3
術語與縮寫
DIO - 數位輸入輸出
I/O 或 IO - 輸入/輸出
DOS - Disk Operating System, 磁碟作業系統
/h - Hexadecimal, 十六進制
/d - Decimal, 十進制
/b - Binary, 二進制
版權聲明
DOS® - 版權所有為 Microsoft®
4
1. DIO 功能說明
圖一
註:
Plus common = XCOM+ = External Power Supply V+
Minus common = XCOM- = External Power Supply V-
5
• 輸入電壓訊號範例:
i. Signal Logic 0:
XCOM+ = 9V, Pulse Low - XCOM- < 1 V (如圖二所示)
圖二
XCOM+ > 9V, XCOM+ - Pulse Low > 8 V (如圖三所示)
圖三
ii. Signal Logic 1: > XCOM+ - 3V (如圖四所示)
圖四
6
1.4 德承的隔離 DO Low Sink (低壓驅動電流) 最小驅動電流 580mA ( XCOM+ ~ XCOM-
約為 9V ),最大驅動電流 3A ( XCOM+ ~ XCOM-大於 20V )。
隔離的 DO,是 Open drain 設計 (參考圖五),DO 的高壓準位,是由使用者自行決定
的,而最大可控制電壓為 30V (依機種設計不同而有所改變)。使用者在外部接一個提
升電阻 (Load) 到 XCOM+(參考圖五),或低於 XCOM+和高於最低電壓的任何電位(參
考圖六)。電阻值和瓦數;需由使用者自行演算。
演算範例: W = I * V , I = V / R 。
圖五
圖六
註:
Plus common = XCOM+ = External Power Supply V+
Minus common = XCOM- = External Power Supply V-
Load = Resister
7
1.5 DIO 的 I/O 控制,可以支援直接進入硬體的 Config Register,控制 Index register 和
data register,經由軟體設定或改變 DIO 狀態。而 Config Register 是用來控制相應
設備的行為,想要配置 register,必須去 index port 選擇相應的 index 然後寫入 data
port 後以更改參數。預設 index port 為 0x4E/h,data port 為 0x4F/h。要啟用
Config Register 必須將參數 0x87 寫入 index port 兩次,若想退出 Config Register
則必須將參數 0xAA 寫入 index port。
硬體的 Config Register,GPIO Port 7 default (DI) 會被設置為 input (A03/h),
GPIO port 8 default (DO) 會被設置為 output (A02/h)。
見範例二、範例三、範例四、範例五、範例六、範例七
進入和退出硬體的 Config Register: (範例)
Out 4E 87
Out 4E 87
Out 4E AA
8
■ 2. PIN 腳位介紹及如何變更實體位址
= DI1
(Base address +3) (0xA03)
= DI2
(Base address +3) (0xA03)
= DI3
(Base address +3) (0xA03)
= DI4
(Base address +3) (0xA03)
9
= DI5
(Base address +3) (0xA03)
= DI6
(Base address +3) (0xA03)
= DI7
(Base address +3) (0xA03)
= DI8
(Base address +3) (0xA03)
圖七
10
圖八
= DI1
(Base address +3) (0xA03)
= DI2
(Base address +3) (0xA03)
= DI3
(Base
11 address +3) (0xA03)
= DI4
(Base address +3) (0xA03)
圖九
圖十
12
2.3 4 bit DI (Low Byte) 的 PIN 腳位:
下表為 4 bit DI (GPIO) 的 PIN 腳位,而圖十一的紅框處則說明 4 bit DI (Low Byte) 所使
用到的 GPIO PIN 腳位設定 (index 80)。
圖十二則是說明 4 bit DI (Low Byte) 的值是從 GPIO7 Pin Status Register (index 82) 讀
取。
4 bit DI (Low Byte) 腳位說明:
= DI1
(Base address +3) (0xA03)
= DI2
(Base address +3) (0xA03)
= DI3
(Base address +3) (0xA03)
= DI4
(Base address +3) (0xA03)
13
圖十一
圖十二
14
2.4 8 bit DO 的 PIN 腳位:
下表為 8 bit DO (GPIO) 的 PIN 腳位,而圖十三的紅框處則說明 8 bit DO 所使用到的
GPIO PIN 腳位設定 (index 88)。
圖十四則是說明 8 bit DO 的輸出值是從 GPIO8 Output Data Register (index 89) 設定。
8 bit DO 腳位說明
= DO1
(Base address +2) (0xA02)
= DO2
(Base address +2) (0xA02)
= DO3
(Base address +2) (0xA02)
= DO4
(Base address +2) (0xA02)
15
= DO5
(Base address +2) (0xA02)
= DO6
(Base address +2) (0xA02)
= DO7
(Base address +2) (0xA02)
= DO8
(Base address +2) (0xA02)
圖十三
16
圖十四
17
4 bit DO (High Byte) 之 2 進制和 16 進制 DATA Bit 對照表:
= DO1
(Base address +2) (0xA02)
= DO2
(Base address +2) (0xA02)
= DO3
(Base address +2) (0xA02)
= DO4
(Base address +2) (0xA02)
圖十五
18
圖十六
19
4 bit DO (Low Byte) 之 2 進制和 16 進制 DATA Bit 對照表:
= DO1
(Base address +2) (0xA02)
= DO2
(Base address +2) (0xA02)
= DO3
(Base address +2) (0xA02)
= DO4
(Base address +2) (0xA02)
圖十七
20
圖十八
圖十九
21
進 入 邏 輯 元 件 的 暫 存 器 編 號 區 後 , 選 擇 GPIO 元 件 的 組 態 暫 存 器 (GPIO device
configuration registers),設定暫存器 60 和 61 (參考圖二十、圖二十一) 改變實體位址。
圖二十
圖二十一
請參照範例一
22
■ 3. Sample Code 範例
23
範例二 Config Register input (8 bit) GP70 到 GP77 的控制
<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 0~7(0xFx)= GP70 ~77 為 High.
24
範例三 Config Register input (4 bit) GP74 到 GP77 的控制
<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 4~7(0xFx)= GP74 ~77 為 High.
25
範例四 Config Register input (4 bit) GP70 到 GP73 的控制
<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 0~3(0xFx)= GP70 ~73 為 High.
26
範例五 Config Register output (8 bit) GP80 到 GP87 的控制
<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 0~7=(0/1) 使 GP 80~87 輸出為 Low or High
27
範例六 Config Register output (4 bit) GP84 到 GP87 的控制
<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 4~7=(0/1) 使 GP 84~87 輸出為 Low or High
28
範例七 Config Register output (4 bit) GP80 到 GP83 的控制
<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 0~3=(0/1) 使 GP 80~83 輸出為 Low or High
29
範例八 DOS Debug 參考範例: Loopback+8LED
-o A02 01
-i A03
FE
-o A02 02
-i A03
FD
-o A02 04
-i A03
FB
-o A02 08
-i A03
F7
-o A02 10
-i A03
EF
-o A02 20
-i A03
DF
-o A02 40
-i A03
BF
-o A02 80
-i A03
7F
-
30