Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

DIO Technical Guide (TW)

Document Revision: v1.11


※ ※ MODIFIED HISTORY ※ ※

Rev.. Modified Description Date Remark

1.00 初次發行 2018/01/04

1.10 Correction Made 2018/11/15


1.11 New Format Updated 2020/10/21

2
目錄

目錄 ......................................................................................................................................................................... 3

術語與縮寫 ............................................................................................................................................................ 4

版權聲明................................................................................................................................................................. 4

1. DIO 功能說明 ................................................................................................................................................... 5

2. PIN 腳位介紹及如何變更實體位址. ........................................................................................................... 9

2.1 8 bit DI 的 PIN 腳位. ............................................................................................................................. 9

2.2 4 bit DI (High Byte) 的 PIN 腳位. ...................................................................................................11

2.3 4 bit DI (Low Byte) 的 PIN 腳位. ..................................................................................................... 13

2.4 8 bit DO 的 PIN 腳位. ......................................................................................................................... 15

2.5 4 bit DO (High Byte) 的 PIN 腳位. ................................................................................................. 17

2.6 4 bit DO (Low Byte) 的 PIN 腳位. .................................................................................................. 19

2.7 如何變更實體位址. ................................................................................................................................. 21

3. Sample Code 範例 ...................................................................................................................................... 23

範例一 如何修改 DIO 實體位址. ............................................................................................................... 23

範例二 Config Register input (8 bit) GP70 到 GP77 的控制. ......................................................... 24

範例三 Config Register input (4 bit) GP74 到 GP77 的控制. ......................................................... 25

範例四 Config Register input (4 bit) GP70 到 GP73 的控制. ......................................................... 26

範例五 Config Register output (8 bit) GP80 到 GP87 的控制. ...................................................... 27

範例六 Config Register output (4 bit) GP84 到 GP87 的控制. ...................................................... 28

範例七 Config Register output (4 bit) GP80 到 GP83 的控制. ...................................................... 29

範例八 DOS Debug 參考範例: Loopback+8LED. ............................................................................. 30

3
術語與縮寫

DIO - 數位輸入輸出
I/O 或 IO - 輸入/輸出
DOS - Disk Operating System, 磁碟作業系統
/h - Hexadecimal, 十六進制
/d - Decimal, 十進制
/b - Binary, 二進制

版權聲明
DOS® - 版權所有為 Microsoft®

4
1. DIO 功能說明

1.1 DIO 將 X86 低壓 I/O,與 X86 系統外,其他控制平台的高壓 I/O 連接,做隔離保護設


計。

1.2 德 承 的 DIO 在 隔 離 高 壓 I/O 端 , DIO 隔 離 是 以 光 耦 合 方 式 設 計 , 隔 離 電 壓


3750Vrms。DIO 在隔離高壓 I/O 端,必須輸入電源,隔離端 DIO 才能正常工作。隔
離端 DIO 的控制電壓在 9V ~ 30V (依機種設計不同而有所改變)。

1.3 德承的隔離 DI 預設值為 High, Low Sink (低壓驅動電流) 最小電流 1mA,Low 電位


的最小驅動電位,依各機種保護電路設計的不同,詳細最低電位規格;請參照使用說
明書。
參考圖一

圖一
註:
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

1.6 DIO 的 I/O 控制位址,可以支援存取 X86 架構下,硬體 I/O 輸入或輸出的實體位址。


而預設的輸入位址為 A03/h,輸出位址為 A02/h。少數機種會使用到 I/O 位址 A05/h
(GPIO5)、A09/h (GPIO3)、A10/h (GPIO4),詳細內容請參考使用說明書和軟體 X86
I/O 位址輸入輸出資料控制說明。

DIO (GPIO) 之 I/O 實體位址 (預設實體位址為 0xA00)


輸入位址 (GPIO Port 7) 為實體位址+3, 取得方式為 0xA00+3=A03/h
輸出位址 (GPIO Port 8) 為實體位址+2, 取得方式為 0xA00+2=A02/h
實體位址是可以經由 config register Mode 程式改變
見範例一

8
■ 2. PIN 腳位介紹及如何變更實體位址

2.1 8 bit DI 的 PIN 腳位:


