KAmod I2C-IOexp16 (PL): Difference between revisions
From Kamamilabs.com - Wiki
Line 37: | Line 37: | ||
===== Sygnały sterujące ===== | ===== Sygnały sterujące ===== | ||
<br> | |||
<center> | |||
{| class="wikitable" style="width: 1000px;" | |||
|- | |||
! style="text-align: center;"|<b>Oznaczenie</b> | |||
! style="text-align: center;"|<b>Funkcja</b> | |||
|- | |||
| style="text-align: left;"|<b>SD (J1)</b> | |||
| style="text-align: left;"| Sygnał SDA (dane) interfejsu I2C | |||
|- | |||
| style="text-align: left;"|<b>SC (J1)</b> | |||
| style="text-align: left;"| Sygnał SCL (zegar) interfejsu I2C | |||
|- | |||
| style="text-align: left;"|<b>RST (J1)</b> | |||
| style="text-align: left;"| Wejście zerujące układ | |||
|- | |||
| style="text-align: left;"|<b>INTA (J1)</b> | |||
| style="text-align: left;"| Wyjście sygnalizujące wystąpienie przerwania na liniach portu A | |||
|- | |||
| style="text-align: left;"|<b>A0, A1 (J1)</b> | |||
| style="text-align: left;"| Wejścia umożliwiające ustawienie adresu interfejsu I2C (bity 1 oraz 0). Domyślnie ustawione na logiczne 0. | |||
|- | |||
| style="text-align: left;"|<b>A2 (zworka)</b> | |||
| style="text-align: left;"| Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie bitu 2 adresu interfejsu I2C. | |||
|} | |||
</center> | |||
Sterowanie modułem KAmod I2C-IOexp16 odbywa się poprzez interfejs I2C, który może być taktowany sygnałem zegarowym o częstotliwości 100 kHz, 400 kHz lub 1 MHz. Funkcje wyprowadzeń na złączu J1 są następujące: | |||
* Sygnały interfejsu sterującego I2C to SD – SDA, oraz SC – SCL. Nie są wyposażone w rezystory podciągające – odpowiednie elementy musi zawierać układ sterujący. | |||
* Wejścia A0, A1 pozwalają ustawić adres (bity nr 1 i 0), jakim będzie dysponował moduł dołączony do interfejsu I2C. Domyślnie wejścia te są połączone do masy poprzez rezystory (pull-down) i przyjmują wartości logiczne 0. Dołączenie dodatniego bieguna zasilania do wejść A0 i A1 ustawia logiczne 1 dla najmłodszych bitów adresu. | |||
* Zworka A2 umieszczona na dolnej stronie płytki modułu (bottom) pozwala na ustawienie bitu nr. 2 określającego adres I2C. Domyślnie sygnał A2 jest połączony do masy poprzez rezystor (pull-down) i przyjmuje wartość logiczną 0. Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie logicznego 1 dla bitu nr 2 adresu interfejsu I2C. | |||
* Wszystkie dostępne adresy interfejsu I2C zawierają się w zakresie 0x20...0x27. | |||
<br><br> | |||
Szczegółowe informacje dotyczące komunikacji i konfiguracji układu MCP23017 są dostępne w dokumentacji technicznej tego układu. | |||
<br><br> | |||
Dodatkowe sygnały to: | |||
* Sygnał zerujący (RST) służy do wyzerowania układu MCP23017 na płytce KAmod I2C-IOexp16, co przywraca wszystkie ustawienia do stanu początkowego. | |||
* Wyjście INTA może sygnalizować odpowiednim stanem wystąpienie przerwania na liniach portu A. | |||
===== Zasilanie ===== | ===== Zasilanie ===== |
Revision as of 12:23, 3 April 2025

Opis
KAmod I2C-IOexp16 - Expander 16 cyfrowych linii I/O z układem MCP23017
Moduł KAmod I2C-IOexp16 zawiera 16 linii cyfrowych, które mogą działać jako wejścia lub wyjścia. Sterowanie odbywa się poprzez magistralę I2C.

Podstawowe cechy i parametry
- 16 linii które mogą działać jako wejścia lub wyjścia, o maksymalnym prądzie 20 mA
- Zawiera expander typu MCP23017
- Sterowanie poprzez interfejs I2C o taktowaniu max 1 MHz
- 3 linie adresowe umożliwiają dołączenie 8 modułów do jednej magistrali I2C
- Wyjście przerwania, które może być przypisane do linii portu A
- Zasilanie 2...5 V
Wyposażenie standardowe
Kod | Opis |
---|---|
KAmod I2C-IOexp16 | Zmontowany i uruchomiony moduł |
Schemat elektryczny

