USB Smart I/O
Trademarks & Copyright
I2C is a Registered Trademark of Philips Semiconductors. AT, IBM, and PC are trademarks of International Business Machines Corporation. Pentium is a registered trademark of Intel Corporation. Windows is a registered trademark of Microsoft Corporation. HyperTerminal is copyright by Microsoft Corporation and Hilgraeve Inc. Borland Delphi is copyright by Borland Software Corporation.
Daftar Isi 1
Pendahuluan............................................................................................. 1.1 Spesifikasi.................................................................................................... 1.2 Sistem yang Dianjurkan............................................................................
3 3 3
2
Perangkat Keras....................................................................................... 2.1 Tata Letak Komponen............................................................................... 2.2 Konektor dan Pengaturan Jumper..........................................................
4 4 4
3
Antarmuka................................................................................................ 3.1 Antarmuka UART........................................................................................ 3.2 Command Set.............................................................................................. 3.2.1. Ping............................................................................................................... 3.2.2. Reset............................................................................................................. 3.2.3. Set Function................................................................................................. 3.2.4. Get Function................................................................................................ 3.2.5. Get Port....................................................................................................... 3.2.6. Set Bit........................................................................................................... 3.2.7. Get Bit.......................................................................................................... 3.2.8. Set Byte........................................................................................................ 3.2.9. Get Byte...................................................................................................... 3.2.10. Get ADC...................................................................................................... 3.2.11. Set Bit Rate.................................................................................................. 3.2.12. Get Bit Rate................................................................................................ 3.2.13. I2C Start....................................................................................................... 3.2.14. I2C Write..................................................................................................... 3.2.15. I2C Read...................................................................................................... 3.2.16. I2C Stop....................................................................................................... 3.2.17. I2C Send Packet......................................................................................... 3.2.18. I2C Get Packet........................................................................................... 3.2.19. Set Baud Rate............................................................................................. 3.2.20. Get Baud Rate............................................................................................ 3.2.21. Send UART................................................................................................... 3.2.22. Get UART..................................................................................................... 3.2.23. Send DAC.................................................................................................... 3.2.24. Stop Counter............................................................................................... 3.2.25. Start Counter............................................................................................... 3.2.26. Get Counter................................................................................................ 3.2.27. Get Version.................................................................................................
7 7 8 8 8 9 9 10 10 11 11 12 12 12 13 13 13 14 14 14 15 15 16 16 16 17 17 18 18 18
4
Prosedur Pengujian..................................................................................
19
5
Contoh Program........................................................................................
20
Lampiran A.
Skematik PC-LINK USB SMART I/O.......................................................
2
23
1.
PENDAHULUAN PC-LINK USB SMART I/O merupakan sebuah divais USB yang berfungsi sebagai pengendali beberapa jalur input/output dan antarmuka. Contoh aplikasi PC-LINK USB SMART I/O adalah sebagai pengendali relay/LED, membaca sinyal analog dari sensor, sebagai pembaca kondisi saklar, penghitung pulsa counter, komunikasi dengan modul-modul via antarmuka UART, komunikasi dengan sensor/RTC/EEPROM via antarmuka I2C®, dan lainlain.
1.1.
SPESIFIKASI Spesifikasi PC-LINK USB SMART I/O sebagai berikut: • Koneksi ke host (komputer) menggunakan antarmuka USB yang akan dikenali sebagai COM Port (virtual) dengan parameter 8-n-1 (8 bit data, 1 bit stop, tanpa parity) dan fitur Auto Baud Rate (rentang baud rate: 110 – 256000 bps). • Tersedia 8 pin analog yang dapat difungsikan sebagai analog input (Analog to Digital Converter), digital output, atau digital input (dengan atau tanpa resistor pull-up internal). • Tersedia 8 pin digital yang dapat difungsikan sebagai digital output atau digital input (dengan atau tanpa resistor pull-up internal). • Tersedia 5 pin general purpose yang dapat difungsikan sebagai digital output atau digital input (dengan atau tanpa resistor pull-up internal). • Tersedia DAC (Digital to Analog Converter) 8-bit dengan kemampuan railto-rail (0 – ±5,1 VDC). • Tersedia antarmuka I2C dengan bit rate antara 30 – 400 kHz (default 50 kHz). Modul berfungsi sebagai master. • Buffer kirim I2C sebesar 35 byte dan buffer terima sebesar 32 byte. • Tersedia antarmuka UART 8-n-1 dengan pilihan level tegangan: TTL (halfduplex), RS232 (half-duplex), atau RS485 (half-duplex) dan pilihan baud rate: 9600, 19200, 38400, atau 57600 bps. • Buffer kirim dan terima UART masing-masing 32 byte. • Membutuhkan sumber catu daya dengan tegangan 6,5 – 12 VDC. • Tersedia voltage regulator dengan output ±5,1 VDC dan arus maksimal 800 mA (sebagian sudah dialokasikan untuk komponen internal).
1.2.
SISTEM YANG DIANJURKAN Sistem yang dianjurkan untuk penggunaan PC-LINK USB SMART I/O adalah: Perangkat keras: • PC™ AT™ Pentium® IBM™ Compatible dengan port USB. • DVD-ROM Drive dan Hard disk. Perangkat lunak: • Sistem operasi Windows® XP. • Borland Delphi© atau pemrograman lain yang dapat mengakses COM port. • File yang ada pada CD/DVD program: smart_io_driver.inf, SmartIO.exe + source (Delphi 7), datasheet, dan MANUAL PC-LINK USB SMART IO.PDF.
3
2.
PERANGKAT KERAS
2.1.
TATA LETAK KOMPONEN
2.2.
KONEKTOR DAN PENGATURAN JUMPER DC Jack J2 dan Terminal biru J1 berfungsi sebagai konektor untuk catu daya modul, sedangkan terminal biru J12 berfungsi sebagai tegangan output dari regulator.
Polaritas DC Jack
J1 Pin 1 2 J12 Pin 1 2
Nama Fungsi GND Titik referensi ground untuk catu daya input 6,5-12VDC Terhubung ke catu daya input (6,5 – 12 Volt) Nama GND 5VDC
Fungsi Titik referensi ground untuk tegangan output Tegangan output dari regulator (±5,1 Volt) 4
Jumper SDA-SCL (J19) berfungsi untuk mengaktifkan resistor pull-up untuk pin SDA dan SCL pada antarmuka I2C. Jumper SDA-SCL J19
Fungsi Pull-up tidak aktif (jumper terlepas)
SDA SCL
Pull-up aktif (jumper terpasang) SDA SCL Penting ! Apabila lebih dari satu modul dihubungkan pada I 2C-bus maka jumper SDASCL salah satu modul saja yang perlu dipasang. Terminal biru RS232 (J8) RS232 berfungsi sebagai konektor untuk antarmuka UART RS232, terminal biru TTL (J6) berfungsi sebagai konektor untuk antarmuka UART TTL, sedangkan terminal biru RS485 (J15) berfungsi sebagai konektor untuk antarmuka UART RS485.
J8 (RS232) Pin Nama 1 GND 2 TX 3 RX
Fungsi Titik referensi ground Jalur data UART (RS232) keluar dari modul Jalur data UART (RS232) masuk ke modul
J6 (TTL) Pin 1 2 3
Nama GND TX RX
Titik referensi ground Jalur data UART (TTL) keluar dari modul Jalur data UART (TTL) masuk ke modul
J15 Pin 1 2 3
Nama GND DD+
Fungsi Titik referensi ground Jalur data (inverting –) Jalur data (non-inverting +)
Fungsi
5
Jumper J17 dan J18 berfungsi untuk menentukan jalur komunikasi UART yang digunakan. UART RS232
UART RS485
UART TTL
J17 J18 Jumper pada 3 posisi 1 – 2 2 1
J17 J18 Jumper pada 3 posisi 2 – 3 2 1
J17 J18 Jumper 3 dilepas 2 1
Jumper J13, J14, dan J16 masing-masing berfungsi sebagai bias –, terminasi, dan bias +. Dalam satu jaringan RS485 umumnya hanya ada 1 pasang bias – dan bias +, sedangkan terminasi hanya dipasang di modul-modul terluar/ujung. Contoh Kondisi
Contoh Konfigurasi Jumper
Jika modul berada di ujung dan jaringan belum memiliki bias +/–
16 14 13
Jika modul berada di ujung dan sudah ada bias +/– dalam jaringan
16 14 13
Jika modul tidak berada di ujung dan jaringan belum memiliki bias +/–
16 14 13
Jika modul tidak berada di ujung dan sudah ada bias +/– dalam jaringan
16 14 13
Terminal biru J5 berfungsi sebagai konektor untuk antarmuka I2C, sedangkan terminal biru J11 berfungsi sebagai konektor untuk DAC.
J5 Pin 1 2 3
Nama GND SDA SCL
J11 Pin 1 2
Nama GND DAC
Fungsi Titik referensi ground I2C-bus data input/output I2C-bus clock input Fungsi Titik referensi ground Tegangan output dari DAC 6
Header ANALOG INPUT (J3) terdiri dari pin yang dapat berfungsi sebagai analog input atau digital input/output. Pin A7 juga dapat difungsikan sebagai Counter 1. Header DIGITAL I/O (J4) terdiri dari pin yang dapat berfungsi sebagai digital input/output. Pin DIO7 juga dapat difungsikan sebagai Counter 0. Header GPIO & I2C (J10) terdiri dari pin yang dapat berfungsi sebagai digital input/output serta pin SDA dan SCL untuk I2C. ANALOG INPUT (J3)
VCC DIO1 DIO3 DIO5 DIO7
2
VCC PGND A1 DIO0 A3 DIO2 A5 DIO4 A7 DIO6
1
2
1
2
1
AGND A0 A2 A4 A6
GPIO & I2C (J10)
DIGITAL I/O (J4)
PGND GPIO0 GPIO2 GPIO4 SDA
VCC GPIO1 GPIO3 SCL 10
9
10
9
10
9
Spesifikasi dan karakteristik masing-masing pin dapat dilihat pada datasheet. 3.
ANTARMUKA PC-LINK USB SMART I/O memiliki antarmuka USB yang akan dikenali dan dapat diakses oleh komputer sebagai UART COM port (virtual).
3.1.
ANTARMUKA UART Parameter komunikasi UART adalah sebagai berikut: • 110 – 256000 bps • 8 bit data • 1 bit stop • tanpa bit parity • tanpa flow control Setiap paket data yang dikirim oleh host dimulai dengan byte awal yang diikuti dengan 1 byte jumlah byte perintah+data, 1 byte kode perintah, n byte parameter (jika ada) dan diakhiri dengan 1 byte LRC. Start Byte
Byte Count
Command
Parameter
LRC
Start Byte selalu bernilai heksadesimal 0x58 ($58) atau 88 desimal. Byte Count adalah jumlah byte Command dan Parameter (tidak termasuk Start Byte, Byte Count, dan LRC). LRC adalah error-checking byte dengan cara menjumlahkan semua byte, mulai dari Start Byte hingga Parameter terakhir. Hasil penjumlahan tersebut hanya diambil LSB saja lalu dilakukan two's complement. PC-LINK USB SMART I/O memiliki fitur timeout untuk penerimaan paket dari host. Jika tidak ada data yang diterima dalam waktu ±1 detik, maka data berikutnya akan dianggap paket data baru dan modul akan menunggu Start Byte. Jika timeout terjadi di tengah-tengah paket, maka paket tersebut akan diabaikan. 7
Untuk perintah yang meminta data, format paket data balasan dari modul sama seperti format paket data dari host. Untuk perintah yang tidak membutuhkan balasan data, modul akan membalas dengan ACK (0xAA) atau NACK (0xEE). Start Byte
0x01
0xAA / 0xEE
LRC
Perintah dan parameter yang bisa digunakan dapat dilihat pada bagian 3.2. Pengaturan default saat penjualan: – ANALOG INPUT berfungsi sebagai analog input (tanpa resistor pull-up internal). – DIGITAL I/O dan GPIO berfungsi sebagai digital input (tanpa resistor pull-up internal, Counter tidak aktif). – Baud rate UART 9600 bps. – Bit rate I2C 50 kHz. 3.2.
COMMAND SET
3.2.1. PING Berfungsi untuk memeriksa apakah jalur komunikasi ke modul masih ada. Byte Count
Command
Parameter
Perintah Host
1
0xFF
-
Respon Modul
1
0xAA 0xEE
-
Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0xFF 0xA8 USB Smart I/O : 0x58 0x01 0xAA 0xFD 3.2.2. RESET Berfungsi untuk melakukan soft-reset pada modul. Byte Count
Command
Parameter
Perintah Host
1
0x01
-
Respon Modul
1
0xAA 0xEE
-
Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Modul akan melakukan soft-reset dengan efek sebagai berikut: – Fungsi USB modul akan dimatikan sehingga terputus/hilang dari komputer. – Modul akan mengulangi proses dari awal, termasuk inisialisasi koneksi USB dan mengulangi pembacaan EEPROM untuk mengambil data pengaturan fungsi masing-masing pin I/O. – Output DAC tidak berubah. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0x01 0xA6 USB Smart I/O : 0x58 0x01 0xAA 0xFD 8
3.2.3. SET FUNCTION Berfungsi untuk mengatur fungsi I/O pada modul. Byte Count
Command
Perintah Host
5
0x10
Respon Modul
1
Parameter PORT
ANALOG
DIRECT
0xAA
-
0xEE
-
PULL-UP
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter ANALOG mewakili 8 bit dalam 1 port. Masing-masing bit diberi nilai 0 jika akan digunakan sebagai digital i/o atau diberi nilai 1 jika akan digunakan sebagai analog input. Jika bit diberi nilai 1, maka parameter DIRECT dan PULL-UP untuk bit tersebut akan diabaikan. Parameter ini hanya berlaku untuk PORT 0. Parameter DIRECT mewakili 8 bit (atau 5 bit pada General Purpose I/O) dalam 1 port. Masing-masing bit diberi nilai 0 jika akan digunakan sebagai input atau diberi nilai 1 jika akan digunakan sebagai output. Parameter PULL-UP mewakili 8 bit (atau 5 bit pada General Purpose I/O) dalam 1 port. Masing-masing bit diberi nilai 0 untuk membuat pin yang diwakili pada kondisi tri-state/low, atau diberi nilai 1 untuk mengaktifkan resistor pull-up internal pada pin tersebut. Pengaturan ini akan disimpan pada EEPROM sehingga tidak akan hilang saat modul tidak diberi catu daya. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x05 0x10 0x01 0x00 0xF0 0x0F 0x93 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan menjadikan Digital I/O bit 4-7 sebagai jalur output dengan nilai 0, sedangkan bit 0-3 sebagai jalur input dengan resistor pull-up internal aktif. 3.2.4. GET FUNCTION Berfungsi untuk membaca pengaturan fungsi I/O pada modul. Perintah Host Respon Modul
Byte Count
Command
Parameter
2
0x11
PORT
4
0x11
1
0xEE
ANALOG
DIRECT
PULL-UP
-
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter ANALOG mewakili 8 bit dalam 1 port. Masing-masing bit bernilai 0 jika digunakan sebagai digital i/o atau bernilai 1 jika digunakan sebagai analog input. Jika bit bernilai 1, maka parameter DIRECT dan PULL-UP untuk bit tersebut harus diabaikan. Parameter ini hanya berlaku untuk PORT 0.
9
Parameter DIRECT mewakili 8 bit (atau 5 bit pada General Purpose I/O) dalam 1 port. Masing-masing bit bernilai 0 jika digunakan sebagai input atau bernilai 1 jika digunakan sebagai output. Parameter PULL-UP mewakili 8 bit (atau 5 bit pada General Purpose I/O) dalam 1 port. Masing-masing bit bernilai 0 jika pin yang diwakili pada kondisi tri-state/low, atau bernilai 1 jika resistor pull-up internal pada pin tersebut dalam kondisi aktif. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan EEPROM. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x11 0x02 0x93 USB Smart I/O : 0x58 0x04 0x11 0x00 0x00 0x1F 0x74 berarti komputer meminta fungsi General Purpose I/O dan modul menjawab bahwa semua pin General Purpose I/O berfungsi sebagai input dengan resistor pull-up internal aktif. 3.2.5. GET PORT Berfungsi untuk memerintahkan modul membaca nilai 1 port tertentu. Perintah Host Respon Modul
Byte Count
Command
Parameter
2
0x12
PORT
2
0x12
BYTEVALUE
1
0xEE
-
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter BYTEVALUE adalah nilai port tersebut (register PORTx). Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x12 0x01 0x93 USB Smart I/O : 0x58 0x02 0x12 0x88 0x0C berarti komputer meminta nilai pada Digital I/O dan modul menjawab bahwa nilai PORT pada port tersebut adalah 0x88. 3.2.6. SET BIT Berfungsi untuk memerintahkan modul mengubah nilai 1 pin pada port tertentu. Byte Count
Command
Perintah Host
4
0x13
Respon Modul
1
Parameter PORT
BIT
0xAA
-
0xEE
-
BITVALUE
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter BIT adalah nomor bit (0-7) yang akan diakses.
10
Parameter BITVALUE adalah nilai yang akan dikirimkan ke bit tersebut. Diberi nilai 0 untuk mengirimkan logika low atau diberi nilai 1 untuk mengirimkan logika high. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x04 0x13 0x01 0x05 0x01 0x8A USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan nilai 1/high ke Digital I/O bit 5. 3.2.7. GET BIT Berfungsi untuk memerintahkan modul membaca nilai 1 pin pada port tertentu. Byte Count
Command
Parameter
Perintah Host
3
0x14
Respon Modul
2
0x14
BITVALUE
1
0xEE
-
PORT
BIT
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter BIT adalah nomor bit (0-7) yang akan diakses. Parameter BITVALUE adalah nilai bit tersebut (register PINx), bernilai 0 untuk logika low atau bernilai 1 untuk logika high. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x03 0x14 0x00 0x02 0x8F USB Smart I/O : 0x58 0x02 0x14 0x00 0x92 berarti komputer meminta nilai bit 2 pada Analog Input dan modul menjawab bahwa logika pada bit tersebut adalah low. 3.2.8. SET BYTE Berfungsi untuk memerintahkan modul mengubah nilai 1 port tertentu. Byte Count
Command
Perintah Host
3
0x15
Respon Modul
1
Parameter PORT
BYTEVALUE
0xAA
-
0xEE
-
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter BYTEVALUE adalah nilai 1 byte yang akan dikirimkan ke port tersebut. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x03 0x15 0x00 0x55 0x3B USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan nilai 0x55 ke Analog Input. 11
3.2.9. GET BYTE Berfungsi untuk memerintahkan modul membaca nilai 1 port tertentu. Byte Count
Command
Parameter
2
0x16
PORT
2
0x16
BYTEVALUE
1
0xEE
-
Perintah Host Respon Modul
Parameter PORT adalah kode port yang akan diakses. Nilai 0 mewakili Analog Input, nilai 1 mewakili Digital I/O, dan nilai 2 mewakili General Purpose I/O. Parameter BYTEVALUE adalah nilai port tersebut (register PINx). Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x16 0x01 0x8F USB Smart I/O : 0x58 0x02 0x16 0x88 0x08 berarti komputer meminta nilai pada Digital I/O dan modul menjawab bahwa nilai PIN pada port tersebut adalah 0x88. 3.2.10. GET ADC Berfungsi untuk memerintahkan modul membaca nilai ADC dari kanal tertentu. Byte Count
Command
Parameter
Perintah Host
2
0x17
CHANNEL
Respon Modul
3
0x17
1
0xEE
MSB
LSB -
Parameter CHANNEL adalah kanal ADC (0-7) yang akan dibaca. Parameter MSB adalah most significant byte dari hasil pembacaan ADC. Parameter LSB adalah least significant byte dari hasil pembacaan ADC. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x17 0x03 0x8C USB Smart I/O : 0x58 0x03 0x17 0x03 0xFF 0x8C berarti komputer meminta nilai pada kanal ADC 3 dan modul menjawab bahwa nilai ADC pada kanal tersebut adalah 1023 (0x03FF). 3.2.11. SET BIT RATE Berfungsi untuk mengatur bit rate I2C. Byte Count
Command
Perintah Host
3
0x20
Respon Modul
1
Parameter BITRATEH
0xAA 0xEE
Parameter BITRATEH adalah most significant byte dari BITRATE. Parameter BITRATEL adalah least significant byte dari BITRATE. 12
BITRATEL -
Parameter BITRATE adalah nilai bit rate dalam satuan kHz. Nilai BITRATE yang diijinkan antara 30 – 400. Pengaturan ini akan disimpan pada EEPROM sehingga tidak akan hilang saat modul tidak diberi catu daya. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x03 0x20 0x00 0x64 0x21 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengatur bit rate untuk I2C sebesar 100 (0x0064) kHz. 3.2.12. GET BIT RATE Berfungsi untuk membaca bit rate I2C. Byte Count
Command
Parameter
Perintah Host
1
0x21
-
Respon Modul
3
0x21
1
0xEE
BITRATEH
BITRATEL -
Parameter BITRATEH adalah most significant byte dari BITRATE. Parameter BITRATEL adalah least significant byte dari BITRATE. Parameter BITRATE adalah nilai bit rate dalam satuan kHz. Jika paket dikenali dan benar, modul akan membalas dengan nilai bit rate. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0x21 0x86 USB Smart I/O : 0x58 0x03 0x21 0x00 0x32 0x52 berarti komputer meminta nilai bit rate dan modul menjawab bahwa bit rate adalah sebesar 50 (0x0032) kHz. 3.2.13. I2C START Berfungsi untuk memerintahkan modul mengirimkan kondisi start pada jalur I2C. Byte Count
Command
Parameter
Perintah Host
1
0x22
-
Respon Modul
1
0xAA 0xEE
-
Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0x22 0x85 USB Smart I/O : 0x58 0x01 0xAA 0xFD 3.2.14. I2C WRITE Berfungsi untuk memerintahkan modul mengirimkan 1 byte melalui jalur I2C. Byte Count
Command
Parameter
Perintah Host
2
0x23
1 byte data
Respon Modul
1
0xAA 0xEE 13
-
Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x23 0xA0 0xE3 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan nilai 160 (0xA0) melalui I2C. 3.2.15. I2C READ Berfungsi untuk memerintahkan modul membaca 1 byte melalui jalur I2C.
Perintah Host Respon Modul
Byte Count
Command
Parameter
2
0x24
2
0x24
1 byte data
1
0xEE
-
0x00 (nack) 0x01 (ack)
Parameter dari host diberi nilai 0 untuk membalas penerimaan data I2C dengan not acknowledge dan diberi nilai 1 untuk membalas penerimaan data I2C dengan acknowledge. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x24 0x00 0x82 USB Smart I/O : 0x58 0x02 0x24 0x90 0xF2 berarti komputer meminta 1 data yang didapat dari jalur I 2C dan akan dibalas dengan not acknowledge. Modul menjawab bahwa hasil pembacaan data melalui I2C bernilai 144 (0x90). 3.2.16. I2C STOP Berfungsi untuk memerintahkan modul mengirimkan kondisi stop pada jalur I2C. Byte Count
Command
Parameter
Perintah Host
1
0x25
-
Respon Modul
1
0xAA 0xEE
-
Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0x25 0x82 USB Smart I/O : 0x58 0x01 0xAA 0xFD 3.2.17. I2C SEND PACKET Berfungsi untuk memerintahkan modul mengirimkan 1 paket data melalui jalur I2C. Byte Count
Command
Parameter
Perintah Host
2 – 36
0x26
1 – 35 byte
Respon Modul
1
0xAA 0xEE 14
-
Parameter sebanyak maksimal 35 byte mencakup alamat divais I2C. Pengiriman akan dilakukan berurutan. Modul akan mengirimkan kondisi start, parameter pada perintah, dan kondisi stop. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x05 0x26 0xD0 0x01 0x02 0x03 0xA7 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan kondisi start, 0xD0 (alamat tulis divais I2C yang akan diakses), 0x01, 0x02, 0x03, dan kondisi stop. 3.2.18. I2C GET PACKET Berfungsi untuk memerintahkan modul membaca 1 paket data melalui jalur I2C. Perintah Host Respon Modul
Byte Count
Command
Parameter
3
0x27
2 – 33
0x27
1 – 32 byte
1
0xEE
-
ADDR
COUNT
Parameter ADDR adalah alamat divais I2C yang akan diakses. Parameter COUNT adalah jumlah data yang akan dibaca. Perintah ini hanya akan melakukan proses pembacaan. Untuk memilih alamat data yang akan dibaca (misalnya untuk mengakses EEPROM), alamat dapat ditentukan dahulu menggunakan perintah I2CSENDPACKET. Modul akan mengirimkan kondisi start, alamat baca divais I2C (ADDR|0x01), membaca data sebanyak COUNT, dan mengirimkan kondisi stop. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan (maksimal 32 byte). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x03 0x27 0xD0 0x01 0xAD USB Smart I/O : 0x58 0x02 0x27 0x03 0x7C berarti komputer memerintahkan modul membaca 1 byte dari divais I2C dengan alamat 0xD1. Modul menjawab bahwa hasil pembacaan melalui I2C adalah 0x03. 3.2.19. SET BAUD RATE Berfungsi untuk mengatur baud rate UART. Byte Count
Command
Parameter
Perintah Host
2
0x30
BAUDRATE
Respon Modul
1
0xAA 0xEE
-
Parameter BAUDRATE adalah kode nilai baud rate. Kode 1 = baud rate 9600 bps Kode 2 = baud rate 19200 bps Kode 3 = baud rate 38400 bps Kode 4 = baud rate 57600 bps Pengaturan ini akan disimpan pada EEPROM sehingga tidak akan hilang saat modul tidak diberi catu daya. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). 15
Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x30 0x03 0x73 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengatur baud rate 38400 bps. 3.2.20. GET BAUD RATE Berfungsi untuk membaca baud rate UART. Perintah Host Respon Modul
Byte Count
Command
Parameter
1
0x31
-
2
0x31
BAUDRATE
1
0xEE
-
Parameter BAUDRATE adalah kode nilai baud rate. Jika paket dikenali dan benar, modul akan membalas dengan kode nilai baud rate. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0x31 0x76 USB Smart I/O : 0x58 0x02 0x31 0x03 0x72 berarti komputer meminta nilai baud rate dan modul menjawab bahwa baud rate bernilai 38400 bps. 3.2.21. SEND UART Berfungsi untuk memerintahkan modul mengirimkan serangkaian data melalui jalur UART. Byte Count
Command
Parameter
Perintah Host
2 – 33
0x32
1 – 32 byte
Respon Modul
1
0xAA 0xEE
-
Pengiriman parameter hingga sebanyak 32 byte akan dilakukan berurutan. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x04 0x32 0x01 0x02 0x03 0x6C USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan data 0x01, 0x02, dan 0x03 melalui jalur UART. 3.2.22. GET UART Berfungsi untuk memerintahkan modul membaca serangkaian data melalui jalur UART. Perintah Host Respon Modul
Byte Count
Command
Parameter
2
0x33
COUNT
2 – 33
0xA3
1 – 32 byte
0xAA
1
0xEE 16
-
Parameter COUNT adalah jumlah data yang akan dibaca. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Data ini adalah data yang sudah diterima (maksimal 32 byte). Jika data yang diterima lebih dari 32 byte, maka data ke-33 dan seterusnya kaan menumpangi data pertama dan seterusnya (roll-over). Jika nilai COUNT lebih besar daripada jumlah data dalam buffer, maka data yang dikirimkan oleh modul hanya data dalam buffer. Jika nilai COUNT lebih kecil daripada jumlah data dalam buffer, maka data yang dikirimkan oleh modul hanya sejumlah COUNT. Setelah pembacaan, seluruh isi buffer akan dihapus. Jika tidak ada data yang diterima, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x33 0x03 0x70 USB Smart I/O : 0x58 0x04 0x33 0x01 0x02 0x03 0x6B berarti komputer meminta 3 data dan modul menjawab bahwa hasil pembacaan adalah 0x01, 0x02, dan 0x03. 3.2.23. SEND DAC Berfungsi untuk memerintahkan modul mengirimkan nilai ke DAC untuk diubah menjadi tegangan analog. Byte Count
Command
Parameter
Perintah Host
2
0x40
VALUE
Respon Modul
1
0xAA
-
0xEE
Parameter VALUE adalah nilai (0-255) yang akan dikonversikan menjadi tegangan analog (0-±5,1). Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x40 0x80 0xE6 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengirimkan nilai 128 (0x80) ke DAC yang akan dikonversikan menjadi tegangan sekitar 2,58 V. 3.2.24. STOP COUNTER Berfungsi untuk memerintahkan modul menghentikan counter tertentu. Byte Count
Command
Parameter
Perintah Host
2
0x50
COUNTER
Respon Modul
1
0xAA 0xEE
-
Parameter COUNTER adalah nomor counter yang akan diakses, bernilai 0 atau 1. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x50 0x01 0x55 USB Smart I/O : 0x58 0x01 0xAA 0xFD 17
akan menghentikan Counter 1. 3.2.25. START COUNTER Berfungsi untuk memerintahkan modul mengaktifkan counter tertentu. Byte Count
Command
Parameter
Perintah Host
2
0x51
COUNTER
Respon Modul
1
0xAA
-
0xEE
Parameter COUNTER adalah nomor counter yang akan diakses, bernilai 0 atau 1. Saat counter diaktifkan dengan perintah ini, maka pin yang digunakan counter tersebut akan diubah menjadi digital input dengan resistor pull-up internal aktif. Pengaturan baru ini juga akan disimpan pada EEPROM. Jika paket dikenali dan benar, modul akan membalas dengan ACK (0xAA). Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x51 0x00 0x55 USB Smart I/O : 0x58 0x01 0xAA 0xFD akan mengaktifkan Counter 0. 3.2.26. GET COUNTER Berfungsi untuk memerintahkan modul membaca hasil penghitungan dari counter tertentu. Byte Count
Command
Parameter
Perintah Host
2
0x52
COUNTER
Respon Modul
3
0x52
1
0xEE
MSB
LSB -
Parameter COUNTER adalah nomor counter yang akan diakses, bernilai 0 atau 1. Parameter MSB adalah most significant byte dari hasil pembacaan counter. Parameter LSB adalah least significant byte dari hasil pembacaan counter. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x02 0x52 0x00 0x54 USB Smart I/O : 0x58 0x03 0x52 0x01 0x80 0xD2 berarti komputer meminta nilai Counter 0 dan modul membalas bahwa nilai penghitungan Counter 0 adalah 384 (0x0180). 3.2.27. GET VERSION Berfungsi untuk membaca versi firmware modul. Byte Count
Command
Parameter
Perintah Host
1
0xFE
-
Respon Modul
3
0xFE
1
0xEE 18
Major
Minor -
Parameter Major dan Minor menunjukkan versi firmware dalam desimal dengan format Major.Minor. Jika paket dikenali dan benar, modul akan membalas dengan data hasil pembacaan. Jika paket salah/tidak dikenali, modul akan membalas dengan NACK (0xEE). Contoh: PC : 0x58 0x01 0xFE 0xA9 USB Smart I/O : 0x58 0x03 0xFE 0x01 0x00 0xA6 berarti komputer meminta versi firmware dan modul menjawab bahwa versinya adalah 1.0 (0x01 0x00). 4.
PROSEDUR PENGUJIAN 1. Hubungkan DT-I/O I2C Peripheral ke PC-LINK USB SMART I/O melalui terminal biru J5. 2. Hubungkan DT-I/O RS232-RS485 Converter, DT-I/O Neo RS232 to RS485 Converter, atau DT-I/O USB to UART Converter ke komputer dan ke PCLINK USB SMART I/O melalui terminal biru RS485 (J15). 3. Siapkan Voltmeter dan DT-I/O LED Logic Tester. 4. Hubungkan sumber catu daya ke modul-modul tersebut. 5. Jika catu daya telah terhubung dengan baik, maka LED POWER PC-LINK USB SMART I/O akan menyala. 6. Hubungkan konektor USB Mini-B ke USB port pada komputer dengan menggunakan kabel USB yang disertakan. 7. Jalankan SmartIO.exe.
8. Pilih COM Port yang digunakan. Tekan tombol Refresh untuk mendata ulang COM port yang baru terhubung. 9. Tekan Open. 10.Pada bagian Testing (kanan), beri tanda centang pada Auto, lalu tekan tombol Test. 11.Ikuti setiap petunjuk yang muncul sebelum dan sesudah proses uji. 12.Pengujian ANALOG INPUT, DIGITAL I/O, dan GP I/O akan menghasilkan nyala DT-I/O LED Logic Tester yang bergantian. 13.Pengujian DAC akan menghasilkan nilai tegangan yang bertambah mulai dari 0 hingga ±5,1VDC. 19
14.Pengujian I2C akan menulis dan membaca EEPROM DT-I/O I2C Peripheral. Hasil penulisan dan pembacaan 8 byte pertama harus sama, yaitu 1, 3, 7, 15, 31, 63, 127, dan 255. 15.Pengujian UART TTL dan RS232 (dengan menghubungkan singkat RX dan TX) akan menghasilkan nilai byte yang sama antara Out dan In, yaitu 1, 3, 7, 15, 31, 63, 127, dan 255. Saat hubungan singkat dilepas, baris status (bawah) akan menunjukkan tidak ada data. 16.Pengujian UART RS485 akan mengirimkan data 1, 3, 7, 15, 31, 63, 127, dan 255 ke komputer. Dan data berikutnya yang dikirimkan melalui komputer harus sama dengan data yang dibaca oleh modul. 5.
CONTOH PROGRAM Pada CD/DVD telah disertakan source code program SmartIO. Source code ini dapat digunakan sebagai panduan untuk membuat program lain. Berikut ini adalah penjelasan fungsi masing-masing bagian GUI SmartIO.exe. Get Baud Rate
Set Baud Rate
Send DAC
Baud Rate hasil pembacaan / Baud Rate yang akan ditentukan
Get Bit Rate
Set Bit Rate
I2C Start
Nilai yang dikirim ke DAC
Get Version
Ping Reset
Hasil pembacaan versi
Byte hasil I2C I2C I2C Write Read pembacaan Stop
Byte yang Bit Rate hasil pembacaan / Bit Rate yang akan ditentukan dikirim
Ack/Nack
Pilihan Port
Set Function Get Function
Get Port
Analog
Direct
Pull-up
20
Pilihan Port Pilihan Bit Logika Bit
Set Bit
Get Bit
Hasil pembacaan nilai ADC
Pilihan Kanal ADC Get ADC
Pilihan Port Byte yang dikirim
Set Byte Byte hasil pembacaan
Get Byte
Start Counter Pilihan Counter
Stop Counter
Get Counter
Hasil pembacaan Counter
21
Kolom Data Kolom Data Keluar Masuk
I2C Send Packet Jumlah byte I 2C yang akan dibaca
Send UART Jumlah byte UART yang akan dibaca
I2C Get Packet
Get UART
♦ Terima Kasih atas kepercayaan Anda menggunakan produk kami, bila ada kesulitan, pertanyaan, atau saran mengenai produk ini silahkan menghubungi technical support kami :
[email protected] 22
LAMPIRAN A. Skematik PC-LINK USB SMART I/O
23