LAKI PINGVINI
Nuts and Bolts (7): MPC23017
IO na kvadrat
Dejan PETROVIĆ
1. januar 2020.

U situacijama kada nam zatreba više IO portova, bilo analognih ili digitalnih, biramo između drugog mikrokontrolera ili IO proširivača. Kod proširivača o kojima smo do sada pisali na raspolaganju smo imali dodatnih osam IO portova, ali nekada je i to malo. Rešenja naravno postoje, a jedno od njih je Mikročipov MCP23017 proširivač.

MCP23017 je 16-bitni bidirekcioni digitalni input/output extender koji sa mikrokontrolerom komunicira putem I2C interfejsa brzinama od 100 i 400 kiloherca i 1,7 megaherc. Čip se sastoji iz dva 8-bitna porta (PORTA i PORTB) i može se konfigurisati da radi i u 8-bitnom modu. Osim ove I2C verzije čipa, postoji i SPI verzija sa oznakom MCP23S17, koja je dosta brža (maksimalno do deset megaherca) sa sličnim pinoutom. Ukoliko je potrebno više portova, moguće je vezati do osam ovakvih čipova kaskadno. Svaki IO može da se izbori sa strujama do 25 miliampera, bilo u sink bilo u source konfiguraciji. Tu su dva interrupt izvoda, za svaki port po jedan, koji se mogu konfigurisati da se aktiviraju pod dva uslova – ako se ulazno stanje razlikuje od odgovarajućeg ulaznog stanja port registra ili ako se razlikuje od prekonfigurisanih vrednosti registra. Čip ima Power-on-Reset (POR) kola koja ga drže u reset modu sve dok VDD ne dobije dovoljno struje i deaktivira POR. POR postavlja registre u predefinisane vrednosti. PWM je za MCP23017 nepoznanica.

Mi se, kao i do sada, držimo DIP pakovanja čipa zbog lakšeg rada sa prototipskim pločama. Naš primerak je u SPDIP 28 pakovanju, za sada najveći u našoj seriji tekstova. Izvodi A i B portova su postavljeni sa strana i označavaju se sa GPA(B). Izvodi A portova su obrnuto proporcionalni B izvodima, pa tako nasuprot GPB0 stoji GPA7. Prilikom adresiranja izvodima, ID PORTA počinju od 0 do 7 gde se nadovezuju PORTB od 8 do 15. Za napajanje tu su VDD i VSS na koje dovodimo napone između 1,8 i 5,5 volti. Za komunikaciju sa mikrokontrolerom koriste se SCL i SDA izvodi gde I2C adresu biramo preko A0-2 izvoda. Adresu određujemo kao i do sada kada smo pisali o I2C uređajima, dodeljivanjem logičkih stanja ovim izvodima. Na taj način se na jednu I2C magistralu može dodati pomenutih osam proširivača. Pisanje se sastoji iz jednog kontrolnog bajta za kojim ide osam bitova podataka sve dok ne dođe Stop ili Reset uslov. Kod čitanja idu dva kontrolna bajta, a nakon toga idu bitovi sa podacima. Čip preko I2C magistrale dozvoljava i sekvencijalno pisanje/čitanje. Izvodi 11 i 14 su obeleženi sa NC i ne koriste se. Kod SPI varijante, ovde su izvodi SPI interfejsa. RESET na izvodu 18 je eksterni hardware reset. Izvodi INTA i INTB su interrupt izvodi portova koji se mogu postaviti aktivno HIGH ili LOW, ili se mogu ostaviti otvorenim. Kod QFN pakovanja tu je i 29 izvod na dnu koji se može povezati na VDD ili ostaviti nepovezan.

U našem primeru dovodimo pet volti na naponske izvode. Adresne izvode povezujemo na GND, što nam daje 0 x 20 I2C adresu. RESET izvod ide na pet volti preko 10K otpornika. Ideja je da sa dva tastera upravljamo jednom LEDicom. Tastere smo uz dva 10K otpornika u pull-down konfiguraciji povezali na GPA1 i GPA7. Crvenu LED smo preko 330R otpornika povezali na GPB3, što će reći da smo tastere i LEDicu razdvojili na različite portove.

