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 를 반환 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 슬레이브 드라이버 구현이 거래 과정 콜백을 호출해야합니다 반환 ( aProcessCallback 설정 otPlatSpiSlaveEnable() 이 콜백과는 달리 다른 OpenThread의 API / 콜백이 호출하는 것과 같은 OS 컨텍스트에서 호출해야합니다).

세부
매개 변수
[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 를 반환 TRUE .

모든 OS 컨텍스트 (예 : ISR)에서 호출 할 수있는 otPlatSpiSlaveTransactionCompleteCallbackotPlatSpiSlaveTransactionCompleteCallback 콜백은 다른 OpenThread API / 콜백과 동일한 OS 컨텍스트에서 호출해야합니다.

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

기능

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

SPI 슬레이브 인터페이스를 종료하고 비활성화합니다.

otPlatSpiSlaveEnable

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

SPI 슬레이브 인터페이스를 초기화합니다.

SPI 슬레이브는 otPlatSPISlavePrepareTransaction() 사용하여 트랜잭션이 준비 될 때까지 완전히 준비되지 않습니다.

otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all 0xFF` 바이트를 otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all 수신 된 모든 바이트를 버립니다.

세부
매개 변수
[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() 대한 다음 호출 이후까지 유효해야합니다.

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

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

일단 aOutputBufLen 바이트 aOutputBuf 클록 아웃 된 SPI 마스터는 트랜잭션을 완료 할 때까지 상기 MISO 핀 세트 높아야한다. 이것은 트랜잭션 길이까지 0xFF 바이트로 aOutputBuf 의 끝을 aOutputBuf 것과 같은 기능을합니다.

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 () 이 호출되지 않았습니다.