Belajar GPIO bagian 1




Di dunia embbeded developtment dan IoT anda pasti sering menemukan istilah GPIO, terutama ketika sering memprogram Rasberry PI, ARM, ESP, Arduino.

GPIO (General Purpose Input/Output) adalah kaki-kaki pada sebuah cip yang digunakan untuk berinteraksi dengan dunia luar, seperti sensor dan aktuator. Seperti namanya, kaki GPIO dapat diprogram baik sebagai input ataupun output. GPIO juga dapat diaktifkan atau dimatikan.

Berikut ini beberapa contoh diagram GPIO dari beberapa papan pengembangan:


secara standar GPIO hanya memiliki kondisi high dan low. Pada Arduino IDE ini direpresentasikan dengan konstanta HIGH dan LOW atau 1 dan 0. High biasanya jika tingkat voltase yang diberikan ke kaki tersebut diatas 66% dan LOW jika voltase yang diberikan mendekati 0V atau menyambung ke ground. 

Jika Anda hendak menghubungkan perangkat yang memiliki voltas 5V ke perangkat yang memiliki voltase lebih rendah misal 3.3V, maka Anda akan memerlukan logic logic level converter karena GPIO antar kedua perangkat tersebut memiliki kondisi high yang berbeda.

 

Sebagai sebuah standar konvensi penamaan fungsi GPIO, Port A disebut GPIOA, bit 0 dari Port A disebut PA0 sedangkan port B bit 2 disebut PB2. Terkadang anda akan menemui istilah GPIOx, itu bukan berarti Port X namun x dalam GPIOx hanya sekedar akronim dari nama port, mislakna GPIOA untuk Port A, GPIOB untuk B dan seterusnya.

Pembahasan kali ini cukup rumit, sehingga saya sarankan anda membaca reference manual sebagai baha rujukan

1. Clock Distribution 
Dalam dunia embedded processor, konsumsi daya adalah masalah yang sangat penting, sehingga sebagian besar prosesor canggih menyediakan mekanisme untuk mematikan resource apapun yang tidak diperlukan untuk aplikasi tertentu. STM32 memiliki sebuah jaringan distribusi clock yang rumit yang memastikan bahwa hanya peripheral yang diperkana saja yang mendapatkan daya. Sistem ini disebut Reset and Clock Control (RCC) 

2. APB2 peripheral clock enable register
Pada pembahasan GPIO, ketika kita ingin menggunakan Port pada GPIO, maka perlu dilakukan pengaturan pada register RCC_APB2ENR (APB2 peripheral clock enable register) seperti berikut 

watermarked-gpio1

Misalkan, saya ingin menggunakan GPIOC maka kita perlu mengeset bit IOPCEN (pada bit 4) dengan logika 1.

3. Register GPIOx_CRL dan GPIOx_CRH
Berikutnya kita perlu mengatur port GPIOC melalui Register GPIOx_CRL dan GPIOx_CRH yang masing - masing merupakan register 32 bit. GPIOx_CRL untuk pengaturan 8 bit port LSB. Sedangkan GPIOx_CRH untuk pengaturan 8 bit port MSB

GPIOx_CRL
GPIOx_CRL

GPIOx_CRH
GPIOx_CRH
Dimana MODEy[1:0] disebut Port x Mode bits. (y adalah nilai bit port dari 0-15) yang merupakan pengaturan mode di tiap bit, apakah akan digunakan sebagai input berikut mode - mode ya

0 Response to "Belajar GPIO bagian 1"

Post a Comment