Komentator Napisano Czerwiec 26, 2018 Udostępnij Napisano Czerwiec 26, 2018 Wcześniej poznaliśmy dwa interfejsy szeregowe: UART i SPI. Pierwszy wymagał tylko dwóch linii, ale był dość powolny. Drugi pracował znacznie szybciej wykorzystując więcej wyprowadzeń.Teraz zajmiemy się I2C, który kwalifikuje się gdzieś pomiędzy wcześniejszymi interfejsami. UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.Przeczytaj całość »Poniżej znajdują się komentarze powiązane z tym wpisem. Link do komentarza Share on other sites More sharing options...
Kocurrus Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 Witam Wszystkich. Coś nie ograniam. Piszesz "Podczas zapisywania należy odwołać się do adresu 0xA0, a podczas odczytywania z 0xA1.". Tym czasem w kodzie jest HAL_I2C_Mem_Read(&i2c, 0xa0, 0x10, 1, (uint8_t*)&counter, sizeof(counter), HAL_MAX_DELAY); i ponoć działa. O co chodzi z tym 0xA1. Pzr J Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 @Kocurrus, witam na forum 🙂 Na podstawie ostatniego bitu adresu wiadome jest czy chcesz zapisać, czy odczytać informacje z urządzenia. W związku z tym, jeśli wywołujesz funkcję Read to wiadome jest "z automatu", że trzeba odwołać się do adresu z 1 na końcu. Analogicznie, przy wywołaniu funkcji zapisującej dane, na końcu adresu użyte musi zostać zawsze 0. Nie ma większej różnicy, który z adresów podasz w tych konkretnych funkcjach, bo one i tak nie zwracają uwagi na ostatni bit adresu. Cel używania danej funkcji definiuje już domyślnie ostatni bit 😉 To takie ułatwienie zaimplementowane w HALu. Link do komentarza Share on other sites More sharing options...
Pawpob Kwiecień 23, 2020 Udostępnij Kwiecień 23, 2020 Skoro EEPROM ma 128B oraz 128 komórek pamięci to wynika z tego, że jedna komórka ma 1 bajt, jak to możliwe że do komórki można przesłać kilka bajtów albo odczytywać z niej tak duże wartości(większe niż 256)? Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Elvis Kwiecień 24, 2020 Udostępnij Kwiecień 24, 2020 EEPROM jest adresowany bajtowo, czyli można zarówno zapisywać, jak i odczytywać pojedyncze bajty. W jednym bajcie nie można zapisać "dużej" wartości, do tego wykorzystuje się po prostu kilka bajtów. Działa to dokładnie jak w przypadku pamięci RAM - przykładowo zmienna typu uint32_t zajmuje 4 bajty i dzięki temu może przechowywać wartości większe niż 255. Można ją zapisać w pamięci eeprom również wykorzystując 4 bajty, ale w jednym się po prostu nie zmieści. 1 Link do komentarza Share on other sites More sharing options...
Imejl Sierpień 9, 2020 Udostępnij Sierpień 9, 2020 Miałem problem z odczytywaniem z pamięci EEPROM w pierwszej wersji kodu z artykułu. Mianowicie wartość zmiennej "test" nie zdążyła się zapisać do pamięci, a ja już chciałem ją odczytać. Jeśli ktoś również miał taki problem polecam pomiędzy funkcją "HAL_I2C_Mem_Write()", a funkcją "HAL_I2C_Mem_Read()" wstawić fantastyczny, magiczny "HAL_Delay()" na co najmniej 3 ms, bądź sprawdzać status zwracany przez te funkcje 🙂 Link do komentarza Share on other sites More sharing options...
OlekData Grudzień 26, 2020 Udostępnij Grudzień 26, 2020 Czy pamięć EEPROM 24CW16 tak samo się obsługuje? Czy właściwie się różni od 24AA....? Link do komentarza Share on other sites More sharing options...
Gieneq Grudzień 28, 2020 Udostępnij Grudzień 28, 2020 @OlekData witam na forum 🙂 Wygląda na to że tak samo, porównaj najlepiej dokumentacje, ale widzę że różnią się na pewno pinoutem i pojemnością. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »