Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

SPI 슬레이브

이 모듈에는 SPI 슬레이브 통신을 위한 플랫폼 추상화가 포함되어 있습니다.

요약

Typedef

otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
SPI 거래가 지정된 기간으로 완료되었음을 나타냅니다.
otPlatSpiSlaveTransactionProcessCallback)(void *aContext) typedef
void(*
트랜잭션 완료 콜백이 호출된 후 호출되며 추가 처리를 위해 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()가 아직 호출되지 않은 경우에도 항상 트랜잭션이 끝날 때 호출됩니다. 이 경우 aOutputBufLenaInputBufLen는 0이 됩니다.

이 콜백은 ISR 컨텍스트에서 호출할 수 있습니다. 이 함수의 반환 값은 추가 처리가 필요한지 여부를 나타냅니다. 조건TRUE 반환된 플랫폼 spi-slave 드라이버 구현은 트랜잭션 프로세스 콜백 (aProcessCallback 설정otPlatSpiSlaveEnable() )를 사용합니다.

세부정보
매개변수
[in] aContext
otPlatSpiSlaveEnable()에 전달된 컨텍스트 포인터
[in] aOutputBuf
otPlatSpiSlavePrepareTransaction()에 대한 마지막 호출의 aOutputBuf 값입니다.
[in] aOutputBufLen
otPlatSpiSlavePrepareTransaction()에 대한 마지막 호출의 aOutputBufLen 값입니다.
[in] aInputBuf
otPlatSpiSlavePrepareTransaction()에 대한 마지막 호출의 aInputBuf 값입니다.
[in] aInputBufLen
otPlatSpiSlavePrepareTransaction()에 대한 마지막 호출의 aInputBufLen 값
[in] aTransactionLength
완료된 거래의 길이(바이트)입니다.
반환
이 호출이 반환된 후 플랫폼이 프로세스 콜백 aProcessCallback를 호출해야 하면 TRUE, 처리할 항목이 없고 프로세스 콜백을 호출할 필요가 없으면 FALSE입니다.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

트랜잭션 완료 콜백이 호출된 후 호출되며 추가 처리를 위해 TRUE를 반환합니다.

좋아요 취소otPlatSpiSlaveTransactionCompleteCallback 모든 OS 컨텍스트 (예: ISR)의 콜백을 다른 OpenThread API/콜백과 동일한 OS 컨텍스트에서 호출해야 합니다(MUST).

세부정보
매개변수
[in] aContext
otPlatSpiSlaveEnable()에 전달된 컨텍스트 포인터

함수

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 all0xFF` 바이트인 경우 수신된 모든 바이트를 삭제합니다.

세부정보
매개변수
[in] aCompleteCallback
트랜잭션 완료 콜백을 가리키는 포인터입니다.
[in] aProcessCallback
콜백을 처리할 포인터입니다.
[in] aContext
콜백에 전달할 컨텍스트 포인터입니다.
반환 값
OT_ERROR_NONE
SPI 슬레이브 인터페이스를 사용 설정했습니다.
OT_ERROR_ALREADY
SPI 슬레이브 인터페이스가 이미 사용 설정되었습니다.
OT_ERROR_FAILED
SPI 슬레이브 인터페이스를 사용 설정할 수 없습니다.

otPlatSpiSlavePrepareTransaction

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

다음 SPI 트랜잭션을 위한 데이터 준비

데이터 포인터는 트랜잭션 완료 콜백이 SPI 슬레이브 드라이버에 의해 호출되거나 otPlatSpiSlavePrepareTransaction()에 대한 다음 호출 이후까지 유효해야 합니다(MUST).

이 함수는 SPI 마스터가 트랜잭션을 시작하기 전에 두 번 이상 호출될 수 있습니다. 이 함수가 성공적으로 호출될 때마다 이전 호출의 이전 값이 삭제됩니다.

완료된 트랜잭션 이후에 이 함수를 호출하지 않는 것은 두 함수가 버퍼 길이를 모두 0으로 설정하고 aRequestTransactionFlagfalse로 설정하여 이전에 호출한 것과 동일합니다.

aOutputBufaOutputBufLen바이트가 클록되면 마스터는 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이 됩니다.

세부정보
매개변수
[in] aOutputBuf
MISO 핀에 쓰려는 데이터
[in] aOutputBufLen
출력 버퍼의 크기(바이트)
[in] aInputBuf
MOSI 핀에서 읽을 데이터
[in] aInputBufLen
입력 버퍼의 크기(바이트)
[in] aRequestTransactionFlag
호스트 인터럽트를 설정해야 하는 경우 true로 설정합니다.
반환 값
OT_ERROR_NONE
거래가 준비되었습니다.
OT_ERROR_BUSY
현재 거래가 진행 중입니다.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable()이 호출되지 않았습니다.

리소스

OpenThread API 참조 주제는 GitHub에서 제공되는 소스 코드에서 시작됩니다. 자세한 내용을 알아보거나 문서에 기여하려면 리소스를 참조하세요.