Pytanie:
Dlaczego słowa są przesuwane bitowo dla podrzędnego SPI Atmel SAM4S?
Patrick
2015-07-29 19:56:20 UTC
view on stackexchange narkive permalink

Odkryłem problem podczas używania urządzenia peryferyjnego SPI w trybie slave na Atmel SAM4S. Czasami słowa mogą zostać nieco przesunięte. Mogę wymusić ten stan, włączając w urządzeniu peryferyjnym określoną liczbę zegarów po uaktywnieniu NSS . Robię to, czekając na NSSR, a następnie używając pętli opóźnienia, aby poczekać określony czas, zanim włączę urządzenie peryferyjne. Potwierdziłem w zakresie, że gdy urządzenie peryferyjne jest włączone n zegary po włączeniu NSS , słowa są przesuwane o n bitów.

Gdy urządzenie peryferyjne przejdzie w ten stan, jedynym sposobem przywrócenia jest wykonanie resetowania (tj. ustawienie SWRST w rejestrze sterującym). Wyłączenie i ponowne włączenie nie wystarcza.

Ten problem zaobserwowano również w MPU SAM9G45.

Jeden odpowiedź:
Patrick
2015-07-29 19:56:20 UTC
view on stackexchange narkive permalink

Wynika to z konstrukcji ich urządzeń peryferyjnych SPI. W trybie slave rejestr przesuwny jest przesuwany co SPCK (zakładając, że NSS jest niski i ustawione jest SPIENS ). Istnieje wewnętrzny licznik (nie pokazany na schemacie blokowym) dla rejestru przesuwnego, a gdy osiągnie on rozmiar słowa, zawartość jest przenoszona do SPI_RDR i z SPI_TDR . Tak więc, jeśli masz słowo o rozmiarze 8 i tylko 7 zegarów jest obecnych dla pierwszego NSS , w następnym NSS zawartość rejestru przesuwnego zostanie przesłana dopiero po pierwszy cykl zegara.

Gdy NSS osiąga stan wysoki, ten licznik nie jest resetowany. Podobnie ustawienie SPIDIS nie resetuje licznika. Tylko SWRST resetuje licznik.

Oprócz opisanej metody wymuszającej ten warunek, usterki na SPCK podczas NSS (na przykład z EMI) może również spowodować przesunięcie bitowe.

SAM4S Slave Mode Block Diagram



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...