下表為 8 bit DI (GPIO) 的 PIN 腳位,而圖七的紅框處為則說明 8 bit DI 所使用到的 GPIO
PIN 腳位設定 (index 80)。
圖八則是說明 8 bit DI 的值是從 GPIO7 Pin Status Register (index 82) 讀取。
8 bit DI 腳位說明:

Pin 定義 DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DI
I/O 位址 0xA03

8 bit DI 之 2 進制和 16 進制 DATA Bit 對照表:

= 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
圖八

2.2 4 bit DI (High Byte) 的 PIN 腳位:


下表為 4 bit DI (GPIO) 的 PIN 腳位,而圖九的紅框處則說明 4 bit DI (High Byte) 所使用
到的 GPIO PIN 腳位設定 (index 80)。
圖十則是說明 4 bit DI (High Byte) 的值是從 GPIO7 Pin Status Register (index 82) 讀
取。
4 bit DI (High Byte) 腳位說明:

Pin 定義 DI4 DI3 DI2 DI1 X X X X


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DI
I/O 位址 0xA03

4 bit DI (High Byte) 之 2 進制和 16 進制 DATA Bit 對照表:

= 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) 腳位說明:

Pin 定義 X X X X DI4 DI3 DI2 DI1


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DI
I/O 位址 0xA03

4 bit DI (Low Byte) 之 2 進制和 16 進制 DATA Bit 對照表:

= 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 腳位說明

Pin 定義 DO8 DO7 DO6 DO5 DO4 DO3 DO2 DO1


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DO
I/O 位址 0xA02

8 bit DO 之 2 進制和 16 進制 DATA Bit 對照表:

= 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
圖十四

2.5 4 bit DO (High Byte) 的 PIN 腳位:


下表為 4 bit DO (GPIO) 的 PIN 腳位,而圖十五的紅框處則說明 4 bit DO (High Byte) 所
使用到的 GPIO PIN 腳位設定 (index 88)。
圖十六則是說明 4 bit DO (High Byte) 的輸出值是從 GPIO8 Output Data Register
(index 89) 設定。

4 bit DO (High Byte) 腳位說明:

Pin 定義 DO4 DO3 DO2 DO1 X X X X


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DO
I/O 位址 0xA02

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
圖十六

2.6 4 bit DO (Low Byte) 的 PIN 腳位:


下表為 4 bit DO (GPIO) 的 PIN 腳位,而圖十七的紅框處則說明 4 bit DO (Low Byte) 所
使用到的 GPIO PIN 腳位設定 (index 88)。
圖十八則是說明 4 bit DO (Low Byte) 的輸出值是從 GPIO8 Output Data Register (index
89) 設定。

4 bit DO (Low Byte) 腳位說明:

Pin 定義 X X X X DO4 DO3 DO2 DO1


GPIO Bits 7 6 5 4 3 2 1 0
DI/DO DO
I/O 位址 0xA02

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
圖十八

2.7 如何變更 DIO 實體位址:


想改變 DIO 之 I/O 實體位址 (預設實體位址為 0xA00),要先進入硬體的組態暫存器
(Config Register) , 然 後 進 入 邏 輯 元 件 的 暫 存 器 編 號 區 (Logic Device Number
Register),如圖十九所示,而紅框處為說明中所使用到的 GPIO 元件的組態暫存器 (GPIO
device configuration registers)。

圖十九

21
進 入 邏 輯 元 件 的 暫 存 器 編 號 區 後 , 選 擇 GPIO 元 件 的 組 態 暫 存 器 (GPIO device
configuration registers),設定暫存器 60 和 61 (參考圖二十、圖二十一) 改變實體位址。

圖二十

圖二十一

請參照範例一

22
■ 3. Sample Code 範例

範例一 如何修改 DIO 實體位址

<Enter the DIO Config Register Mode>


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(dataPort, 0x06) //選取 logic device 06h

WriteByte(AddrPort, 0x60) // 進入 GPIO port base address High Byte 位址


WriteByte(DataPort, ( 0x0A)) // 選取 High Byte 位址為 0A
註: 這個 data port 改變的值為實體位址的 High Byte

WriteByte(AddrPort, 0x61) // 進入 GPIO port base address Low Byte 位址


