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ürbool(*
Bir SPI işleminin belirtilen uzunlukta tamamlandığını gösterir. |
otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
|
Türvoid(*
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 |
|
||||||||||||
İ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 |
|
İş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 all
0xFF` baytsa ve alınan tüm baytları sil.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||||||||
Döndürülen Değerler |
|
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.