Rozmieszczenie linii I/O
Sygnały sterujące
Oznaczenie | Funkcja |
---|---|
SD (J1) | Sygnał SDA (dane) interfejsu I2C |
SC (J1) | Sygnał SCL (zegar) interfejsu I2C |
RST (J1) | Wejście zerujące układ |
INTA (J1) | Wyjście sygnalizujące wystąpienie przerwania na liniach portu A |
A0, A1 (J1) | Wejścia umożliwiające ustawienie adresu interfejsu I2C (bity 1 oraz 0). Domyślnie ustawione na logiczne 0. |
A2 (zworka) | Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie bitu 2 adresu interfejsu I2C. |
Sterowanie modułem KAmod I2C-IOexp16 odbywa się poprzez interfejs I2C, który może być taktowany sygnałem zegarowym o częstotliwości 100 kHz, 400 kHz lub 1 MHz. Funkcje wyprowadzeń na złączu J1 są następujące:
- Sygnały interfejsu sterującego I2C to SD – SDA, oraz SC – SCL. Nie są wyposażone w rezystory podciągające – odpowiednie elementy musi zawierać układ sterujący.
- Wejścia A0, A1 pozwalają ustawić adres (bity nr 1 i 0), jakim będzie dysponował moduł dołączony do interfejsu I2C. Domyślnie wejścia te są połączone do masy poprzez rezystory (pull-down) i przyjmują wartości logiczne 0. Dołączenie dodatniego bieguna zasilania do wejść A0 i A1 ustawia logiczne 1 dla najmłodszych bitów adresu.
- Zworka A2 umieszczona na dolnej stronie płytki modułu (bottom) pozwala na ustawienie bitu nr. 2 określającego adres I2C. Domyślnie sygnał A2 jest połączony do masy poprzez rezystor (pull-down) i przyjmuje wartość logiczną 0. Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie logicznego 1 dla bitu nr 2 adresu interfejsu I2C.
- Wszystkie dostępne adresy interfejsu I2C zawierają się w zakresie 0x20...0x27.
Szczegółowe informacje dotyczące komunikacji i konfiguracji układu MCP23017 są dostępne w dokumentacji technicznej tego układu.
Dodatkowe sygnały to:
- Sygnał zerujący (RST) służy do wyzerowania układu MCP23017 na płytce KAmod I2C-IOexp16, co przywraca wszystkie ustawienia do stanu początkowego.
- Wyjście INTA może sygnalizować odpowiednim stanem wystąpienie przerwania na liniach portu A.
Zasilanie
Moduł KAmod I2C-IOexp16 może być zasilany napięciem stałym o wartości 2...5 V.

Wymiary
Wymiary płytki KAmod I2C-IOexp16 to 31x18 mm. Na płytce znajdują się 2 otwory montażowe o średnicy 3,2 mm.

Program testowy
Program testowy został napisany w środowisku Arduino dla płytki KAmodESP32 POW RS485. Moduł KAmod I2C-IOexp16 został podłączony poprzez interfejs I2C.
#include <Wire.h>
#include <Adafruit_MCP23X17.h>
//LED
#define LED_PIN 2
#define MY_DELAY 2000
#define TEST_LED_ON 1
#define TEST_LED_OFF 0
//I2C
#define I2C_SDA 33
#define I2C_SCL 32
#define I2C_FREQ 100000
#define MCP23017_ARD 0x20
TwoWire I2Cbus = TwoWire(0);
Adafruit_MCP23X17 MCPIO;
int i;
//-----------------------------------------------------------------
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Hello. KAmod IOexp16 test");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
delay(500);
while(!I2Cbus.begin(I2C_SDA, I2C_SCL, I2C_FREQ)){
Serial.println("I2C init failed...");
delay(500);
}
while (!MCPIO.begin_I2C(MCP23017_ARD, &I2Cbus)) {
Serial.println("MCP init failed...");
delay(500);
}
Serial.println("I2C init OK");
delay(100);
MCPIO.pinMode(TEST_LED, OUTPUT);
}
//-----------------------------------------------------------------
void loop() {
if (i & 1){
digitalWrite(LED_PIN, TEST_LED_ON);
} else {
digitalWrite(LED_PIN, TEST_LED_OFF);
}
MCPIO.pinMode(i, OUTPUT);
MCPIO.digitalWrite(i, TEST_LED_ON);
delay(100);
MCPIO.pinMode(i, OUTPUT);
MCPIO.digitalWrite(i, TEST_LED_OFF);
delay(100);
i++;
if (i >= 16){
i = 0;
}
}