MODUL KOMUNIKASI DATA PKD-02 Pengenalan Komunikasi Data berbasis PSoC (Programable System on Chip)
MODUL KOMUNIKASI DATA
PKD-02
Pengenalan Komunikasi Data berbasis PSoC (Programable System on Chip)
Tujuan:
1. Mengenal dasar komunikasi data berbasis PsoC
2. Mengenal I2C, SPI, dan UART pada PsoC
Kompetensi dasar:
1. Komunikasi data
2. Pemrograman komputer
3. Rangkaian listrik dan elektronika
Dasar Teori
1. Inter Integrated Circuit (I2C)
Inter Integrated Circuit (I2C) biasanya disebut sebagai I2C, Bus I2C
atau IIC Bus pada awalnya dikembangkan sebagai bus kontrol untuk
menghubungkan mikrokontroler dan peripheral IC [1]. Inter-IntegratedCircuit atau sering disebut sebagai komunikasi I2C adalah komunikasi yang
dikembangkan oleh Philips SemiConductors, yang hanya menggunakan dua
jalur komunikasi (2-wire) yaitu Synchronous data (SDA) yang digunakan
untuk mengirim dan menerima data (bi-directional) dan Synchronous Clock
(SCL) yang digunakan untuk mengirim sinyal sinkronisasi. Protokol I2C
untuk pengiriman satu byte data dapat dilihat pada Gambar 1.
Gambar 1 Protokol Komunikasi I2C[2]
Perangkat I2C menggunkan 2 buah pin open-drain dua arah dengan
memberikan pull-up resistor untuk setiap garis bus sehingga berlaku seperti
AND menggunakan kabel.
Piranti yang dihubungkan dengan sistem I2C Bus dapat
dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai
transfer data pada I2C Bus dengan membentuk sinyal Start, mengakhiri
transfer data dengan membentuk sinyal Stop, dan membangkitkan sinyal
clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah,
didefinisikan sebagai perubahan tegangan SDA dari “1” menjadi “0” pada
saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri semua
perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi
“1” pada saat SCL “1”. Kondisi sinyal Start dan sinyal Stop seperti tampak
pada Gambar 2 [3].
Gambar 2 Kondisi sinyal Start dan sinyal Stop [4]
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge
yang disimbolkan dengan ACK Setelah transfer data oleh master berhasil
diterima slave, slave akan menjawabnya dengan mengirim sinyal
acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock
ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data dari Master.
Kondisi sinyal acknowledge seperti tampak pada Gambar 3 [3]
Gambar 3 Sinyal ACK dan NACK [4]
2. UART (Universal Asynchronous Receiver-Transmitter)
UART
adalah
bagian
perangkat
keras
komputer
yang
menerjemahkan bit-bit paralel data dan bit-bit serial. UART biasanya
berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada
komputer atau port serial perangkat peripheral. Device yang memiliki
interface UART dapat terhubung langsung pada pin modul RF[5]. Dalam
pengiriman data, clock antara pengirim dan penerima harus sama karena
paket data dikirim tiap bit mengandalkan clock tersebut. Inilah salah satu
keuntungan model asynchronous dalam pengiriman data karena dengan
hanya satu kabel transmisi maka data dapat dikirimkan. UART merupakan
antarmuka yang digunakan untuk komunikasi serial, seperti pada RS-232,
RS-422, RS-485 [6].
Komponen UART dapat dikonfigurasikan untuk Full Duplex (Dua
arah bersamaan), Half Duplex (Dua arah bergantian), Simplex (hanya
pengiriman dan penerimaan). Pada PSOC UART dapat dikonfigurasikan
pada baud rate dari 110 sampai dengan 921600 bps dengan penyangga RX
dan TX dari 4 sampai 65535[7].
Kebanyakan mikrokontroller saat ini telah membuat UART yang
bisa digunakan untuk menerima dan mengirim data secara serial, metode
ini biasanya disebut sebagai TTL serial (Transistor-transistor logic).
Komunikasi serial pada TTL selalu menggunakan batasan tegangan 0V dan
Vcc yang biasanya sebesar 5V atau 3,3 V. Logika HIGH (‘1’)
direpresentasikan oleh Vcc, sedangkan logika LOW (‘0’) direpresentasikan
oleh 0V [8].
UART dapat dengan mudah dikonfigurasikan dengan memilih
baudrate, parity, bit data, dan angka pada start bits. Pada konfigurasi RS232
biasanya disebut dengan “8N1” yang merupakan singkatan dari delapan
data bit, tanpa parity, dan memiliki 1 stop bit, hal ini merupakan konfigurasi
default pada komponen UART[7].
Port serial pada komputer mengikuti standar telekomunikasi RS-232
(Recomended Standar 232). Sinyal dari RS-232 sama dengan sinyal serial
mikrokontroller apabila sinyal tersebut ditransmisikan pada satu bit dalam
satu waktu, dengan baud rate tertentu dan dengan atau tanpa parity maupun
stop bits. Pada Standar RS-232 maka logic HIGH (‘1’) di representasikan
oleh tegangan negatif (-3V sampai – 25 V) dan logic LOW
direpresentasikan dengan tegangan positif (3V sampai 25V). Kebanyakan
PCs (Personal communication system) memliki sinyal dari -13 V sampai 13
V [8].
Karena mempunyai rentang tegangan yang lebar maka sinyal RS232 membuat data yang dikirim tahan terhadap noise, gangguan, dan
degradasi, sehingga dapat dikatakan bahwa sinyal RS-232 dapat melakukan
komunikasi pada jarak yang jauh dibanding dengan serial TTL [8].
Gambar 4 This timing diagram shows both a TTL (bottom) and RS-232
signal sending 0b01010101
Komponen UART pada PsoC memiliki berbagai koneksi input dan
ouput, yang dapat dilihat pada gambar 5. Beberapa dari I/O tersebut dapat
tidak dipakai apabila fungsinya tidak diperlukan dalam tuntutan sistem
komunikasi yang akan dipakai.
Gambar 5 Blok UART
Tabel 1 Konfigurasi pin-pin UART
Input/
output
Dapat
Dihilangkan/
Deskripsi
disembunyikan
rx
Ya
clock
Ya
Reset
Tidak
Input rx membawa input data serial oleh
perangkat lain pada bus serial.
Input clock digunakan untuk menetapkan
baud rate (bit rate) pada komunikasi serial
Input reset digunakan untuk me-restart
program UART
Output tx membawa output data serial
Tx
Ya
dari suatu perangkat ke perangkat lain
pada bus serial
Pada output tx_interrupt merupakan
logika OR pada suatu kelompok sumber
Tx_interrupt
Ya
yang mungkin di interupsi, output tx
interrupt ini akan terlihat apabila mode
parameter diatur pada TX only atau FULL
UART (TX + RX)
Pada output rx_interrupt merupakan
logika OR pada suatu kelompok sumber
Rx_interrupt
Ya
yang mungkin di interupsi, output tx
interrupt ini akan terlihat apabila mode
parameter diatur pada RX only, Half
Duplex, atau Full UART (TX + RX)
Pada output tx_en biasanya digunakan
Tx_en
Ya
terutama untuk komunikasi RS-485 untuk
menampilkan bahwa perangkat
melakukan transmit pada bus.
3. SPI
Serial Peripheral Interface (SPI), protokol yang dibuat oleh
Motorola pada tahun 1980-an, utamanya digunakan untuk komunikasi serial
tersinkronisasi (synchronized serial communication) antara prosesor
(master) dan IC yang dituju (slave). Empat buah jalur sinyal digunakan
dalam komunikasi ini : Chip Select (CS), Serial Data Input (SDI), Serial
Data Output (SDO), Serial Clock (SCKL). CS dan SCKL merupakan
keluaran dari piranti master. Piranti slave menerima sinyal clock dan
masukan chip select dari piranti master. Apabila sebuah piranti SPI tidak
dipilih, jalur SDO dari piranti tersebut memiliki status high impedance state.
Jumlah bit yang dikirim ke piranti slave bervariasi antar piranti. Setiap
piranti slave memiliki sebuah internal shift register yang digunakan untuk
pengiriman data.
Ada dua tipe koneksi antar piranti master dan slave. Pada koneksi
tipe pertama, seluruh slave berbagi satu jalur CS. Jalur SDO dari piranti
master dihubungkan ke jalur SDI dari piranti slave pertama. Jalur SDO dari
piranti slave pertama dihubungkan ke jalur SDI piranti slave kedua. Begitu
seterusnya hingga hubungan terakhir ke jalur SDI piranti master. Pada
koneksi tipe kedua, setiap jalur SDI piranti slave terhubung pada jalur SDO
piranti master. Setiap piranti slave memiliki jalur CS masing-masing. Setiap
jalur SDO piranti slave terhubung ke jalur SDI piranti master.
Jenis komunikasi ini juga mendukung mode multiple master. Laju
serial clock mempunyai jangkauan dari 30 kHz hingga 3 MHz, bergantung
pada piranti yang digunakan. Beberapa literature menyebutkan CS sebagai
SS, SDI sebagai MOSI, dan SDO sebagai MISO.
Langkah-langkah percobaan:
A. I2C
a. Source Code
1. Master
#include
#define I2C_SLAVE_ADDRESS
#define WR_BUFFER_SIZE
(8u)
(255)
int main()
{
uint8 temp;
I2CM_Start();
char t[255];
int i;
LCD_Char_Start();
LCD_Char_PrintString("0x");
for (i = 0; i New > Project
3.
Menyusun blok diagram digital pada PSoC project sesuai gambar
6auntuk Master dan gambar 6b untuk Slave
(a)
(b)
Gambar 6 Diagram Blok Digital I2C Master (a), Diagram
Blok Digital I2C Slave(b)
4.
Merangkai pada project board sesuai gambar 7
Gambar 7 Rangkaian I2C
5.
Mengatur konfigurasi pada I2C Master seperti pada gambar 4 dan
pada I2C Slave seperti pada gambar 8
Gambar 8 Konfigurasi pada Blok Master I2C Percobaan 1
6.
Tuliskan kode sumber pada main.c
7.
Clean and Build dan Program project I2C ke PsoC
8.
Variasikan jumlah array pada bagian main.c Master sesuai dengan
tabel pengamatan
9.
Catat hasil yang diperoleh
Percobaan 2:
1.
Buka software PSoC Creator
2.
Klik tab File > New > Project
3.
Susun blok diagram digital pada PSoC project sesuai gambar 9a
untuk Master dan gambar 9b untuk Slave. Atur konfigurasi pada I2C
Master seperti pada gambar 9c dan I2C Slave seperti pada gambar
9d.
(a)
(b)
(c)
(d)
Gambar 9 Diagram Blok Digital I2C Master dengan Clock
Eksternal (a), Diagram Blok Digital I2C Slave dengan Clock
Eksternal (b), Konfigurasi pada Blok Master I2C Percobaan 2 (c),
dan Konfigurasi pada Blok Slaver I2C Percobaan 2 (d)
4.
Rangkai rangkaian pada project board sesuai gambar 7
5.
Clean and Build dan Program project I2C ke PSoC
6.
Variasikan nilai clock sesuai dengan tabel pengamatan dan hitung
delay pengiriman dengan menghitung waktu munculnya jumlah data
pada slave
7.
Mencatat hasil yang diperoleh
c. Tabel Pengamatan
Tabel 2 Percobaan 1 I2C
No
Jumlah Karakter
1
1
Keluaran
2
2
3
4
4
8
5
16
6
32
7
64
8
128
9
256
10
512
11
…
12
…
Tabel 3 Percobaan 2
Frekuensi Clock
(kHz)
No
Delay (s)
Master
Slave
1
1
1
2
5
5
3
10
10
4
20
20
5
30
30
6
40
40
7
50
50
8
100
100
9
400
400
10
1000
1000
11
…
…
12
…
…
B. UART
a. Langkah-langkah percobaan UART-1:
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog. Kemudian atur konfigurasi
UART seperti pada gambar 10
Gambar 10 Konfigurasi UART
3. Memasukkan source code pada main.c seperti pada gambar 11.
Gambar 11 Source Code UART
4. Mem-build dan unduh (program) ke masing-masing modul PsoC
5. Hubungkan P0[0] sebagai keluaran UART ke osiloskop untuk
melihat bentuk data
b. Langkah-langkah percobaan UART-2: Komunikasi menggunakan 2
PSoC( menggunakan 2 PSoC dan 2 laptop)
Untuk PSoC yang pertama
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog seperti gambar 12
Gambar 12 Konfigurasi UART
3. Kemudian susun pada workspace TopDesign.cysch seperti pada
gambar 13
Gambar 13 Komponen Blok UART
4. Mengatur UART dengan klik 2 kali pada komponen, gunakan
pengaturan seperti pada gambar 14. Pemberian nama komponen
akan mempengaruhi nama pada program. Menggunakan mode Full
UART(Tx+Rx) . Bit per second 9600. Data bits 8. Parity Type None.
Stop bits 1
Gambar 14 Konfigurasi UART
5. Klik menu pins pada Workspace Explorer, kemudian lakukan
kongurasi seperti gambar 15.
Gambar 15 Pin UART
6. Memasukkan program code pada main.c Seperti pada gambar 16
Gambar 16 Source Code UART
7. Mem-build dan mengunduh program ke modul PSoC
Untuk PSoC yang kedua:
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog seperti gambar 17
Gambar 17 Komponen UART2
3. Kemudian susun pada workspace TopDesign.cysch seperti pada
gambar 18
Gambar 18 Konfigurasi UART2
4. Mengatur UART dengan klik 2 kali pada komponen, gunakan
pengaturan seperti pada gambar. Pemberian nama komponen akan
memengaruhi nama pada program. Menggunakan mode Full
UART(Tx+Rx) . Bit per second 9600. Data bits 8. Parity Type None.
Stop bits 1 Hal ini juga berlaku untuk kedua komponen UART.
5. Klik menu Pins pada Workspace Explorer, kemudian lakukan
kongurasi seperti gambar 19
Gambar 19 Pin UART
6. Memasukkan source code pada main.c seperti pada gambar 20
Gambar 20 Source Code UART
7. Mem-build dan unduh program ke modul PSoC yang ke 2.
Menyambungkan kedua PSoC
1. Menggunakan kabel jumper hubungkan pin 12.1(PSoC1) dengan
pin 12.0(PSoC2) dan pin 12.0(PSoC1) dengan pin 12.1(PSoC2)
2. Menghubungkan kedua ground dengan menggunakan kabel jumper
3. Menghubungkan masing-masing PSoC pada masing-masing laptop
4. Buka aplikasi Arduino
5. Masuk pada menu bar Tools -> Port -> lalu pilih com yang terdapat
psoc(masing-masing psoc dan laptop berbeda)
Gambar 21 Memilih port arduino
6. Masuk ke menu bar tool kemudian klik Serial Monitor, atau dengan
menekan keyboard Ctrl+Shift+M.
Gambar 22Menuju Serial Monitor Arduino
7. Pada baud rate (bagian kanan bawah serial monitor) pastikan sama
dengan bit per second dari UART
Gambar 23 Tampilan Baud rate arduino
8. Melakukan pengetikan pada melalui serial monitor 1 (yang
terhubung PSoC1) maka akan muncul pada Serial monitor 2 (yang
terhubung PSoC2), begitu juga dengan kebalikannya.
c. Tabel Percobaan Praktikum 1 UART :
1. Tabel 4 Variasi Bits per Second
No Bits per second
1
300
2
1200
3
4800
4
19200
5
38400
6
57600
7
115200
8
230400
Keluaran Osiloskop (Data Biner)
2. Tabel 5 Variasi Data Bits
No Data Bits
1
5
2
6
3
7
4
8
5
9
Keluaran Osiloskop (Data Biner)
3. Tabel 6 Variasi Parity Type
No Parity Type
1
None
2
Even
3
Odd
4
Mark/Space
Keluaran Osiloskop (Data Biner)
4. Tabel 7 Variasi Stop bits
No Stop bits
1
1
2
2
Keluaran Osiloskop (Data Biner)
C. SPI
a. Langkah-langkah Percobaan :
1. Buka PSoC Creator
2. Buat dua project pada PSoC, dengan nama SPIMaster dan
SPISlave.
3. Di dalam Project SPIMaster, pada Workspace TopDesign.cysch
masukkan komponen SPI Master dan Character LCD yang
didapat dari Component Catalog seperti gambar 24.
Gambar 24 Komponen Analog
4. Atur SPI Master dan LCD dengan klik 2 kali pada komponen,
gunakan pengaturan komponen seperti Gambar 25. Pemberian nama
komponen akan mempengaruhi nama pada program.
(a)
(b)
Gambar 25 Konfigurasi SPI Master (a) dan LCD (b)
5. Tambahkan pin Digital Input pada miso, Digital Output pada mosi,
sclk, dan ss, lalu Logic Low pada reset dan Clock sebesar 2 MHz
pada clock. Hingga sesuai dengan gambar 26
Gambar 26 Skema Rangkaian
6. Tambahkan Page dengan klik kanan pada Page 1, lalu klik Add
Schematic Page, sehingga muncul Page 2
Gambar 27 Penambahan Page
7. Pada Page 2, masukkan komponen Current DAC, Analog Mux
Sequencer dan ADC Delsig yang didapat dari Component Catalog
seperti gambar 28.
Gambar 29 Komponen
Gambar 28 Komponen
8. Atur SPI Master dan LCD dengan klik 2 kali pada komponen,
gunakan pengaturan komponen seperti Gambar 30.
(a)
(b)
(c)
Gambar 30 Konfigurasi IDAC (a), Konfigurasi Amux (b),
Konfigurasi ADC (c)
9. Tambahkan pin analog pada keluaran IDAC dan masukan pada
AmuxSeq.
10. Rangkai secara seri 7 resistor 10 kΩ, kemudian hubungkan pin mux
P0[0] hingga P0[7] seperti pada gambar 31.
Gambar 31 Rangkaian Sistem
Gambar 26 Rangkaian Sistem
11. Klik menu Pins pada Workspace Explorer kemudian lakukan
konfigurasi seperti gambar 32.
Gambar 32 Konfigurasi pin yang digunakan pada SPI Master
12. Rangkai pin LCD dengan konfigurasi sesuai gambar 33.
Gambar 33 Rangkaian pin LCD
13. Masukkan program code pada main.c Seperti pada tabel 1
#include
int main()
{
SPIS_Start();
LCD_Char_Start();
LCD_Char_PrintString("0x");
for(;;)
{
if(SPIS_GetRxBufferSize())
{
LCD_Char_Position(0u, 2u);
LCD_Char_PrintInt16(SPIS_ReadRxData());
SPIS_ClearRxBuffer();
}
}
}
14. Di dalam Project SPISlave, pada Workspace TopDesign.cysch
masukkan komponen SPI SLave dan Character LCD yang didapat
dari Component Catalog seperti gambar 34
Gambar 34 Komponen pada Project SPI Slave
15. Atur SPI Slave dan LCD dengan klik 2 kali pada komponen, gunakan
pengaturan komponen seperti Gambar 35 untuk SPI Slave dan gambar
33 untuk LCD . Pemberian nama komponen akan mempengaruhi
nama pada program.
Gambar 35 Konfigurasi SPI Slave
16. Tambahkan pin Digital Input pada mosi, sclk, dan ss, Digital Output
pada miso, lalu Logic Low pada. Hingga sesuai dengan gambar 36
Gambar 36 Pin SPI Slave
17. Klik menu Pins pada Workspace Explorer kemudian lakukan
konfigurasi seperti gambar 37.
Gambar 37 Konfigurasi pin yang digunakan pada SPI Slave
18. Masukkan program code pada main.c
#include
int main()
{
uint16 adcReading;
uint8 temp;
SPIM_Start();
IDAC8_Start();
AMuxSeq_Start();
AMuxSeq_Next();
ADC_DelSig_Start();
LCD_Char_Start();
LCD_Char_PrintString("0x");
for(;;)
{
ADC_DelSig_StartConvert();
ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT);
ADC_DelSig_StopConvert();
adcReading = ADC_DelSig_GetResult16();
AMuxSeq_Next();
LCD_Char_Position(0u, 2u);
LCD_Char_PrintInt16(adcReading);
SPIM_ClearTxBuffer();
temp = SPIM_ReadTxStatus();
if(temp & (SPIM_STS_SPI_DONE | SPIM_STS_SPI_IDLE))
{
SPIM_WriteTxData(adcReading);
}
CyDelay(2000u/*ms*/);
}
}
19. Hubungkan pin-pin SCLK, MOSI, SS, MISO pada SPI Master dan
SPI Slave
20. Hubungkan kedua ground dari SPI Master dan SPI Slave
21. Lakukan build dan unduh (program) pada masing masing PSOC.
b. TABEL PERCOBAAN PRAKTIKUM SPI
1. Variasi Frekuensi pada Clock
Frekuensi
Tampil Master
Tampil Slave
20 Hz
20 kHz
20 MHz
2. Variasi Mode
Master
Slave
Tampil
Tampil
(CPHA/CPOL)
(CPHA/CPOL)
Master
Slave
0/0
0/0
0/1
0/1
1/0
1/0
1/1
1/1
0/0
0/1
1/1
0/1
3. Data Bits (CPHA/CPOL=00)
Master
Slave
3
3
8
8
16
16
...
...
...
...
Tampil
Master
Tampil Slave
4. Shift Directions
Master
Slave
MSB
MSB
LSB
MSB
MSB
LSB
LSB
LSB
Tampil
Master
Tampil Slave
Referensi
[1]
N. A. Pratama dan T. Andrasto, “Komunikasi Pada Robot Swarm Pemadam
Api Menggunakan Protokol ModBus,” hlm. 8, 2015.
[2]
“i2c01.png (Gambar PNG Image, 718 × 286 piksel).” [Daring]. Tersedia
pada:
https://developer.electricimp.com/sites/default/files/attachments/images/i2c/i2c01.
png. [Diakses: 07-Apr-2018].
[3]
R. B. Watan, “I SEAPLIKASNSOR TPA81 SEBAGAI PENGUKUR
SUHU RUANGAN PADA ROBOT BERKAKI PEMADAM API.,” Politeknik
Negeri Sriwijaya, 2014.
[4]
“I2C Bus Specification,” I2C Info – I2C Bus, Interface and Protocol. .
[5]
I. Sayekti, “Bel Pemanggil Perawat Berbasis Wireless Menggunakan
Xbee,” vol. 2, no. 3, hlm. 7, 2013.
[6]
Y. M. Dinata, Arduino Itu Pintar. Elex Media Komputindo, 2016.
[7]
“Psoc Creator Componen Datasheet, Universal Asynchronous Receiver
Transmitter (UART),” Cypress Semiconductor Corporation, no. 001, hlm. 1, 2016.
[8]
“RS-232 vs. TTL Serial Communication - SparkFun Electronics.” [Daring].
Tersedia pada: https://www.sparkfun.com/tutorials/215. [Diakses: 07-Apr-2018].
PKD-02
Pengenalan Komunikasi Data berbasis PSoC (Programable System on Chip)
Tujuan:
1. Mengenal dasar komunikasi data berbasis PsoC
2. Mengenal I2C, SPI, dan UART pada PsoC
Kompetensi dasar:
1. Komunikasi data
2. Pemrograman komputer
3. Rangkaian listrik dan elektronika
Dasar Teori
1. Inter Integrated Circuit (I2C)
Inter Integrated Circuit (I2C) biasanya disebut sebagai I2C, Bus I2C
atau IIC Bus pada awalnya dikembangkan sebagai bus kontrol untuk
menghubungkan mikrokontroler dan peripheral IC [1]. Inter-IntegratedCircuit atau sering disebut sebagai komunikasi I2C adalah komunikasi yang
dikembangkan oleh Philips SemiConductors, yang hanya menggunakan dua
jalur komunikasi (2-wire) yaitu Synchronous data (SDA) yang digunakan
untuk mengirim dan menerima data (bi-directional) dan Synchronous Clock
(SCL) yang digunakan untuk mengirim sinyal sinkronisasi. Protokol I2C
untuk pengiriman satu byte data dapat dilihat pada Gambar 1.
Gambar 1 Protokol Komunikasi I2C[2]
Perangkat I2C menggunkan 2 buah pin open-drain dua arah dengan
memberikan pull-up resistor untuk setiap garis bus sehingga berlaku seperti
AND menggunakan kabel.
Piranti yang dihubungkan dengan sistem I2C Bus dapat
dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai
transfer data pada I2C Bus dengan membentuk sinyal Start, mengakhiri
transfer data dengan membentuk sinyal Stop, dan membangkitkan sinyal
clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah,
didefinisikan sebagai perubahan tegangan SDA dari “1” menjadi “0” pada
saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri semua
perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi
“1” pada saat SCL “1”. Kondisi sinyal Start dan sinyal Stop seperti tampak
pada Gambar 2 [3].
Gambar 2 Kondisi sinyal Start dan sinyal Stop [4]
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge
yang disimbolkan dengan ACK Setelah transfer data oleh master berhasil
diterima slave, slave akan menjawabnya dengan mengirim sinyal
acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock
ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data dari Master.
Kondisi sinyal acknowledge seperti tampak pada Gambar 3 [3]
Gambar 3 Sinyal ACK dan NACK [4]
2. UART (Universal Asynchronous Receiver-Transmitter)
UART
adalah
bagian
perangkat
keras
komputer
yang
menerjemahkan bit-bit paralel data dan bit-bit serial. UART biasanya
berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada
komputer atau port serial perangkat peripheral. Device yang memiliki
interface UART dapat terhubung langsung pada pin modul RF[5]. Dalam
pengiriman data, clock antara pengirim dan penerima harus sama karena
paket data dikirim tiap bit mengandalkan clock tersebut. Inilah salah satu
keuntungan model asynchronous dalam pengiriman data karena dengan
hanya satu kabel transmisi maka data dapat dikirimkan. UART merupakan
antarmuka yang digunakan untuk komunikasi serial, seperti pada RS-232,
RS-422, RS-485 [6].
Komponen UART dapat dikonfigurasikan untuk Full Duplex (Dua
arah bersamaan), Half Duplex (Dua arah bergantian), Simplex (hanya
pengiriman dan penerimaan). Pada PSOC UART dapat dikonfigurasikan
pada baud rate dari 110 sampai dengan 921600 bps dengan penyangga RX
dan TX dari 4 sampai 65535[7].
Kebanyakan mikrokontroller saat ini telah membuat UART yang
bisa digunakan untuk menerima dan mengirim data secara serial, metode
ini biasanya disebut sebagai TTL serial (Transistor-transistor logic).
Komunikasi serial pada TTL selalu menggunakan batasan tegangan 0V dan
Vcc yang biasanya sebesar 5V atau 3,3 V. Logika HIGH (‘1’)
direpresentasikan oleh Vcc, sedangkan logika LOW (‘0’) direpresentasikan
oleh 0V [8].
UART dapat dengan mudah dikonfigurasikan dengan memilih
baudrate, parity, bit data, dan angka pada start bits. Pada konfigurasi RS232
biasanya disebut dengan “8N1” yang merupakan singkatan dari delapan
data bit, tanpa parity, dan memiliki 1 stop bit, hal ini merupakan konfigurasi
default pada komponen UART[7].
Port serial pada komputer mengikuti standar telekomunikasi RS-232
(Recomended Standar 232). Sinyal dari RS-232 sama dengan sinyal serial
mikrokontroller apabila sinyal tersebut ditransmisikan pada satu bit dalam
satu waktu, dengan baud rate tertentu dan dengan atau tanpa parity maupun
stop bits. Pada Standar RS-232 maka logic HIGH (‘1’) di representasikan
oleh tegangan negatif (-3V sampai – 25 V) dan logic LOW
direpresentasikan dengan tegangan positif (3V sampai 25V). Kebanyakan
PCs (Personal communication system) memliki sinyal dari -13 V sampai 13
V [8].
Karena mempunyai rentang tegangan yang lebar maka sinyal RS232 membuat data yang dikirim tahan terhadap noise, gangguan, dan
degradasi, sehingga dapat dikatakan bahwa sinyal RS-232 dapat melakukan
komunikasi pada jarak yang jauh dibanding dengan serial TTL [8].
Gambar 4 This timing diagram shows both a TTL (bottom) and RS-232
signal sending 0b01010101
Komponen UART pada PsoC memiliki berbagai koneksi input dan
ouput, yang dapat dilihat pada gambar 5. Beberapa dari I/O tersebut dapat
tidak dipakai apabila fungsinya tidak diperlukan dalam tuntutan sistem
komunikasi yang akan dipakai.
Gambar 5 Blok UART
Tabel 1 Konfigurasi pin-pin UART
Input/
output
Dapat
Dihilangkan/
Deskripsi
disembunyikan
rx
Ya
clock
Ya
Reset
Tidak
Input rx membawa input data serial oleh
perangkat lain pada bus serial.
Input clock digunakan untuk menetapkan
baud rate (bit rate) pada komunikasi serial
Input reset digunakan untuk me-restart
program UART
Output tx membawa output data serial
Tx
Ya
dari suatu perangkat ke perangkat lain
pada bus serial
Pada output tx_interrupt merupakan
logika OR pada suatu kelompok sumber
Tx_interrupt
Ya
yang mungkin di interupsi, output tx
interrupt ini akan terlihat apabila mode
parameter diatur pada TX only atau FULL
UART (TX + RX)
Pada output rx_interrupt merupakan
logika OR pada suatu kelompok sumber
Rx_interrupt
Ya
yang mungkin di interupsi, output tx
interrupt ini akan terlihat apabila mode
parameter diatur pada RX only, Half
Duplex, atau Full UART (TX + RX)
Pada output tx_en biasanya digunakan
Tx_en
Ya
terutama untuk komunikasi RS-485 untuk
menampilkan bahwa perangkat
melakukan transmit pada bus.
3. SPI
Serial Peripheral Interface (SPI), protokol yang dibuat oleh
Motorola pada tahun 1980-an, utamanya digunakan untuk komunikasi serial
tersinkronisasi (synchronized serial communication) antara prosesor
(master) dan IC yang dituju (slave). Empat buah jalur sinyal digunakan
dalam komunikasi ini : Chip Select (CS), Serial Data Input (SDI), Serial
Data Output (SDO), Serial Clock (SCKL). CS dan SCKL merupakan
keluaran dari piranti master. Piranti slave menerima sinyal clock dan
masukan chip select dari piranti master. Apabila sebuah piranti SPI tidak
dipilih, jalur SDO dari piranti tersebut memiliki status high impedance state.
Jumlah bit yang dikirim ke piranti slave bervariasi antar piranti. Setiap
piranti slave memiliki sebuah internal shift register yang digunakan untuk
pengiriman data.
Ada dua tipe koneksi antar piranti master dan slave. Pada koneksi
tipe pertama, seluruh slave berbagi satu jalur CS. Jalur SDO dari piranti
master dihubungkan ke jalur SDI dari piranti slave pertama. Jalur SDO dari
piranti slave pertama dihubungkan ke jalur SDI piranti slave kedua. Begitu
seterusnya hingga hubungan terakhir ke jalur SDI piranti master. Pada
koneksi tipe kedua, setiap jalur SDI piranti slave terhubung pada jalur SDO
piranti master. Setiap piranti slave memiliki jalur CS masing-masing. Setiap
jalur SDO piranti slave terhubung ke jalur SDI piranti master.
Jenis komunikasi ini juga mendukung mode multiple master. Laju
serial clock mempunyai jangkauan dari 30 kHz hingga 3 MHz, bergantung
pada piranti yang digunakan. Beberapa literature menyebutkan CS sebagai
SS, SDI sebagai MOSI, dan SDO sebagai MISO.
Langkah-langkah percobaan:
A. I2C
a. Source Code
1. Master
#include
#define I2C_SLAVE_ADDRESS
#define WR_BUFFER_SIZE
(8u)
(255)
int main()
{
uint8 temp;
I2CM_Start();
char t[255];
int i;
LCD_Char_Start();
LCD_Char_PrintString("0x");
for (i = 0; i New > Project
3.
Menyusun blok diagram digital pada PSoC project sesuai gambar
6auntuk Master dan gambar 6b untuk Slave
(a)
(b)
Gambar 6 Diagram Blok Digital I2C Master (a), Diagram
Blok Digital I2C Slave(b)
4.
Merangkai pada project board sesuai gambar 7
Gambar 7 Rangkaian I2C
5.
Mengatur konfigurasi pada I2C Master seperti pada gambar 4 dan
pada I2C Slave seperti pada gambar 8
Gambar 8 Konfigurasi pada Blok Master I2C Percobaan 1
6.
Tuliskan kode sumber pada main.c
7.
Clean and Build dan Program project I2C ke PsoC
8.
Variasikan jumlah array pada bagian main.c Master sesuai dengan
tabel pengamatan
9.
Catat hasil yang diperoleh
Percobaan 2:
1.
Buka software PSoC Creator
2.
Klik tab File > New > Project
3.
Susun blok diagram digital pada PSoC project sesuai gambar 9a
untuk Master dan gambar 9b untuk Slave. Atur konfigurasi pada I2C
Master seperti pada gambar 9c dan I2C Slave seperti pada gambar
9d.
(a)
(b)
(c)
(d)
Gambar 9 Diagram Blok Digital I2C Master dengan Clock
Eksternal (a), Diagram Blok Digital I2C Slave dengan Clock
Eksternal (b), Konfigurasi pada Blok Master I2C Percobaan 2 (c),
dan Konfigurasi pada Blok Slaver I2C Percobaan 2 (d)
4.
Rangkai rangkaian pada project board sesuai gambar 7
5.
Clean and Build dan Program project I2C ke PSoC
6.
Variasikan nilai clock sesuai dengan tabel pengamatan dan hitung
delay pengiriman dengan menghitung waktu munculnya jumlah data
pada slave
7.
Mencatat hasil yang diperoleh
c. Tabel Pengamatan
Tabel 2 Percobaan 1 I2C
No
Jumlah Karakter
1
1
Keluaran
2
2
3
4
4
8
5
16
6
32
7
64
8
128
9
256
10
512
11
…
12
…
Tabel 3 Percobaan 2
Frekuensi Clock
(kHz)
No
Delay (s)
Master
Slave
1
1
1
2
5
5
3
10
10
4
20
20
5
30
30
6
40
40
7
50
50
8
100
100
9
400
400
10
1000
1000
11
…
…
12
…
…
B. UART
a. Langkah-langkah percobaan UART-1:
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog. Kemudian atur konfigurasi
UART seperti pada gambar 10
Gambar 10 Konfigurasi UART
3. Memasukkan source code pada main.c seperti pada gambar 11.
Gambar 11 Source Code UART
4. Mem-build dan unduh (program) ke masing-masing modul PsoC
5. Hubungkan P0[0] sebagai keluaran UART ke osiloskop untuk
melihat bentuk data
b. Langkah-langkah percobaan UART-2: Komunikasi menggunakan 2
PSoC( menggunakan 2 PSoC dan 2 laptop)
Untuk PSoC yang pertama
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog seperti gambar 12
Gambar 12 Konfigurasi UART
3. Kemudian susun pada workspace TopDesign.cysch seperti pada
gambar 13
Gambar 13 Komponen Blok UART
4. Mengatur UART dengan klik 2 kali pada komponen, gunakan
pengaturan seperti pada gambar 14. Pemberian nama komponen
akan mempengaruhi nama pada program. Menggunakan mode Full
UART(Tx+Rx) . Bit per second 9600. Data bits 8. Parity Type None.
Stop bits 1
Gambar 14 Konfigurasi UART
5. Klik menu pins pada Workspace Explorer, kemudian lakukan
kongurasi seperti gambar 15.
Gambar 15 Pin UART
6. Memasukkan program code pada main.c Seperti pada gambar 16
Gambar 16 Source Code UART
7. Mem-build dan mengunduh program ke modul PSoC
Untuk PSoC yang kedua:
1. Membuka PSoC Creator
2. Pada Workspace TopDesign.cysch, masukkan komponen UART
yang didapat dari Component Catalog seperti gambar 17
Gambar 17 Komponen UART2
3. Kemudian susun pada workspace TopDesign.cysch seperti pada
gambar 18
Gambar 18 Konfigurasi UART2
4. Mengatur UART dengan klik 2 kali pada komponen, gunakan
pengaturan seperti pada gambar. Pemberian nama komponen akan
memengaruhi nama pada program. Menggunakan mode Full
UART(Tx+Rx) . Bit per second 9600. Data bits 8. Parity Type None.
Stop bits 1 Hal ini juga berlaku untuk kedua komponen UART.
5. Klik menu Pins pada Workspace Explorer, kemudian lakukan
kongurasi seperti gambar 19
Gambar 19 Pin UART
6. Memasukkan source code pada main.c seperti pada gambar 20
Gambar 20 Source Code UART
7. Mem-build dan unduh program ke modul PSoC yang ke 2.
Menyambungkan kedua PSoC
1. Menggunakan kabel jumper hubungkan pin 12.1(PSoC1) dengan
pin 12.0(PSoC2) dan pin 12.0(PSoC1) dengan pin 12.1(PSoC2)
2. Menghubungkan kedua ground dengan menggunakan kabel jumper
3. Menghubungkan masing-masing PSoC pada masing-masing laptop
4. Buka aplikasi Arduino
5. Masuk pada menu bar Tools -> Port -> lalu pilih com yang terdapat
psoc(masing-masing psoc dan laptop berbeda)
Gambar 21 Memilih port arduino
6. Masuk ke menu bar tool kemudian klik Serial Monitor, atau dengan
menekan keyboard Ctrl+Shift+M.
Gambar 22Menuju Serial Monitor Arduino
7. Pada baud rate (bagian kanan bawah serial monitor) pastikan sama
dengan bit per second dari UART
Gambar 23 Tampilan Baud rate arduino
8. Melakukan pengetikan pada melalui serial monitor 1 (yang
terhubung PSoC1) maka akan muncul pada Serial monitor 2 (yang
terhubung PSoC2), begitu juga dengan kebalikannya.
c. Tabel Percobaan Praktikum 1 UART :
1. Tabel 4 Variasi Bits per Second
No Bits per second
1
300
2
1200
3
4800
4
19200
5
38400
6
57600
7
115200
8
230400
Keluaran Osiloskop (Data Biner)
2. Tabel 5 Variasi Data Bits
No Data Bits
1
5
2
6
3
7
4
8
5
9
Keluaran Osiloskop (Data Biner)
3. Tabel 6 Variasi Parity Type
No Parity Type
1
None
2
Even
3
Odd
4
Mark/Space
Keluaran Osiloskop (Data Biner)
4. Tabel 7 Variasi Stop bits
No Stop bits
1
1
2
2
Keluaran Osiloskop (Data Biner)
C. SPI
a. Langkah-langkah Percobaan :
1. Buka PSoC Creator
2. Buat dua project pada PSoC, dengan nama SPIMaster dan
SPISlave.
3. Di dalam Project SPIMaster, pada Workspace TopDesign.cysch
masukkan komponen SPI Master dan Character LCD yang
didapat dari Component Catalog seperti gambar 24.
Gambar 24 Komponen Analog
4. Atur SPI Master dan LCD dengan klik 2 kali pada komponen,
gunakan pengaturan komponen seperti Gambar 25. Pemberian nama
komponen akan mempengaruhi nama pada program.
(a)
(b)
Gambar 25 Konfigurasi SPI Master (a) dan LCD (b)
5. Tambahkan pin Digital Input pada miso, Digital Output pada mosi,
sclk, dan ss, lalu Logic Low pada reset dan Clock sebesar 2 MHz
pada clock. Hingga sesuai dengan gambar 26
Gambar 26 Skema Rangkaian
6. Tambahkan Page dengan klik kanan pada Page 1, lalu klik Add
Schematic Page, sehingga muncul Page 2
Gambar 27 Penambahan Page
7. Pada Page 2, masukkan komponen Current DAC, Analog Mux
Sequencer dan ADC Delsig yang didapat dari Component Catalog
seperti gambar 28.
Gambar 29 Komponen
Gambar 28 Komponen
8. Atur SPI Master dan LCD dengan klik 2 kali pada komponen,
gunakan pengaturan komponen seperti Gambar 30.
(a)
(b)
(c)
Gambar 30 Konfigurasi IDAC (a), Konfigurasi Amux (b),
Konfigurasi ADC (c)
9. Tambahkan pin analog pada keluaran IDAC dan masukan pada
AmuxSeq.
10. Rangkai secara seri 7 resistor 10 kΩ, kemudian hubungkan pin mux
P0[0] hingga P0[7] seperti pada gambar 31.
Gambar 31 Rangkaian Sistem
Gambar 26 Rangkaian Sistem
11. Klik menu Pins pada Workspace Explorer kemudian lakukan
konfigurasi seperti gambar 32.
Gambar 32 Konfigurasi pin yang digunakan pada SPI Master
12. Rangkai pin LCD dengan konfigurasi sesuai gambar 33.
Gambar 33 Rangkaian pin LCD
13. Masukkan program code pada main.c Seperti pada tabel 1
#include
int main()
{
SPIS_Start();
LCD_Char_Start();
LCD_Char_PrintString("0x");
for(;;)
{
if(SPIS_GetRxBufferSize())
{
LCD_Char_Position(0u, 2u);
LCD_Char_PrintInt16(SPIS_ReadRxData());
SPIS_ClearRxBuffer();
}
}
}
14. Di dalam Project SPISlave, pada Workspace TopDesign.cysch
masukkan komponen SPI SLave dan Character LCD yang didapat
dari Component Catalog seperti gambar 34
Gambar 34 Komponen pada Project SPI Slave
15. Atur SPI Slave dan LCD dengan klik 2 kali pada komponen, gunakan
pengaturan komponen seperti Gambar 35 untuk SPI Slave dan gambar
33 untuk LCD . Pemberian nama komponen akan mempengaruhi
nama pada program.
Gambar 35 Konfigurasi SPI Slave
16. Tambahkan pin Digital Input pada mosi, sclk, dan ss, Digital Output
pada miso, lalu Logic Low pada. Hingga sesuai dengan gambar 36
Gambar 36 Pin SPI Slave
17. Klik menu Pins pada Workspace Explorer kemudian lakukan
konfigurasi seperti gambar 37.
Gambar 37 Konfigurasi pin yang digunakan pada SPI Slave
18. Masukkan program code pada main.c
#include
int main()
{
uint16 adcReading;
uint8 temp;
SPIM_Start();
IDAC8_Start();
AMuxSeq_Start();
AMuxSeq_Next();
ADC_DelSig_Start();
LCD_Char_Start();
LCD_Char_PrintString("0x");
for(;;)
{
ADC_DelSig_StartConvert();
ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT);
ADC_DelSig_StopConvert();
adcReading = ADC_DelSig_GetResult16();
AMuxSeq_Next();
LCD_Char_Position(0u, 2u);
LCD_Char_PrintInt16(adcReading);
SPIM_ClearTxBuffer();
temp = SPIM_ReadTxStatus();
if(temp & (SPIM_STS_SPI_DONE | SPIM_STS_SPI_IDLE))
{
SPIM_WriteTxData(adcReading);
}
CyDelay(2000u/*ms*/);
}
}
19. Hubungkan pin-pin SCLK, MOSI, SS, MISO pada SPI Master dan
SPI Slave
20. Hubungkan kedua ground dari SPI Master dan SPI Slave
21. Lakukan build dan unduh (program) pada masing masing PSOC.
b. TABEL PERCOBAAN PRAKTIKUM SPI
1. Variasi Frekuensi pada Clock
Frekuensi
Tampil Master
Tampil Slave
20 Hz
20 kHz
20 MHz
2. Variasi Mode
Master
Slave
Tampil
Tampil
(CPHA/CPOL)
(CPHA/CPOL)
Master
Slave
0/0
0/0
0/1
0/1
1/0
1/0
1/1
1/1
0/0
0/1
1/1
0/1
3. Data Bits (CPHA/CPOL=00)
Master
Slave
3
3
8
8
16
16
...
...
...
...
Tampil
Master
Tampil Slave
4. Shift Directions
Master
Slave
MSB
MSB
LSB
MSB
MSB
LSB
LSB
LSB
Tampil
Master
Tampil Slave
Referensi
[1]
N. A. Pratama dan T. Andrasto, “Komunikasi Pada Robot Swarm Pemadam
Api Menggunakan Protokol ModBus,” hlm. 8, 2015.
[2]
“i2c01.png (Gambar PNG Image, 718 × 286 piksel).” [Daring]. Tersedia
pada:
https://developer.electricimp.com/sites/default/files/attachments/images/i2c/i2c01.
png. [Diakses: 07-Apr-2018].
[3]
R. B. Watan, “I SEAPLIKASNSOR TPA81 SEBAGAI PENGUKUR
SUHU RUANGAN PADA ROBOT BERKAKI PEMADAM API.,” Politeknik
Negeri Sriwijaya, 2014.
[4]
“I2C Bus Specification,” I2C Info – I2C Bus, Interface and Protocol. .
[5]
I. Sayekti, “Bel Pemanggil Perawat Berbasis Wireless Menggunakan
Xbee,” vol. 2, no. 3, hlm. 7, 2013.
[6]
Y. M. Dinata, Arduino Itu Pintar. Elex Media Komputindo, 2016.
[7]
“Psoc Creator Componen Datasheet, Universal Asynchronous Receiver
Transmitter (UART),” Cypress Semiconductor Corporation, no. 001, hlm. 1, 2016.
[8]
“RS-232 vs. TTL Serial Communication - SparkFun Electronics.” [Daring].
Tersedia pada: https://www.sparkfun.com/tutorials/215. [Diakses: 07-Apr-2018].