nô lệ SPI
Mô-đun này bao gồm bản tóm tắt nền tảng cho giao tiếp nô lệ SPI.
Tóm tắt
Typedef |
|
---|---|
otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
|
typedefbool(*
Cho biết rằng một giao dịch SPI đã hoàn tất với độ dài đã cho. |
otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
|
typedefvoid(*
Đượ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 để tiếp tục xử lý. |
Hàm |
|
---|---|
otPlatSpiSlaveDisable(void)
|
void
Tắt và vô hiệu hóa giao diện nô lệ SPI.
|
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.
|
Typedef
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 tất với độ dài đã cho.
Dữ liệu được ghi vào chế độ nô lệ đã được ghi vào con trỏ do đối số aInputBuf
chỉ định cho lệnh gọi trước đó tới otPlatSpiSlavePrepareTransaction()
.
Sau 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ệ.
Xin 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, aOutputBufLen
và aInputBufLen
sẽ bằng 0.
Lệnh 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 liệu có cần xử lý thêm hay không. Nếu TRUE
được trả về, quá trình triển khai trình điều khiển gián đoạn nền tảng phải gọi ra lệnh 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ỳ lệnh gọi/lệnh gọi lại OpenThread nào khác được gọi.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Trả về |
TRUE nếu sau khi lệnh gọi này trả về, nền tảng sẽ gọi lệnh gọi lại quy trình
aProcessCallback , FALSE nếu không có gì để xử lý và không cần phải gọi lệnh 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
để tiếp tục xử lý.
Không giống như otPlatSpiSlaveTransactionCompleteCallback
có thể được gọi từ bất kỳ ngữ cảnh hệ điều hành nào (ví dụ: ISR), 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 như bất kỳ API/lệnh gọi lại OpenThread khác.
Thông tin chi tiết | |||
---|---|---|---|
Các thông số |
|
Hàm
otPlatSpiSlavedisable
void otPlatSpiSlaveDisable( void )
Tắt và vô hiệu hóa giao diện nô lệ SPI.
otPlatSpiSlaveEnable
otError otPlatSpiSlaveEnable( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext )
Khởi tạo giao diện nô lệ SPI.
Lưu ý rằng nô lệ SPI chưa sẵn sàng cho đến khi giao dịch được chuẩn bị bằng otPlatSPISlavePrepareTransaction()
.
Nếu otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all
0xFF` byte và loại bỏ tất cả các byte đã nhận.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
||||||
Giá trị trả về |
|
otPlatSpiSlave mạnhGiao dịch
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 hợp lệ cho đến khi lệnh gọi lại hoàn tất giao dịch được trình điều khiển nô lệ SPI gọi hoặc cho đến sau lệnh gọi tiếp theo tới otPlatSpiSlavePrepareTransaction()
.
Hàm này có thể được gọi nhiều lần trước khi lệnh chính SPI bắt đầu giao dịch. Mỗi lệnh gọi thành công đến hàm này sẽ khiến các giá trị trước đó từ các lệnh gọi trước đó bị hủy.
Không gọi hàm này sau một giao dịch đã hoàn tất giống như khi hàm này được gọi trước đó với cả độ dài của bộ đệm được đặt là 0 và aRequestTransactionFlag
được đặt thành false
.
Khi aOutputBufLen
byte của aOutputBuf
đã được báo hết, ghim MISO sẽ được đặt ở mức cao cho đến khi giao dịch chính hoàn tất giao dịch SPI. Đây là hàm tương đương chức năng cho khoảng đệm của cuối aOutputBuf
, có 0xFF
byte trong chiều dài của giao dịch.
Sau khi aInputBufLen
byte của đầu vào a
Xin lưu ý rằng ngay cả khi aInputBufLen
hoặc aOutputBufLen
(hoặc cả hai) đã hết trước khi trang chính SPI hoàn tất một giao dịch, thì kích thước hiện tại 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à phiên bản chính SPI hết 30 byte, thì giá trị 30 được chuyển vào lệnh gọi lại hoàn tất giao dịch.
Nếu con trỏ NULL
được chuyển vào dưới dạng aOutputBuf
hoặc aInputBuf
, thì nghĩa là con trỏ đệm không được thay đổi so với giá trị hiện tại/giá trị trước đó. Trong trường hợp này, đối số độ dài tương ứng sẽ được bỏ qua. Ví dụ: otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false)
sẽ thay đổi con trỏ vùng đệm đầu vào và độ dài của con trỏ nhưng vẫn giữ nguyên con trỏ đầu ra như trước đây.
Mọi lệnh gọi đến hàm này trong khi đang xử lý giao dịch sẽ khiến tất cả đối số bị bỏ qua và giá trị trả về là OT_ERROR_BUSY
.
Thông tin chi tiết | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||
Giá trị trả về |
|
Tài nguyên
Các chủ đề về Tham chiếu API OpenThread được tạo từ mã nguồn, có sẵn trên GitHub. Để biết thêm thông tin hoặc để đóng góp cho tài liệu của chúng tôi, hãy tham khảo phần Tài nguyên.