ทาส SPI
โมดูลนี้มีนามธรรมของแพลตฟอร์มสําหรับการสื่อสารเกี่ยวกับทาส SPI
สรุป
ประเภทคําจํากัดความ |
|
---|---|
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 ของ SPI
|
otPlatSpiSlavePrepareTransaction(uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
|
เตรียมข้อมูลสําหรับธุรกรรม SPI ถัดไป
|
ประเภทคําจํากัดความ
otPlatSpiSlaveTransactionเสร็จสมบูรณ์การโทรกลับ
bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
บ่งบอกว่าธุรกรรม SPI เสร็จสมบูรณ์ตามความยาวที่กําหนดไว้
ระบบเขียนข้อมูลที่ไปยังทาสไปยังตัวชี้ที่ระบุโดยอาร์กิวเมนต์ aInputBuf
ไปยังการเรียกก่อนหน้าไปยัง otPlatSpiSlavePrepareTransaction()
เมื่อมีการเรียกใช้ฟังก์ชันนี้ otPlatSpiSlavePrepareTransaction()
ไม่ถูกต้องและต้องเรียกใช้อีกครั้งเพื่อให้ธุรกรรมถัดไปถูกต้อง
โปรดทราบว่าระบบจะเรียกใช้ฟังก์ชันนี้เสมอเมื่อสิ้นสุดธุรกรรม แม้ว่ายังไม่ได้เรียกใช้ otPlatSpiSlavePrepareTransaction()
ก็ตาม ในกรณีเช่นนี้ aOutputBufLen
และ aInputBufLen
จะเป็น 0
โค้ดเรียกกลับนี้สามารถเรียกใช้ได้จากบริบทของ ISR ค่าการแสดงผลจากฟังก์ชันนี้เป็นการระบุว่าต้องมีการประมวลผลเพิ่มเติมหรือไม่ หากมีการส่งคืน TRUE
การใช้งานไดรเวอร์ Spi Slave แพลตฟอร์มจะต้องเรียกโค้ดเรียกกลับของกระบวนการธุรกรรม (aProcessCallback
ที่ตั้งค่าไว้ใน otPlatSpiSlaveEnable()
) ซึ่งแตกต่างจากการเรียกกลับนี้ต้องเรียกจากบริบทของระบบปฏิบัติการเดียวกันกับที่มีการเรียกใช้ OpenThread API/callback อื่นๆ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
การคืนสินค้า |
มีค่าเป็น TRUE หากหลังจากการเรียกนี้กลับมา แพลตฟอร์มควรเรียกใช้
aProcessCallback |
OTPlatSpiSlaveTransactionProcessback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
มีการเรียกใช้หลังจากมีการเรียกโค้ดเรียกกลับที่เสร็จสมบูรณ์และส่งกลับ TRUE
เพื่อดําเนินการเพิ่มเติมที่จําเป็น
แตกต่างจาก otPlatSpiSlaveTransactionCompleteCallback
ซึ่งเรียกใช้ได้จากบริบทของระบบปฏิบัติการ (เช่น ISR) การเรียกนี้ต้องเรียกจากบริบทของระบบปฏิบัติการเดียวกันกับ OpenThread API/backback อื่นๆ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
ฟังก์ชัน
OTPlatSpiSlaveDisable
void otPlatSpiSlaveDisable( void )
ปิดและปิดอินเทอร์เฟซทาส SPI
OTPlatSpiSlave เปิดใช้
otError otPlatSpiSlaveEnable( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext )
เริ่มต้นอินเทอร์เฟซ SPI ของ SPI
โปรดทราบว่าทาส SPI อาจไม่พร้อมใช้งานจนกว่าธุรกรรมจะจัดเตรียมโดยใช้ otPlatSPISlavePrepareTransaction()
หากเป็น otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all
0xFF` ไบต์ และทิ้งไบต์ที่ได้รับทั้งหมด
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
OTPlatSpiSlave กําลังเตรียมธุรกรรม
otError otPlatSpiSlavePrepareTransaction( uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag )
เตรียมข้อมูลสําหรับธุรกรรม SPI ถัดไป
ตัวชี้ข้อมูลต้องยังคงใช้งานได้จนกว่าการเรียกการตอบกลับ SPI ของ SPI จะเรียกใช้การเรียกเสร็จสมบูรณ์หรือจนกว่าจะเรียกใช้ otPlatSpiSlavePrepareTransaction()
ครั้งถัดไป
อาจมีการเรียกฟังก์ชันนี้มากกว่า 1 ครั้งก่อนที่ SPI หลักจะเริ่มทําธุรกรรม การเรียกฟังก์ชันนี้ที่สําเร็จจะทําให้ระบบยกเลิกค่าก่อนหน้าจากการเรียกใช้ก่อนหน้านี้
การไม่เรียกใช้ฟังก์ชันนี้หลังจากธุรกรรมที่เสร็จสมบูรณ์จะเหมือนกับว่าฟังก์ชันนี้ได้เรียกใช้ไปแล้วก่อนหน้านี้ โดยมีความยาวของบัฟเฟอร์ทั้ง 0 และ aRequestTransactionFlag
เป็น false
เมื่อ aOutputBufLen
ไบต์ของ aOutputBuf
หมดเวลาแล้ว ระบบจะปักหมุด PIN ของ MISO ไว้จนกว่าหลักจะทําธุรกรรม SPI เสร็จ ฟังก์ชันการทํางานนี้เทียบเท่ากับฟังก์ชันระยะห่างจากขอบของ aOutputBuf
คือ 0xFF
ไบต์โดยไม่จํากัดความยาวของธุรกรรม
เมื่อ AทางBuf ติดตั้งได้ aInputBufLen
ไบต์จาก MOSI แล้ว ค่าที่ตามมาทั้งหมดจาก PIN ของ MOSI จะถูกละเว้นจนกว่าต้นแบบ SPI จะเสร็จสิ้นธุรกรรม
โปรดทราบว่าแม้ว่า aInputBufLen
หรือ aOutputBufLen
(หรือทั้ง 2 อย่าง) จะหมดแล้วก่อนที่ SPI หลักจะทําธุรกรรมเสร็จ แต่ระบบยังต้องติดตามขนาดธุรกรรมต่อไปเพื่อให้โค้ดเรียกกลับที่สมบูรณ์ของธุรกรรม เช่น หาก aInputBufLen
เท่ากับ 10 และ aOutputBufLen
เท่ากับ 20 และ SPI หลักจะแสดงเวลา 30 ไบต์ ระบบจะส่งค่า 30 ไปยังโค้ดเรียกกลับที่สมบูรณ์ของธุรกรรม
หากส่งตัวชี้ NULL
เป็น aOutputBuf
หรือ aInputBuf
แสดงว่าตัวระบุบัฟเฟอร์ไม่ควรเปลี่ยนแปลงจากค่าก่อนหน้า/ปัจจุบัน ในกรณีนี้ ควรละเว้นอาร์กิวเมนต์ความยาวที่เกี่ยวข้อง ตัวอย่างเช่น otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false)
จะเปลี่ยนตัวชี้บัฟเฟอร์อินพุตและความยาวของตัวชี้ แต่คงตัวชี้บัฟเฟอร์เอาต์พุตไว้เหมือนเดิม
การเรียกฟังก์ชันนี้ขณะทําธุรกรรมจะเป็นการละเว้นอาร์กิวเมนต์ทั้งหมดและค่าการแสดงผลจะเป็น OT_ERROR_BUSY
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||
แสดงผลค่า |
|
แหล่งข้อมูล
หัวข้ออ้างอิง OpenThread API มาจากซอร์สโค้ดซึ่งมีอยู่ใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล