SPI Slave'i

Bu modülde SPI yardımcı iletişimi için platform soyutlaması yer alır.

Özet

Türdefler

otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Bir SPI işleminin belirtilen sürede tamamlandığını belirtir.
otPlatSpiSlaveTransactionProcessCallback)(void *aContext) typedef
void(*
Bir işlemden sonra yapılan tam geri çağırma çağrılır ve gerekli diğer işlemlerin yapılması için TRUE döndürülür.

İşlevler

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

Türdefler

otPlatSpiSlaveTransactionCompleteCallback

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

Bir SPI işleminin belirtilen sürede tamamlandığını belirtir.

Yardımcı sunucuya yazılan veriler, otPlatSpiSlavePrepareTransaction() için yapılan önceki çağrıya aInputBuf bağımsız değişkeni tarafından belirtilen işaretçiye yazılmıştır.

Bu işlev çağrıldıktan sonra, otPlatSpiSlavePrepareTransaction() geçersiz olur ve sonraki işlemin geçerli olması için tekrar çağrılmalıdır.

Bu işlevin, otPlatSpiSlavePrepareTransaction() henüz çağrılmamış olsa bile her zaman bir işlemin sonunda çağrıldığını unutmayın. Bu gibi durumlarda aOutputBufLen ve aInputBufLen sıfır olur.

Bu geri çağırma, ISR bağlamından çağrılabilir. Bu işlevin döndürdüğü değer, başka bir işleme gerek olup olmadığını gösterir. TRUE döndürülürse platform spi-slave sürücüsü uygulaması, işlem işlemi geri çağırmasını (otPlatSpiSlaveEnable() içinde ayarlanan aProcessCallback) çağırmalıdır. Ancak bu geri çağırma, diğer OpenThread API'leri/geri çağırma işlevleriyle aynı işletim sistemi bağlamından çağrılmalıdır.

Ayrıntılar
Parametreler
[in] aContext
Bağlam işaretçisi otPlatSpiSlaveEnable() ürününe geçirildi.
[in] aOutputBuf
otPlatSpiSlavePrepareTransaction() için yapılan son çağrının aOutputBuf değeri.
[in] aOutputBufLen
otPlatSpiSlavePrepareTransaction() için yapılan son çağrının aOutputBufLen değeri.
[in] aInputBuf
otPlatSpiSlavePrepareTransaction() için yapılan son çağrıdaki aInputBuf değeri.
[in] aInputBufLen
otPlatSpiSlavePrepareTransaction() için son çağrıdaki aInputBufLen değeri
[in] aTransactionLength
Tamamlanan işlemin bayt cinsinden uzunluğu.
İadeler
Bu çağrıdan sonra platformun işlem geri çağırma işlemini (aProcessCallback) çağırması gerekiyorsa TRUE, işlenecek hiçbir şey yoksa ve işlem geri çağırmasını çağırmanız gerekmiyorsa FALSE (yanlış) değerini döndürür.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Bir işlemden sonra yapılan tam geri çağırma çağrılır ve gerekli diğer işlemlerin yapılması için TRUE döndürülür.

otPlatSpiSlaveTransactionCompleteCallback Ancak herhangi bir işletim sistemi bağlamından (ör. ISR) bu geri çağırma, diğer herhangi bir OpenThread API/geri çağırma ile aynı işletim sistemi bağlamından çağrılmalıdır.

Ayrıntılar
Parametreler
[in] aContext
Bağlam işaretçisi otPlatSpiSlaveEnable() ürününe geçirildi.

İşlevler

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

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

otPlatSpiSlaveEnable

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

SPI yardımcı arayüzünü başlatın.

otPlatSPISlavePrepareTransaction() kullanılarak bir işlem hazırlanana kadar SPI yardımcısının 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ı silin.

Ayrıntılar
Parametreler
[in] aCompleteCallback
İşlem tamamlandı geri çağırması için işaretçi.
[in] aProcessCallback
Geri çağırma işlemini gerçekleştirecek işaretçi.
[in] aContext
Geri çağırmalara iletilecek 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 etkin.
OT_ERROR_FAILED
SPI Slave arayüzü etkinleştirilemedi.

otPlatSpiSlavePrepareTransaction

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

Bir sonraki SPI işlemi için verileri hazırlayın.

İşlemin tamamlandı geri çağırması SPI yardımcı sürücüsü tarafından çağrılana veya bir sonraki otPlatSpiSlavePrepareTransaction() çağrısına kadar veri işaretçileri geçerli kalmalıdır.

SPI ana kopyası işlemi başlatmadan önce birden çok kez çağrılabilir. Bu işleve yapılan her başarılı çağrı, önceki çağrılarda bulunan önceki değerlerin silinmesine neden olur.

Tamamlanan bir işlemden sonra bu işlevin çağrılmaması, eskiden hem arabellek uzunluğu sıfır hem de aRequestTransactionFlag false olarak ayarlanmış şekilde çağrılmasıyla aynıdır.

aOutputBuf için aOutputBufLen bayt zaman aşımına uğradığında, ana makine SPI işlemini tamamlayana kadar MISO PIN'i yüksek olarak ayarlanacaktır. Bu, aOutputBuf işleminin sonunu, işlem uzunluğu kadar 0xFF baytla doldurmaya ilişkin işlevsel eşdeğerdir.

MOSI'dan aInputBufLen baytlık aInputBuf saatlendikten sonra, SPI ana makinesi işlemi tamamlayana kadar MOSI pinden sonraki tüm değerler yoksayılır.

SPI ana öğesi bir işlemi tamamlamadan önce aInputBufLen veya aOutputBufLen (ya da her ikisi) tüketilse bile, işlemin devam eden boyutunun işlem tam geri çağırmaya aktarılması için işlemin devam eden boyutunun izlenmesi gerektiğini unutmayın. Örneğin, aInputBufLen değeri 10'a, aOutputBufLen de 20'ye eşitse ve SPI ana kopyası 30 bayta eşitse, işlem tam geri çağırmaya 30 değeri iletilir.

NULL işaretçisi aOutputBuf veya aInputBuf olarak aktarılırsa arabellek işaretçisinin önceki/mevcut değerinden değişmemesi gerektiği anlamına gelir. Bu durumda, ilgili uzunluk bağımsız değişkeni yoksayılmalıdır. Örneğin otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false), giriş arabelleği işaretçisini ve uzunluğunu değiştirir, ancak çıkış arabelleği işaretçisini öncekiyle aynı tutar.

Bir işlem devam ederken bu işleve yapılan tüm çağrılar, tüm bağımsız değişkenlerin yoksayılmasına ve döndürülen değerin 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 pinden okunacak veriler
[in] aInputBufLen
Giriş arabelleğinin bayt cinsinden boyutu
[in] aRequestTransactionFlag
Ana makine kesintisinin ayarlanması gerekiyorsa true olarak ayarlanır
Döndürülen Değerler
OT_ERROR_NONE
İşlem başarıyla hazırlandı.
OT_ERROR_BUSY
Şu anda devam eden bir işlem var.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable() çağrılmadı.

Kaynaklar

OpenThread API Referans konuları, GitHub'da bulunan kaynak koddan gelir. Daha fazla bilgi edinmek veya dokümanlarımıza katkıda bulunmak için Kaynaklar bölümüne bakın.