Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

SPI nô lệ

Mô-đun này bao gồm sự trừu tượng hóa nền tảng cho giao tiếp nô lệ SPI.

Tóm lược

Typedefs

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Cho biết rằng một giao dịch SPI đã hoàn thành với độ dài nhất định.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Được gọi sau khi lệnh gọi lại hoàn tất giao dịch được gọi và trả về TRUE để thực hiện bất kỳ quá trình xử lý nào được yêu cầu.

Chức năng

otPlatSpiSlaveDisable (void)
void
Tắt và tắt giao diện SPI slave.
otPlatSpiSlaveEnable (otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Khởi tạo giao diện nô lệ SPI.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Chuẩn bị dữ liệu cho giao dịch SPI tiếp theo.

Typedefs

otPlatSpiSlaveTransactionCompleteCallback

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

Cho biết rằng một giao dịch SPI đã hoàn thành với độ dài nhất định.

Dữ liệu được ghi cho nô lệ đã được ghi vào con trỏ được chỉ ra bởi đối số aInputBuf tới lệnh gọi trước đó tới otPlatSpiSlavePrepareTransaction() .

Khi hàm này được gọi, otPlatSpiSlavePrepareTransaction() không hợp lệ và phải được gọi lại để giao dịch tiếp theo hợp lệ.

Lưu ý rằng hàm này luôn được gọi khi kết thúc giao dịch, ngay cả khi otPlatSpiSlavePrepareTransaction() chưa được gọi. Trong những trường hợp như vậy, aOutputBufLenaInputBufLen sẽ bằng không.

Cuộc gọi lại này có thể được gọi từ ngữ cảnh ISR. Giá trị trả về từ hàm này cho biết nếu cần xử lý thêm. Nếu TRUE được trả về, việc triển khai trình điều khiển spi-slave nền tảng phải gọi gọi lại quy trình giao dịch ( aProcessCallback được đặt trong otPlatSpiSlaveEnable() ) không giống như lệnh gọi lại này phải được gọi từ cùng một ngữ cảnh hệ điều hành mà bất kỳ API / lệnh gọi lại OpenThread nào khác được gọi.

Chi tiết
Thông số
[in] aContext
Con trỏ ngữ cảnh được chuyển vào otPlatSpiSlaveEnable() .
[in] aOutputBuf
Giá trị của aOutputBuf từ lần gọi cuối cùng tới otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Giá trị của aOutputBufLen từ lần gọi cuối cùng tới otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Giá trị của aInputBuf từ lần gọi cuối cùng tới otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Giá trị của aInputBufLen từ lần gọi cuối cùng tới otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Độ dài của giao dịch đã hoàn thành, tính bằng byte.
Lợi nhuận
TRUE nếu sau khi cuộc gọi này trả về, nền tảng sẽ gọi quy trình gọi lại aProcessCallback , FALSE nếu không có gì để xử lý và không cần gọi lại quy trình.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Được gọi sau khi lệnh gọi lại hoàn tất giao dịch được gọi và trả về TRUE để thực hiện bất kỳ quá trình xử lý nào được yêu cầu.

Không giống như otPlatSpiSlaveTransactionCompleteCallback có thể được gọi từ bất kỳ ngữ cảnh HĐH nào (ví dụ: ISR), lệnh gọi lại này PHẢI được gọi từ cùng ngữ cảnh HĐH như bất kỳ lệnh gọi lại / API OpenThread nào khác.

Chi tiết
Thông số
[in] aContext
Con trỏ ngữ cảnh được chuyển vào otPlatSpiSlaveEnable() .

Chức năng

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Tắt và tắt giao diện SPI slave.

otPlatSpiSlaveEnable

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

Khởi tạo giao diện nô lệ SPI.

Lưu ý rằng SPI slave chưa hoàn toàn sẵn sàng cho đến khi một giao dịch được chuẩn bị bằng cách sử dụng otPlatSPISlavePrepareTransaction() .

Nếu otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all byte 0xFF` và loại bỏ tất cả các byte đã nhận.

Chi tiết
Thông số
[in] aCompleteCallback
Con trỏ đến giao dịch hoàn tất gọi lại.
[in] aProcessCallback
Con trỏ để xử lý lệnh gọi lại.
[in] aContext
Con trỏ ngữ cảnh được chuyển đến các lệnh gọi lại.
Giá trị trả lại
OT_ERROR_NONE
Đã kích hoạt thành công giao diện SPI Slave.
OT_ERROR_ALREADY
Giao diện SPI Slave đã được kích hoạt.
OT_ERROR_FAILED
Không thể bật giao diện SPI Slave.

otPlatSpiSlavePrepareTransaction

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

Chuẩn bị dữ liệu cho giao dịch SPI tiếp theo.

Con trỏ dữ liệu PHẢI vẫn hợp lệ cho đến khi lệnh gọi lại hoàn tất giao dịch được gọi bởi trình điều khiển nô lệ SPI hoặc cho đến sau cuộc gọi tiếp theo tới otPlatSpiSlavePrepareTransaction() .

Hàm này có thể được gọi nhiều lần trước khi SPI master bắt đầu giao dịch. Mỗi lần gọi thành công hàm này sẽ khiến các giá trị trước đó từ các lần gọi trước đó bị loại bỏ.

Không gọi hàm này sau khi một giao dịch hoàn thành cũng giống như khi hàm này được gọi trước đó với cả độ dài bộ đệm được đặt thành 0 và aRequestTransactionFlag được đặt thành false .

Sau khi byte aOutputBufLen của aOutputBuf đã hết tốc độ, chân MISO sẽ được đặt ở mức cao cho đến khi tổng thể kết thúc giao dịch SPI. Đây là chức năng tương đương với việc đệm vào cuối aOutputBuf bằng byte 0xFF theo thời lượng của giao dịch.

Khi các byte aInputBufLen của aInputBuf đã được tăng tốc từ MOSI, tất cả các giá trị tiếp theo từ chân MOSI sẽ bị bỏ qua cho đến khi SPI master kết thúc giao dịch.

Lưu ý rằng ngay cả khi aInputBufLen hoặc aOutputBufLen (hoặc cả hai) đã cạn kiệt trước khi SPI master kết thúc một giao dịch, kích thước đang diễn ra của giao dịch vẫn phải được theo dõi để được chuyển đến lệnh gọi lại hoàn tất giao dịch. Ví dụ: nếu aInputBufLen bằng 10 và aOutputBufLen bằng 20 và SPI master hết 30 byte, giá trị 30 được chuyển cho lệnh gọi lại hoàn tất giao dịch.

Nếu một con trỏ NULL được chuyển vào dưới dạng aOutputBuf hoặc aInputBuf điều đó có nghĩa là con trỏ đệm không được thay đổi so với giá trị trước đó / hiện tại của nó. Trong trường hợp này, đối số độ dài tương ứng nên được bỏ qua. Ví dụ, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) thay đổi con trỏ bộ đệm đầu vào và độ dài của nó nhưng giữ nguyên con trỏ bộ đệm đầu ra như trước.

Mọi lệnh gọi hàm này trong khi đang thực hiện một giao dịch sẽ khiến tất cả các đối số bị bỏ qua và giá trị trả về là OT_ERROR_BUSY .

Chi tiết
Thông số
[in] aOutputBuf
Dữ liệu được ghi vào chân MISO
[in] aOutputBufLen
Kích thước của bộ đệm đầu ra, tính bằng byte
[in] aInputBuf
Dữ liệu được đọc từ chân MOSI
[in] aInputBufLen
Kích thước của bộ đệm đầu vào, tính bằng byte
[in] aRequestTransactionFlag
Đặt thành true nếu ngắt máy chủ lưu trữ nên được đặt
Giá trị trả lại
OT_ERROR_NONE
Giao dịch đã được chuẩn bị thành công.
OT_ERROR_BUSY
Một giao dịch hiện đang được tiến hành.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () chưa được gọi.