SPI Köle

Bu modül, SPI köle iletişimi için platformun soyutlanmasını içerir.

Özet

Türler

otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) Tür
bool(*
Bir SPI işleminin belirtilen uzunlukta tamamlandığını gösterir.
otPlatSpiSlaveTransactionProcessCallback)(void *aContext) Tür
void(*
Bir işlem tamamlandıktan sonra geri çağırma çağrılır ve daha fazla işlem yapmak için TRUE değeri döndürülür.

İşlevler

otPlatSpiSlaveDisable(void)
void
SPI Slave arayüzünü kapatın ve devre dışı bırakın.
otPlatSpiSlaveEnable(otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
SPI Slave arayüzünü başlatın.
otPlatSpiSlavePrepareTransaction(uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Sonraki SPI işlemi için veri hazırlayın.

Türler

otPlatSpiSlaveTransactionTamamlandı Geri Çağırması

bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)

Bir SPI işleminin belirtilen uzunlukta tamamlandığını gösterir.

Köleye yazılan veriler, önceki otPlatSpiSlavePrepareTransaction() çağrısında aInputBuf bağımsız değişkeniyle belirtilen işaretçiye yazılmıştır.

Bu işlev çağrıldıktan sonra, otPlatSpiSlavePrepareTransaction() geçersiz olur ve bir sonraki işlemin geçerli olması için bu özelliğin yeniden çağrılması gerekir.

otPlatSpiSlavePrepareTransaction() işlevi henüz çağrılmasa bile, bu işlevin her zaman bir işlemin sonunda çağrılacağını unutmayın. Bu tür durumlarda aOutputBufLen ve aInputBufLen sıfır olur.

Bu geri çağırma, ISR bağlamından çağrılabilir. Bu işlevden elde edilen dönüş değeri, başka bir işleme gerek olup olmadığını gösterir. TRUE, platform spilake sürücü uygulamasının döndürülmesi durumunda işlem süreci geri çağırmasını (otPlatSpiSlaveEnable() içinde ayarlanıraProcessCallback) çağırır. Bu geri çağırmanın aksine, bu geri çağırmanın diğer OpenThread API/geri çağırma çağrılarıyla aynı işletim sistemi bağlamında çağrılması gerekir.

Ayrıntılar
Parametreler
[in] aContext
İçerik işaretçisi otPlatSpiSlaveEnable() adlı kullanıcıya aktarıldı.
[in] aOutputBuf
otPlatSpiSlavePrepareTransaction() hedefine yapılan son aramadan elde edilen aOutputBuf değeri.
[in] aOutputBufLen
otPlatSpiSlavePrepareTransaction() hedefine yapılan son aramadan elde edilen aOutputBufLen değeri.
[in] aInputBuf
otPlatSpiSlavePrepareTransaction() ile yapılan son aramadan AInputBuf'un değeri.
[in] aInputBufLen
otPlatSpiSlavePrepareTransaction() ile yapılan son aramadan AInputBufLen'in değeri
[in] aTransactionLength
Tamamlanan işlemin bayt cinsinden uzunluğu.
İadeler
Bu çağrı döndürüldükten sonra platform aProcessCallback geri çağırma işlemini çağırırsa TRUE, işlenecek bir şey yoksa ve geri çağırma işlemini çağırmaya gerek yoksa TRUE değerini alır.

otPlatSpiSlaveTransactionProcessBackBack

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Bir işlem tamamlandıktan sonra geri çağırma çağrılır ve daha fazla işlem yapmak için TRUE değeri döndürülür.

Herhangi bir OS bağlamından çağrılabilecek otPlatSpiSlaveTransactionCompleteCallback yerine ISR) ve bu geri çağırmanın diğer OpenThread API/geri çağırma istekleriyle aynı işletim sistemi bağlamında çağrılması GEREKİR.

Ayrıntılar
Parametreler
[in] aContext
İçerik işaretçisi otPlatSpiSlaveEnable() adlı kullanıcıya aktarıldı.

İşlevler

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

SPI Slave arayüzünü kapatın ve devre dışı bırakın.

otPlatSpiSlaveEtkinleştir

otError otPlatSpiSlaveEnable(
  otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,
  otPlatSpiSlaveTransactionProcessCallback aProcessCallback,
  void *aContext
)

SPI Slave arayüzünü başlatın.

otPlatSPISlavePrepareTransaction() kullanılarak bir işlem yapılana kadar SPI kölesinin tam olarak hazır olmadığını unutmayın.

otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all0xFF` baytsa ve alınan tüm baytları sil.

Ayrıntılar
Parametreler
[in] aCompleteCallback
İşaretçinin işlem tamamlama geri çağırması.
[in] aProcessCallback
Geri çağırmanın işlenmesi için işaretçi.
[in] aContext
Geri çağırmalara aktarılacak bağlam işaretçisi.
Döndürülen Değerler
OT_ERROR_NONE
SPI Slave arayüzü başarıyla etkinleştirildi.
OT_ERROR_ALREADY
SPI Slave arayüzü zaten etkinleştirilmiş.
OT_ERROR_FAILED
SPI Slave arayüzü etkinleştirilemedi.

otPlatSpiSlaveReadyTransaction

otError otPlatSpiSlavePrepareTransaction(
  uint8_t *aOutputBuf,
  uint16_t aOutputBufLen,
  uint8_t *aInputBuf,
  uint16_t aInputBufLen,
  bool aRequestTransactionFlag
)

Sonraki SPI işlemi için veri hazırlayın.

Veri işaretçileri, işlem tamamlama geri çağırma işlemi SPI kölesi sürücüsü tarafından çağrılana kadar veya otPlatSpiSlavePrepareTransaction() sonrasında yapılan bir sonraki çağrıya kadar geçerli kalmalıdır.

SPI ana makinesi işlemi başlatmadan önce bu işlev birden fazla kez çağrılabilir. Bu işleve yapılan her başarılı çağrı, önceki çağrıların önceki değerlerinin silinmesine neden olur.

Tamamlanmış bir işlemden sonra bu işlevi çağırmamak, bu işlevin daha önce çağrılmasıyla aynıdır. Her iki arabellek uzunluğu sıfır ve aRequestTransactionFlag false olarak ayarlanmıştır.

aOutputBufLen bayt aOutputBuf zaman aşımına uğradıktan sonra, ana makine SPI işlemini tamamlayana kadar MISO PIN'i yüksek olacak şekilde ayarlanır. Bu, aOutputBuf baytın son kısmını işlem uzunluğuna 0xFF bayt olacak şekilde doldurmanın işlevsel eşdeğeridir.

MOSI ile aInputBufLen baytlık InInputBuf saat oluşturulduktan sonra, MOI PIN'inden sonraki tüm değerler, SPI ana işlemi işlemi tamamlayana kadar yok sayılır.

SPI ana işlemi bir işlemi tamamlamadan önce aInputBufLen veya aOutputBufLen (veya her ikisi de) tükense bile, işlemin devam eden boyutunun işlem tamamlanma geri çağırmasına iletilecek şekilde takip edilmesi gerekir. Örneğin, aInputBufLen değeri 10, aOutputBufLen 20 ise ve SPI ana etiketi 30 bayt zaman aşımına uğrarsa 30 değeri, işlem tamamlama geri çağırmasına aktarılır.

Bir NULL işaretçisinin aOutputBuf veya aInputBuf olarak iletilmesi, bu arabellek işaretçisinin önceki/geçerli değerinden farklı olmaması gerektiği anlamına gelir. Bu durumda, karşılık gelen uzunluk bağımsız değişkeni yoksayılmalıdır. Örneğin, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) giriş arabellek işaretçisini ve uzunluğunu değiştirir, ancak çıkış arabellek işaretçisini öncekiyle aynı tutar.

Bir işlem devam ederken bu işleve yapılan herhangi bir çağrı, tüm bağımsız değişkenlerin yok sayılmasına ve döndürme değerinin OT_ERROR_BUSY olmasına neden olur.

Ayrıntılar
Parametreler
[in] aOutputBuf
MISO PIN'ine yazılacak veriler
[in] aOutputBufLen
Çıkış arabelleğinin bayt cinsinden boyutu
[in] aInputBuf
MOSI raptiyesinden okunacak veriler
[in] aInputBufLen
Giriş arabelleğinin bayt cinsinden boyutu
[in] aRequestTransactionFlag
Ana makine kesintisi ayarlanmalıdırsa doğru olarak ayarlayın
Döndürülen Değerler
OT_ERROR_NONE
İşlem başarıyla hazırlandı.
OT_ERROR_BUSY
Şu anda bir işlem devam ediyor.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable() çağrılmadı.

Kaynaklar

OpenThread API Referans konularının kaynağı, GitHub'daki kaynak kodudur. Daha fazla bilgi edinmek veya dokümanlarımıza katkıda bulunmak için Kaynaklar'a bakın.