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... 3
1.1 Spesifikasi... 3
1.2 Sistem yang Dianjurkan... 3
2 Perangkat Keras... 4
2.1 Tata Letak Komponen... 4
2.2 Konektor dan Pengaturan Jumper... 4
3 Antarmuka... 7 3.1 Antarmuka UART... 7 3.2 Command Set... 8 3.2.1. Ping... 8 3.2.2. Reset... 8 3.2.3. Set Function... 9 3.2.4. Get Function... 9 3.2.5. Get Port... 10 3.2.6. Set Bit... 10 3.2.7. Get Bit... 11 3.2.8. Set Byte... 11 3.2.9. Get Byte... 12 3.2.10. Get ADC... 12
3.2.11. Set Bit Rate... 12
3.2.12. Get Bit Rate... 13
3.2.13. I2C Start... 13
3.2.14. I2C Write... 13
3.2.15. I2C Read... 14
3.2.16. I2C Stop... 14
3.2.17. I2C Send Packet... 14
3.2.18. I2C Get Packet... 15
3.2.19. Set Baud Rate... 15
3.2.20. Get Baud Rate... 16
3.2.21. Send UART... 16 3.2.22. Get UART... 16 3.2.23. Send DAC... 17 3.2.24. Stop Counter... 17 3.2.25. Start Counter... 18 3.2.26. Get Counter... 18 3.2.27. Get Version... 18 4 Prosedur Pengujian... 19 5 Contoh Program... 20 Lampiran A. Skematik PC-LINK USB SMART I/O... 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 lain-lain.
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 rail-to-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 (half-duplex), RS232 (half-(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.
Polaritas DC Jack 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.
J1
Pin Nama Fungsi
1 GND Titik referensi ground untuk catu daya input 2 6,5-12VDC Terhubung ke catu daya input (6,5 – 12 Volt) J12
Pin Nama Fungsi
1 GND Titik referensi ground untuk tegangan output 2 5VDC Tegangan output dari regulator (±5,1 Volt)
SDA SCL
SDA SCL
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)
Pull-up aktif (jumper terpasang)
Penting !
Apabila lebih dari satu modul dihubungkan pada I2C-bus maka jumper SDA-SCL 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 Fungsi
1 GND Titik referensi ground
2 TX Jalur data UART (RS232) keluar dari modul 3 RX Jalur data UART (RS232) masuk ke modul J6 (TTL)
Pin Nama Fungsi
1 GND Titik referensi ground
2 TX Jalur data UART (TTL) keluar dari modul 3 RX Jalur data UART (TTL) masuk ke modul J15
Pin Nama Fungsi
1 GND Titik referensi ground 2 D- Jalur data (inverting –) 3 D+ Jalur data (non-inverting +)
16 14 13 16 14 13 16 14 13 J17 J18 3 2 1 J17 J18 3 2 1 J17 J18 3 2 1 16 14 13
Jumper J17 dan J18 berfungsi untuk menentukan jalur komunikasi UART yang digunakan.
UART RS232 UART RS485 UART TTL
Jumper pada
posisi 1 – 2 Jumper pada posisi 2 – 3 dilepasJumper
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 +/–
Jika modul berada di ujung dan sudah ada bias +/– dalam jaringan
Jika modul tidak berada di ujung dan jaringan belum memiliki bias +/–
Jika modul tidak berada di ujung dan sudah ada bias +/– dalam jaringan
Terminal biru J5 berfungsi sebagai konektor untuk antarmuka I2C, sedangkan terminal biru J11 berfungsi sebagai konektor untuk DAC.
J5
Pin Nama Fungsi
1 GND Titik referensi ground 2 SDA I2C-bus data input/output 3 SCL I2C-bus clock input J11
Pin Nama Fungsi
1 GND Titik referensi ground 2 DAC Tegangan output dari DAC
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.
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. AGND A0 A2 A4 A6 VCC A1 A3 A5 A7 2 1 10 9
ANALOG INPUT (J3) DIGITAL I/O (J4)
PGND DIO0 DIO2 DIO4 DIO6 VCC DIO1 DIO3 DIO5 DIO7 2 1 10 9 PGND GPIO0 GPIO2 GPIO4 SDA VCC GPIO1 GPIO3 SCL 2 1 10 9
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
3.2.3. SET FUNCTION
Berfungsi untuk mengatur fungsi I/O pada modul.
Byte
Count Command Parameter
Perintah
Host 5 0x10 PORT ANALOG DIRECT PULL-UP
Respon
Modul 1
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 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.
Byte Count Command Parameter Perintah
Host 2 0x11 PORT
Respon Modul
4 0x11 ANALOG DIRECT PULL-UP
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 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.
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.
Byte Count Command Parameter
Perintah Host 2 0x12 PORT
Respon Modul 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 Parameter Perintah
Host 4 0x13 PORT BIT BITVALUE
Respon
Modul 1
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 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 PORT BIT
Respon Modul
2 0x14 BITVALUE
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 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 Parameter
Perintah Host 3 0x15 PORT BYTEVALUE
Respon
Modul 1
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.
3.2.9. GET BYTE
Berfungsi untuk memerintahkan modul membaca nilai 1 port tertentu.
Byte Count Command Parameter
Perintah Host 2 0x16 PORT
Respon Modul 2 0x16 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 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 MSB LSB
1 0xEE
-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 Parameter
Perintah Host 3 0x20 BITRATEH BITRATEL
Respon
Modul 1
0xAA
-0xEE
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. 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 BITRATEH BITRATEL
1 0xEE
-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
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. Byte Count Command Parameter
Perintah Host 2 0x24 0x00 (nack)
0x01 (ack)
Respon Modul 2 0x24 1 byte data
1 0xEE
-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 I2C 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
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. Byte Count Command Parameter
Perintah Host 3 0x27 ADDR COUNT
Respon Modul
2 – 33 0x27 1 – 32 byte
1 0xEE
-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 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.
Byte Count Command Parameter
Perintah Host 1 0x31
-Respon Modul 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.
Byte Count Command Parameter
Perintah Host 2 0x33 COUNT
Respon Modul
2 – 33 0xA3 1 – 32 byte
1 0xAA
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
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 MSB LSB
1 0xEE
-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 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 PC-LINK 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.
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
Baud Rate hasil pembacaan / Baud Rate yang akan ditentukan
Send DAC
Nilai yang dikirim ke DAC
Get Version Ping Reset
Hasil pembacaan versi Get Bit Rate Set Bit Rate
Bit Rate hasil pembacaan / Bit Rate yang akan ditentukan
I2C Start Byte yang dikirim I2C Write I2C Read I2C Stop Byte hasil pembacaan Ack/Nack
Get Function Get Port
Analog
Direct
Pull-up
Pilihan Port Set Function
Logika Bit
Pilihan Bit
Set Bit Get Bit
Pilihan Kanal ADC Pilihan Port
Hasil pembacaan nilai ADC
Get ADC
Byte yang dikirim Set Byte
Get Byte Byte hasil pembacaan
Get Counter Pilihan Port
Hasil pembacaan Counter Pilihan Counter
Start Counter Stop Counter
♦ Terima Kasih atas kepercayaan Anda menggunakan produk kami, bila ada kesulitan, pertanyaan, atau saran mengenai produk ini silahkan menghubungi technical support kami :
I2C Send Packet Send UART
Jumlah byte I2C yang akan dibaca
Jumlah byte UART yang akan dibaca
I2C Get Packet Get UART Kolom Data Keluar Kolom Data Masuk
LAMPIRAN A.