Moduł SPI
Ten moduł zawiera abstrakcjonowanie platformy do komunikacji podrzędnej SPI.
Podsumowanie
Definicje typów |
|
---|---|
otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
|
typedefbool(*
Wskazuje, że transakcja interfejsu SPI została zakończona o podanej długości. |
otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
|
typedefvoid(*
Wywoływana po zakończeniu wywołania zwrotnego w ramach transakcji i zwraca TRUE , aby wykonać dalsze przetwarzanie. |
Funkcje |
|
---|---|
otPlatSpiSlaveDisable(void)
|
void
Wyłącz i wyłącz interfejs podrzędnego interfejsu SPI.
|
otPlatSpiSlaveEnable(otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
|
Zainicjuj interfejs podrzędne interfejsu SPI.
|
otPlatSpiSlavePrepareTransaction(uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
|
Przygotuj dane do następnej transakcji interfejsu SPI.
|
Definicje typów
otPlatSpiSlaveTransactionCompleteCallback
bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
Wskazuje, że transakcja interfejsu SPI została zakończona o podanej długości.
Dane zapisane w elemencie podrzędnym zostały zapisane w wskaźniku wskazanym przez argument aInputBuf
dla poprzedniego wywołania otPlatSpiSlavePrepareTransaction()
.
Po wywołaniu tej funkcji funkcja otPlatSpiSlavePrepareTransaction()
jest nieprawidłowa i trzeba je wywołać ponownie, by kolejna transakcja była prawidłowa.
Pamiętaj, że funkcja ta jest zawsze wywoływana na końcu transakcji, nawet jeśli nie wywołano jeszcze funkcji otPlatSpiSlavePrepareTransaction()
. W takich przypadkach wartości aOutputBufLen
i aInputBufLen
mają wartość 0.
To wywołanie zwrotne może być wywoływane z kontekstu ISR. Wartość zwrócona z tej funkcji wskazuje, czy konieczne jest dalsze przetwarzanie. Jeśli zwracany jest kod TRUE
, implementacja sterownika spi-slave platformy musi wywołać wywołanie zwrotne procesu transakcji (aProcessCallback
ustawione w otPlatSpiSlaveEnable()
). W przeciwieństwie do tego wywołania zwrotnego musi być ono wywoływane z tego samego kontekstu systemu operacyjnego, co inne wywołanie API lub wywołania zwrotne OpenThread.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwroty |
TRUE, jeśli po tym wywołaniu platforma powinna wywołać wywołanie zwrotne procesu
aProcessCallback , FALSE, jeśli nie ma nic do przetworzenia ani nie ma potrzeby wywoływania wywołania zwrotnego procesu. |
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
Wywoływana po zakończeniu wywołania zwrotnego w ramach transakcji i zwraca TRUE
, aby wykonać dalsze przetwarzanie.
W odróżnieniu od metody otPlatSpiSlaveTransactionCompleteCallback
, którą można wywoływać z dowolnego kontekstu systemu operacyjnego (np. ISR), to wywołanie zwrotne MUSI być wywoływane z tego samego kontekstu systemu operacyjnego co dowolny inny interfejs API/wywołanie zwrotne OpenThread.
Szczegóły | |||
---|---|---|---|
Parametry |
|
Funkcje
otPlatSpiSlaveDisable
void otPlatSpiSlaveDisable( void )
Wyłącz i wyłącz interfejs podrzędnego interfejsu SPI.
otPlatSpiSlaveEnable
otError otPlatSpiSlaveEnable( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext )
Zainicjuj interfejs podrzędne interfejsu SPI.
Pamiętaj, że podrzędne SPI nie jest w pełni gotowe, dopóki transakcja nie zostanie gotowa przy użyciu otPlatSPISlavePrepareTransaction()
.
Jeśli otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all
0 x FF` i odrzuć wszystkie odebrane bajty.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
otPlatSpiSlavePrepareTransaction
otError otPlatSpiSlavePrepareTransaction( uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag )
Przygotuj dane do następnej transakcji interfejsu SPI.
Wskaźniki danych MUSZĄ pozostawać prawidłowe do czasu wywołania pełnego wywołania zwrotnego transakcji przez sterownik podrzędnego interfejsu SPI lub do czasu następnego wywołania otPlatSpiSlavePrepareTransaction()
.
Można je wywołać więcej niż raz przed zainicjowaniem transakcji przez główny interfejs SPI. Każde udane wywołanie tej funkcji powoduje odrzucenie poprzednich wartości z wcześniejszych wywołań.
Niewywoływanie tej funkcji po zakończeniu transakcji działa tak samo jak w przypadku wcześniejszego wywołania tej funkcji przy obu długościach bufora ustawionego na 0, a zasadę aRequestTransactionFlag
– na false
.
Po wyliczeniu aOutputBufLen
bajtów z aOutputBuf
kod PIN MISO powinien być ustawiony na wysoką wartość do czasu zakończenia transakcji interfejsu SPI przez mastera. Jest to funkcjonalny odpowiednik dopełnienia zakończenia ciągu aOutputBuf
0xFF
B do długości transakcji.
Po zarejestrowaniu aInputBufLen
bajtów aInputBuf na podstawie zegara MOSI wszystkie kolejne wartości z pinezki MOSI są ignorowane, dopóki główny interfejs SPI nie zakończy transakcji.
Pamiętaj, że nawet jeśli wyczerpią się zasoby aInputBufLen
lub aOutputBufLen
(albo oba) przed ukończeniem transakcji przez główny interfejs dostawcy usług, wciąż musi być śledzić bieżący rozmiar transakcji, aby została przekazana do wywołania zwrotnego transakcji. Jeśli na przykład aInputBufLen
ma wartość 10, a aOutputBufLen
ma wartość 20, a główny interfejs SPI wyczyści 30 bajtów, wartość 30 jest przekazywana do wywołania zwrotnego transakcji w całości.
Jeśli wskaźnik NULL
zostanie przekazany jako aOutputBuf
lub aInputBuf
, oznacza to, że ten wskaźnik nie powinien zmieniać swojej poprzedniej/bieżącej wartości. W tym przypadku odpowiedni argument długości powinien zostać zignorowany. Na przykład otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false)
zmienia wskaźnik bufora wejściowego i jego długość, ale zachowuje taki sam wskaźnik wyjściowy jak wcześniej.
Każde wywołanie tej funkcji w trakcie transakcji spowoduje, że wszystkie argumenty zostaną zignorowane, a zwracaną wartością będzie OT_ERROR_BUSY
.
Szczegóły | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||
Zwracane wartości |
|
Zasoby
Tematy referencyjne interfejsu OpenThread API pochodzą z kodu źródłowego dostępnego w GitHub. Aby dowiedzieć się więcej lub dołączyć do naszej dokumentacji, skorzystaj z sekcji Zasoby.