WriteByte(DataPort, ( 0x00)) // 選取 Low Byte 位址為 00
註: 這個 data port 改變的值為實體位址的 Low Byte

<Leave the DIO Config Register Mode>


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

Cincoze default DIO Port base address is set to 0x0A00h

23
範例二 Config Register input (8 bit) GP70 到 GP77 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode>


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(dataPort, 0x06) //選取 logic device 06h

<Input Mode Selection> // 設定 GP70 到 GP77 為 input Mode


WriteByte(AddrPort, 0x80) // 選擇 Config Register 80h
WriteByte(DataPort, 0x00) //設定(bit 0~7) = 0 去讓 GP 70~77 為 Input mode.

<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 0~7(0xFx)= GP70 ~77 為 High.

<Leave the DIO Config Register Mode>


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

24
範例三 Config Register input (4 bit) GP74 到 GP77 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode >


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(dataPort, 0x06) //選取 logic device 06h

<Input Mode Selection> // 設定 GP74 到 GP77 為 input Mode


WriteByte(AddrPort, 0x80) // 選擇 Config Register 80h
WriteByte(DataPort, 0x0X) // 設定 (bit 4~7) = 0 去讓 GP 74~77 為 Input mode

<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 4~7(0xFx)= GP74 ~77 為 High.

<Leave the DIO Config Register Mode >


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

25
範例四 Config Register input (4 bit) GP70 到 GP73 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode >


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(dataPort, 0x06) //選取 logic device 06h

<Input Mode Selection> // 設定 GP70 到 GP73 為 input Mode


WriteByte(AddrPort, 0x80) // 選擇 Config Register 80h
WriteByte(DataPort, 0xX0) // 設定 (bit 0~3) = 0 去讓 GP 70~73 為 Input mode

<input Value>
WriteByte(AddrPort, 0x82) // 選擇 Config Register 82h
ReadByte(DataPort, Value) // 讀取 bit 0~3(0xFx)= GP70 ~73 為 High.

<Leave the DIO Config Register Mode >


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

26
範例五 Config Register output (8 bit) GP80 到 GP87 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode>


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(DataPort, 0x06) //選取 logic device 06h

<Output Mode Selection> //設定 GP80 到 GP87 為 output Mode


WriteByte(AddrPort, 0x88) // 選取 Config Register 88h
WriteByte(DataPort, (0xFF)) //設定 (bit 0~7) = 1 去讓 GP 80 ~87 為 Output mode

<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 0~7=(0/1) 使 GP 80~87 輸出為 Low or High

<Leave the DIO Config Register Mode>


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

27
範例六 Config Register output (4 bit) GP84 到 GP87 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode>


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(DataPort, 0x06) //選取 logic device 06h

<Output Mode Selection> //設定 GP84 to GP87 為 output Mode


WriteByte(AddrPort, 0x88) // 選取 Config Register 88h
WriteByte(DataPort, (0xFX) //設定 (bit 4~7) = 1 去讓 GP 84 ~87 為 Output mode

<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 4~7=(0/1) 使 GP 84~87 輸出為 Low or High

<Leave the DIO Config Register Mode >


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

28
範例七 Config Register output (4 bit) GP80 到 GP83 的控制

#define AddrPort 0x4E


#define DataPort 0x4F

<Enter the DIO Config Register Mode>


WriteByte(AddrPort, 0x87)
WriteByte(AddrPort, 0x87) //必須重複寫兩次才能進入 Config Register Mode

<Select Logic Device>


WriteByte(AddrPort, 0x07) //進入 logic device area
WriteByte(DataPort, 0x06) //選取 logic device 06h

<Output Mode Selection> //設定 GP80 to GP83 為 output Mode


WriteByte(AddrPort, 0x88) // 選取 Config Register 88h
WriteByte(DataPort, (0xXF) //設定 (bit 0~3) = 1 去讓 GP 80 ~83 為 Output mode

<Output Value>
WriteByte(AddrPort, 0x89) // 選取 Config Register 89h
WriteByte(DataPort, Value) // 設定 bit 0~3=(0/1) 使 GP 80~83 輸出為 Low or High

<Leave the DIO Config Register Mode >


WriteByte(AddrPort, 0xAA) //離開 Config Register Mode

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

You might also like