SPI 슬레이브
이 모듈에는 SPI 슬레이브 통신을 위한 플랫폼 추상화가 포함되어 있습니다.
요약
Typedef |
|
---|---|
otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
|
typedefbool(*
SPI 트랜잭션이 지정된 길이로 완료되었음을 나타냅니다. |
otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
|
typedefvoid(*
트랜잭션 완료 콜백이 호출된 후에 호출되고 TRUE 를 반환하여 필요한 추가 처리를 실행합니다. |
함수 |
|
---|---|
otPlatSpiSlaveDisable(void)
|
void
SPI 슬레이브 인터페이스를 종료하고 사용 중지합니다.
|
otPlatSpiSlaveEnable(otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
|
SPI 슬레이브 인터페이스를 초기화합니다.
|
otPlatSpiSlavePrepareTransaction(uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
|
다음 SPI 트랜잭션을 위한 데이터를 준비합니다.
|
Typedef
otPlatSpiSlaveTransactionCompleteCallback
bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
SPI 트랜잭션이 지정된 길이로 완료되었음을 나타냅니다.
슬레이브에 기록된 데이터는 이전 otPlatSpiSlavePrepareTransaction()
호출에 관한 aInputBuf
인수가 나타내는 포인터에 기록되었습니다.
이 함수가 호출되면 otPlatSpiSlavePrepareTransaction()
가 무효화되며 다음 트랜잭션이 유효하려면 다시 호출해야 합니다.
이 함수는 otPlatSpiSlavePrepareTransaction()
이 아직 호출되지 않았더라도 항상 트랜잭션 종료 시 호출됩니다. 이러한 경우 aOutputBufLen
및 aInputBufLen
는 0이 됩니다.
이 콜백은 ISR 컨텍스트에서 호출할 수 있습니다. 이 함수의 반환 값은 추가 처리가 필요한지 여부를 나타냅니다. TRUE
가 반환되면 플랫폼 spi-slave 드라이버 구현은 다른 OpenThread API/콜백이 호출되는 동일한 OS 컨텍스트에서 호출되어야 하는 트랜잭션 프로세스 콜백 (otPlatSpiSlaveEnable()
에 설정된 aProcessCallback
)을 호출해야 합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 |
이 호출이 반환된 후 플랫폼이 프로세스 콜백
aProcessCallback 를 호출해야 하면 TRUE, 처리할 항목이 없고 프로세스 콜백을 호출할 필요가 없는 경우 FALSE입니다. |
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
트랜잭션 완료 콜백이 호출된 후에 호출되고 TRUE
를 반환하여 필요한 추가 처리를 실행합니다.
모든 OS 컨텍스트 (예:otPlatSpiSlaveTransactionCompleteCallback
ISR), 이 콜백은 다른 OpenThread API/콜백과 동일한 OS 컨텍스트에서 호출되어야 합니다(MUST).
세부정보 | |||
---|---|---|---|
매개변수 |
|
함수
otPlatSpiSlaveDisable
void otPlatSpiSlaveDisable( void )
SPI 슬레이브 인터페이스를 종료하고 사용 중지합니다.
otPlatSpiSlaveEnable
otError otPlatSpiSlaveEnable( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext )
SPI 슬레이브 인터페이스를 초기화합니다.
otPlatSPISlavePrepareTransaction()
를 사용하여 트랜잭션이 준비되기 전까지는 SPI 슬레이브가 완전히 준비되지 않습니다.
otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all
0xFF` 바이트인 경우 수신된 모든 바이트를 삭제합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
otPlatSpiSlavePrepareTransaction
otError otPlatSpiSlavePrepareTransaction( uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag )
다음 SPI 트랜잭션을 위한 데이터를 준비합니다.
데이터 포인터는 트랜잭션 완료 콜백을 SPI 슬레이브 드라이버가 호출할 때까지 또는 다음 otPlatSpiSlavePrepareTransaction()
호출 이후까지 유효해야 합니다(MUST).
SPI 마스터가 트랜잭션을 시작하기 전에 두 번 이상 호출될 수 있습니다. 이 함수가 성공적으로 호출될 때마다 이전 호출의 이전 값이 삭제됩니다.
트랜잭션 완료 후 이 함수를 호출하지 않는 것은 버퍼 길이를 0으로 설정하고 aRequestTransactionFlag
를 false
로 설정하여 이전에 이 함수를 호출한 경우와 동일합니다.
aOutputBuf
의 aOutputBufLen
바이트가 클록아웃되면 마스터가 SPI 트랜잭션을 완료할 때까지 MISO 핀은 높게 설정됩니다. 이는 aOutputBuf
의 끝을 트랜잭션 길이까지 0xFF
바이트로 패딩하는 것과 기능적으로 동일합니다.
aInputBuf의 aInputBufLen
바이트가 MOSI에서 클록 인되면 SPI 마스터가 트랜잭션을 완료할 때까지 MOSI 핀의 모든 후속 값이 무시됩니다.
SPI 마스터가 트랜잭션을 완료하기 전에 aInputBufLen
또는 aOutputBufLen
(또는 둘 다)이 소진되더라도 트랜잭션의 진행 중인 크기를 계속 추적하여 트랜잭션 완료 콜백에 전달해야 합니다. 예를 들어 aInputBufLen
이 10이고 aOutputBufLen
가 20이고 SPI 마스터가 30바이트를 클록아웃하면 값 30은 트랜잭션 완료 콜백에 전달됩니다.
NULL
포인터가 aOutputBuf
또는 aInputBuf
로 전달되면 버퍼 포인터가 이전/현재 값에서 변경되어서는 안 됩니다. 이 경우 상응하는 길이 인수는 무시해야 합니다. 예를 들어 otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false)
는 입력 버퍼 포인터와 그 길이를 변경하지만 출력 버퍼 포인터는 이전과 동일하게 유지합니다.
트랜잭션이 진행되는 동안 이 함수를 호출하면 모든 인수가 무시되고 반환 값이 OT_ERROR_BUSY
가 됩니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||
반환 값 |
|
자료
OpenThread API 참조 주제는 GitHub에서 제공되는 소스 코드에서 비롯됩니다. 자세한 내용을 알아보거나 문서에 참여하려면 리소스를 참고하세요.