Skocz do zawartości

[STM32] ekspander MCP23018 i2c


mike660

Pomocna odpowiedź

Cześć

Właśnie zaczynam przygodę z STM32 i próbuję podłączyć ekspander pod I2C.

Niestety od 2 dni nic mi nie wychodzi.

Chciałbym prosić o pomoc.

Oto mój kod:

int main(void)
{

  HAL_Init();


  SystemClock_Config();

  MX_GPIO_Init();
  MX_I2C1_Init();


  uint8_t data[2];

  data[0] = 0x00;    // Adres rejestru IODIRA

  data[1] = 0x00;    // IODIRA: wszystkie wejścia portu

  HAL_I2C_Master_Transmit(&hi2c1, 0x20, data, 2, 1000);

  HAL_Delay (1500);

  while (1)
  {
	  data[0] = 0x12; 
	  data[1] = 0xff;  

	  HAL_I2C_Master_Transmit(&hi2c1, 0x20, data , 2, 1000);

	  HAL_Delay(1500);

	  data[0] = 0x12;  
	  data[1] = 0x00;   
	  
	  HAL_I2C_Master_Transmit(&hi2c1, 0x20, data , 2, 1000);
	  HAL_Delay(1500);
    
  }

}

Czy ma on w ogóle sens ?

Chciałem na początek ustawić wszystkie piny jako wyjście i zamrugać diodą.

Pin ADDR podłączony do GND gdzieś w sieci znalazłem informację że w takim wypadku adres jest równy 0x20 czy to prawda ?

Edytowano przez mike660
Link do komentarza
Share on other sites

Sukces! Kod okazał się poprawny. Błędem był adres urządzenia.

Z dokumentacji :

0 1 0 0 A2 A1 A0 R/W

Czyli w moim przypadku
0 1 0 0 0 0 0 1 = 0x41

Mam nadzieję że wpis komuś pomoże bo mało jest w sieci działających przykładów pokazanych w prosty sposób

  • Lubię! 1
Link do komentarza
Share on other sites

@mike660 witam na forum 🙂 Cieszę się, że udało się rozwiązać problem i dziękuję za pokazanie rozwiązania - na pewno komuś się jeszcze przyda!

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.