32.7.4 SPI - rejestr transmisji danych
Nazwa: SPI_TDR
Adres: 0x4000800C
Dostęp: tylko do zapisu
TD: Przesyłane dane
Dane przesyłane przez interfejs SPI są przechowywane w tym rejestrze. Informacje do przesłania muszą być zapisane w rejestrze kolejno od prawej strony.
PCS: Wybór peryferyjnego układu
To pole jest używane tylko wtedy gdy zmienna peryferyjnego wyboru jest aktywna (PS = 1).
Jeśli PCSDEC = 0:
PCS = xxx0 NPCS[3:0] = 1110
PCS = xx01 NPCS[3:0] = 1101
PCS = x011 NPCS[3:0] = 1011
PCS = 0111 NPCS[3:0] = 0111
PCS = 1111 zakazane (żaden peryferyjny nie jest wybrany)
(x = dowolny, nie ma znaczenia)
Jeśli PCSDEC = 1:
NPCS[3:0] sygnał wyjściowy = PCS
• LASTXFER: Ostatni transfer
0 = brak efektu.
1 = bieżący NPCS będzie odznaczony po tym jak dane zapisane w TD zostaną przesłane. Kiedy CSAAT jest ustawione, pozwala na zamknięcie połączenia z bieżącym peryferiom przez podniesienie odpowiedniej linii NPCS jak tylko transmisja danych TD zostanie ukończona.
To pole jest używane tylko jeśli zmienna peryferyjnego wyboru jest aktywna (PS = 1).
32.7.5 SPI – rejestr statusu
Nazwa: SPI_SR
Adres: 0x40008010
Dostęp: Tylko do odczytu
RDRF: Rejestr odebranych danych jest pełny
0 = nie odebrano żadnych danych od czasu ostatniego odczytu SPI_RDR
1 = Dane zostały odebrane I przesłane z serializera do SPI_RDR od ostatniego odczytu SPI_RDR.
TDRE: Rejestr przesyłanych danych jest pusty
0 = Dane zostały zapisane w SPI_TDR I jeszcze nie przesłane do serializacji.
1 = Ostatnie dane zapisane w zostały przesłane do serializacji.
TDRE jest równe zero, gdy SPI jest wyłączone lub resetowane. Komenda SPI enable ustawia ten bit na jedynkę.
MODF: Tryb błedu zakłócenia
0 = nie wykryto modf od czasu ostatniego odczytu SPI_SR.
1 = modf wystąpił od czasu ostatniego odczytu SPI_SR.
OVRES: status błedu przekroczenia
0 = nie wykryto przekroczenie od ostatniego odczytu SPI_SR.
1 = wystąpiło przekroczenie od ostatniego odczytu SPI_SR.
Przekroczenie występuje gdy SPI_RDR jest wczytywana co najmniej dwukrotnie z serializera od czasu jej ostatniego odczytu
NSSR: NSS wzrosło
0 = nie wykryto wzrostu na pinie NSS od ostatniego odczytu.
1 = nastąpił wzrost na pinie NSS od ostatniego odczytu.
TXEMPTY: Rejestr transmisji jest pusty
0 = jak tylko dane zostały zapisany w SPI_TDR.
1 = SPI_TDR wewnętrzny shifter są puste. Jeśli opóźnienie transferu zostało zdefiniowane, TXEMPTY jest ustawione po tym opóźnieniu
UNDES: status błędu wyczerpania (tylko tryb Slave)
0 = nie został wykryty od ostatniego odczytu SPI_SR.
1 = transfer został rozpoczęty podczas gdy dane nie zostały załadowane do rejestru transmisji danych.
SPIENS: SPI – status aktywności
0 = SPI jest nieaktywne.
1 = SPI jest aktywne.
32.7.6 SPI rejestr aktywacji przerwań
Nazwa: SPI_IER
Adres: 0x40008014
Dostęp: Tylko do zapisu
0 = brak efektu.
1 = aktywuje odpowiednie przerwanie.
• RDRF: rejestr odebranych danych jest pełny
• TDRE: SPI rejestr transmisji danych jest pusty
• MODF: przerwanie błędu zakłócenia
• OVRES: przerwanie błędu przesunięcia
• NSSR: przerwanie wzrostu NSS
• TXEMPTY: rejestr transmisji jest pusty
• UNDES: przerwanie błędu wyczerpania
32.7.7 SPI rejestr dezaktywacji przerwań
Nazwa: SPI_IDR
Adres: 0x40008018
Dostęp: tylko do zapisu
0 = brak efektu.
1 = dezaktywuje odpowiednie przerwanie.
• RDRF: rejestr odebranych danych jest pełny
• TDRE: SPI rejestr transmisji danych jest pusty
• MODF: przerwanie błędu zakłócenia
• OVRES: przerwanie błędu przesunięcia
• NSSR: przerwanie wzrostu NSS
• TXEMPTY: rejestr transmisji jest pusty
• UNDES: przerwanie błędu wyczerpania
32.7.9 SPI Rejestr wyboru układu
Nazwa: SPI_CSR0... SPI_CSR3
Adres: 0x40008030
Dostęp: Odczyt/Zapis
Rejestry SPI_CSRx muszą zostać zapisane nawet jeśli użytkownik chce użyć domyślnych wartości. Pole BITS nie zostanie uaktualnione dopóki rejestr nie zostanie zapisany.
• CPOL: Polaryzacja zegara
0 = nieaktywny stan wartości SPCK jest logicznym zerem.
1 = nieaktywny stan wartości SPCK jest logiczną jedynką.
CPOL jest używany do determinowania nieaktywnego stanu zegara szeregowego (SPCK). Jest używany z NCPHA do produkcji wymaganego zegara/relacji danych pomiędzy urządzeniem master i slave.
• NCPHA: faza zegara
0 = dane uległy zmianie na prowadzącej krawędzi SPCK i zostały przechwycone na następującej krawędzi SPCK.
1 = dane uległy zmianie na prowadzącej krawędzi SPCK i zostały zmienione na następującej krawędzi SPCK.
NCPHA determinuje która krawędź SPCK powoduje zmianę danuych I która krawędź powoduje przechwycenia danych. NCPHA jest używana z CPOL do produkcji wymaganej relacji zegara/daty pomiędzy urządzeniami master i slave.
• CSNAAT: wybrany układ nie aktywny po transferze (ignorowany jeśli CSAAT = 1)
0 = wybrany układ peryferyjny nie rośnie pomiędzy dwoma transferami, jeśli SPI_TDR jest przeładowany przed pierwszym transferem I jeśli dwa transfery nastąpiły na tym samym układzie.
1 = wybrany układ peryferyjny rośnie systematycznie pomiędzy każdym transferem wykonanym na tym samym slave’ie dla minimalnego czasu trwania:
- DLYBCS / MCK (jeśli pole DLYBCT jest różne od 0)
- ( DLYBCS + 1 )/ MCK (jeśli pole DLYBCT jest równe 0)
CSAAT: wybrany układ aktywny po transferze
0 = wybrany układ peryferyjny rośnie po tym gdy ostatni transfer zostanie ukończony.
1 = wybrany układ peryferyjny nie rośnie po tym gdy ostatni transfer zostanie ukończony. Pozostaje aktywny dopóki nie pojawi się nowe żądanie transferu na innym układzie.
BITS: Bity na transfer
Pole BITS determinuje ilość przesyłanych danych. Zarezerwowane wartości nie powinny być używane.
SCBR: Szeregowy zegar szybkości transmisji
W trybie Master, interfejs SPI używa licznika modułu do czerpania szybkości transmisji SPCK z zegara Master. Szybkość transmisji jest wybierana przez zapisanie wartości od 1 do 255 w polu SCBR. Następujące równania determinują prędkość transmisji SPCK:
Szybkość transmisji SPCK = MCK / SCBR
Programowanie pola SCBR 0 jest zabronione. Wyzwolenie transferu, gdy SCBR jest równe 0 może prowadzić do nieprzewidywalnych rezultatów. Podczas resetu, SCBR równe jest 0 i użytkownik musi zaprogramować je prawidłową wartością zanim rozpocznie pierwszy transfer.
32.7.10 SPI rejestr kontroli ochrony zapisu
Nazwa: SPI_WPCR
Dostęp: odczyt – zapis
SPIWPEN: SPI ochrona odczytu aktywna
0: ochrona zapisu nieaktywna
1: ochrona zapisu aktywna
SPIWPKEY: SPI odczyt zabezpieczony hasłem
Jeśli wartośc jest zapisana w SPIWPEN, wartość jest pobierana tylko jeśli SPIWPKEY jest zapisana z “SPI” (SPI zapisana w kodzie ASCII, ie 0x535049 in heksadecymalnie).
32.7.11 SPI Rejestr statusu chronionego zapisu
Nazwa: SPI_WPSR
Dostęp: Tylko do zapisu
SPIWPVS: SPI status naruszenia ochrony zapisu
Wartość SPIWVS | Typ naruszenia |
---|---|
0x1 | Ochrona zapisu zablokowała dostęp zapisu do chronionej zmiennej (od ostatniego odczytu) |
0x2 | Reset oprogramowania nastąpił, kiedy ochrona zapisu była aktywna |
0x3 | Jednoczesne naruszenie ochrony zapisu i reset oprogramowania nastąpiły od ostatniego odczytu. |
0x4 | Zapis został wykryty na SPI_MR (gdy wybrany układ był aktywny) albo na SPI_CSRi od ostatniego odczytu |
0x5 | Ochrona zapisu zablokowała próbę dostępu do zapisu do chronionego rejestru lub próby zapisu na SPI_MR (kiedy wybór układu był aktywny) zostały wykryte albo na SPI_CSRi (kiedy wybór układu „i” był aktywny) od ostatniego odczytu |
0x6 | Miał miejsce reset oprogramowania, gdy ochrona zapisu była aktywna (od ostatniego odczytu lub dostępu w trybie zapisu do SPI_MR, SPI_IER, SPI_IDRlub SPI_CSRx) i 0x5 |
0x7 | - ochrona zapisu zablokowała dostęp do chronionego rejestru I - reset oprogramowania miał miejsce, gdy ochrona zapisu była aktywna I - dostęp w trybie do zapisu został wykryty na SPI_MR (gdy wybór układu był aktywny) lub na SPI_CSRi (gdy wybór układ „i” był aktywny) od ostatniego odczytu |
SPIWPVSRC: SPI źródło naruszenia ochrony zapisu
To pole wskazuje, że APB Offset rejestru został naruszony (SPI_MR lub SPI_CSRx)