#include <Wire.h>

#include "Adafruit_MCP23017.h"

Adafruit_MCP23017 mcp;

int buttonState = 0;

void setup() {

mcp.begin();

mcp.pinMode(7, INPUT);

mcp.pinMode(1, INPUT);

mcp.pinMode(11, OUTPUT);

}

void loop() {

if(mcp.digitalRead(7) == HIGH){

buttonState = 1;

}

if(mcp.digitalRead(1) == HIGH){

buttonState = 0;

}

mcp.digitalWrite(11, buttonState);

}

Za naš setup smo koristili Adafruit_MCP23017.h biblioteku, koju možete preuzeti sa adrese i. sk. rs/ 357233. Nakon dodavanja biblioteka pravimo objekat mcp. U setup funkciji pokrećemo mcp objekat i dodeljujemo mod pinovima proširivača. Naveli smo da se PORTA adresira redno po samim nazivima portova, dok se PORTB nadovezuje, iz tog razloga se izvod GPB3 adresira sa 11 IO pinom. U loop funkciji menjamo stanje tasterima i istim tim stanjem uključujemo ili isključujemo LEDicu.

Proširivač je odlično rešenje kada je u pitanju projekat sa većim brojem GPIO. MCP23017 ima dobar naponski menadžment i nije komplikovan za integraciju u projekte. Adafruit biblioteka uz ugrađeni pull-up 100K otpornik na čipu omogućava direktno povezivanje sa tasterom, za šta se koristi pullUp() funkcija. Dva interrupt izvoda mogu biti prilično korisni. Na mreži se može naći dosta primera, pa i šildova poznatih proizvođača gde jedan koristi ovaj čip da bi povezao sa dve žice LCD ekran i gomilu tastera sa mikrokontrolerom.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
JUN 2025
Doom: The Dark Ages
Doom iz mračnog doba drugačiji je od svih drugih Doomova, jer je Slayer koncipiran kao tenk sa štitom...
Clair Obscur: Expedition 33
Estetika Belle Époquea, gameplay u skladu sa kanonima JRPG-a, vrhunsko pripovedanje i ljubav prema igrama...
Computex 2025, Tajpej, Tajvan
AI NEXT
Ovaj, nekada ultra-PC-specifični sajam, odavno se proširio na srodne tehnologije, biznis rešenja i digitalne usluge, postavši varijanta azijskog C...
Gigabyte GeForce RTX 5070 Gaming OC 12G
Višak samopouzdanja
Kartica je sa hardverske strane vrlo kvalitetna, ali ništa ne može da nadomesti nedostatak snage „pod haubom”...
Asus ProArt P16 (H7606WP)
Pronalazak neverovatnog
Novi ProArt P16 donosi moderna rešenja, u dobro usaglašenom odnosu gabarita i performansi – alatka koju ćete sa ponosom nosati sa sobom...
Logitech ProX Superlight 2
Sve udvostručeno
Ovaj miš predstavlja jasnu indikaciju da najveći proizvođač ne želi da napusti nijedan segment tržišta...
Winhance 25.05
Popravka Prozora
U pitanju je alatka koja omogućava da se brzo rešite (većine) bloatwarea, ali i da obavite optimizaciju rada Windowsa...
TCL NXTPAPER 11 Plus
Momak za sve
Ovo bi bio najbolji tablet „za te pare” i da košta 100 evra više...
.rs: Beogradski prevoz na Yandexu • Srbija u SEPA • Loši primeri digitalizacije
Unapređeno e Zakazivanje
Beogradski prevoz na Yandexu • Srbija u SEPA • Loši primeri digitalizacije
Google Mariner, Google Astra i AI autonomni agenti
Uspon tihog softvera
Umesto kliktanja stručnog lica, softver će, već ove godine, u tihom, gotovo nečujnom načinu rada - završavati posao...
Fatal Fury: City of the Wolves
Fatal Fury je oduvek bio čudna cvećka u svetu borilačkih igara; takav je i ostao...
Arc Raiders
Novi extraction shooter iz pera autora dobrih delova franšize Battlefield (i potcenjenog The Finals)...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama