SPI ปลอดภัยที่จะถูกขัดจังหวะหรือไม่?


17

ฉันกำลังเขียนไปยังการ์ด microSDจากภายในเฟิร์มแวร์ของฉัน แต่มันเป็นงานที่มีลำดับความสำคัญต่ำสุดดังนั้นจึงสามารถถูกขัดจังหวะโดยงานอื่น ๆ ในขณะที่อยู่ในระหว่างการอ่าน / เขียน

ตอนนี้สมมติว่าฉันสื่อสารกับการ์ด microSD นี้โดยใช้ UART ปัญหาระหว่างการอ่านคือฮาร์ดแวร์ RX FIFOจะล้นดังนั้นความล่าช้าสูงสุดที่ฉันสามารถทำได้คือ (ขนาด FIFO ×ไบต์ / วินาที) และระหว่างการเขียนจะไม่มีปัญหาเพราะปลายอีกด้านจะรอจนกระทั่งฉัน ส่งอักขระต่อไป

ตอนนี้ฉันใช้ SPI ได้อย่างไร สถานการณ์เหมือนกันสำหรับการเขียนมันไม่สำคัญและสำหรับการอ่านมันขึ้นอยู่กับขนาด SPI FIFO?

คำตอบ:


22

อุปกรณ์ SPI ส่วนใหญ่จะมีความสุขอย่างสมบูรณ์แบบที่อัตราข้อมูลใด ๆ ต่ำกว่าค่าสูงสุดที่ระบุ หนึ่งสามารถดำเนินการเป็นส่วนหนึ่งของการทำธุรกรรมหยุดพักที่จุดใด ๆ กลับมาไม่กี่ปีต่อมาและเสร็จสิ้น หากไม่มีข้อผิดพลาดบนนาฬิกาเลือกหรือสายไฟธุรกรรมจะเสร็จสมบูรณ์ตามปกติ

มีสามประการสำคัญที่ควรระวัง:

  1. โดยทั่วไปเมื่อธุรกรรมเริ่มต้นขึ้นบนรถบัส SPI จะไม่มีการใช้สายไฟบนบัสเพื่อวัตถุประสงค์อื่นจนกว่าการทำธุรกรรมนั้นจะเสร็จสมบูรณ์ โดยทั่วไปหมายความว่าการขัดจังหวะอาจไม่ใช้บัส SPI ยกเว้นเมื่อเป็นสิ่งเดียวที่จะใช้บัส (อาจเป็นไปได้ที่อินเทอร์รัปต์จะสามารถใช้งานบัสได้ในบางครั้งและสำหรับหลัก โปรแกรมที่มีการใช้งานพิเศษในเวลาอื่น ๆ ) อุปกรณ์บางตัวมีพินพิเศษเพื่อให้พวกเขา "เพิกเฉย" รถบัสที่อยู่ตรงกลางของการทำธุรกรรม แต่ถึงแม้จะมีคุณสมบัติเช่นนี้ฉันไม่แนะนำให้พยายามขัดจังหวะการทำธุรกรรม SPI กับอุปกรณ์หนึ่งให้ทำธุรกรรมกับอุปกรณ์อื่น แล้วปล่อยให้รหัสอ้างอิงกลับมาทำธุรกรรมกับครั้งแรก ดีกว่าที่จะให้อินเตอร์รัปต์ใช้บัส SPI แยกต่างหาก
  2. อุปกรณ์บางอย่างอาจทำงานผิดปกติหากธุรกรรมดำเนินต่อไปนานเกินไป ตัวอย่างเช่นชิปนาฬิกาแบบเรียลไทม์บางตัวห้ามบัฟเฟอร์สองเท่าของการลงทะเบียนเวลา / วันที่ แต่ให้ล็อกเหตุการณ์ "เวลาล่วงหน้า" ใด ๆ ที่จะเกิดขึ้นระหว่างการทำธุรกรรมและนำไปใช้หลังจากทำธุรกรรมเสร็จสมบูรณ์ หากการทำธุรกรรมใช้เวลานานกว่าที่จะเกิดเหตุการณ์การเลื่อนเวลาครั้งที่สองเหตุการณ์หลังจะถูกเพิกเฉยทำให้นาฬิกาส่งตามจำนวนเวลานั้น ฉันเห็นว่าไม่มีข้อแก้ตัวสำหรับการออกแบบชิปในลักษณะนี้ (แม้ว่าจะไม่ต้องการค่าใช้จ่ายในการบัฟเฟอร์ข้อมูลซ้ำซ้อน แต่การระบุว่าซอฟต์แวร์มีหน้าที่รับผิดชอบในการรับประกันความสอดคล้องของมันจะถูกกว่าการเพิ่มตรรกะ "update deferral" และจะลดโอกาสในการรบกวนนาฬิกา) แต่มีชิปดังกล่าวอยู่
  3. มีอุปกรณ์บางอย่างที่ใช้นาฬิกาและสัญญาณข้อมูล แต่ใช้ "หยุดชั่วคราว" เพื่อระบุกรอบ ตัวอย่างล่าสุดของสิ่งนี้ที่ฉันได้พบคือสตริงไฟ LED ตัวควบคุมต่อหลอดไฟ ฉันไม่ชอบการออกแบบดังกล่าวเป็นพิเศษ (อย่างใดอย่างหนึ่งอาจบ่งบอกถึงการทำกรอบโดยใช้ขอบเพิ่มขึ้นสามเส้นติดกันบนสายข้อมูลโดยไม่มีนาฬิกาแทรกแซง) แต่อีกครั้งอุปกรณ์ดังกล่าวมีอยู่จริง

แม้ว่าการสื่อสารบางประเภทจะต้องใช้การกำหนดเวลาเฉพาะ แต่ก็แทบจะไม่มีเหตุผลใด ๆ ที่อุปกรณ์ SPI จะต้องการ อย่างไรก็ตามเราต้องคำนึงถึงการมีอยู่ของอุปกรณ์ดังกล่าว


3
+1 ดี! เห็นด้วยกับความคิดเห็น / ผิดหวังทั้งหมดของคุณอย่างสมบูรณ์ เห็นมันหลายครั้งเกินไปเช่นกัน
DrFriedParts

11

การตรวจสอบสำเนาของข้อกำหนด (ซึ่งฉันไม่สามารถอ้างเหตุผลลิขสิทธิ์ / NDA) อัตรา SPI ถูกระบุเริ่มต้นที่ 0Hz หมายถึงการดำเนินการคงที่เป็นเรื่องปกติ ภายใต้ SPI คุณจะได้รับข้อมูลกลับมาในขณะที่อุปกรณ์กำลังถูกโอเวอร์คล็อกดังนั้นหากใช้ SPI ฮาร์ดแวร์คุณจะได้รับข้อมูลบางอย่างหลังจากข้อมูล (แม้ว่าจะส่ง 0 / ไม่สนใจ) ดังนั้นในเรื่องนี้จึงแตกต่างจาก UART ที่คุณสามารถรับข้อมูลที่ไม่พึงประสงค์กลับมาได้ตลอดเวลา


ดังนั้นความกังวลเดียวของฉันควรเป็นได้ว่าการ์ด MicroSD มีการสร้างหมดเวลาบางส่วน แต่ไม่ใช่ SPI เอง
Muis

5
ตามสเป็คจากทั้งหมดที่ฉันเห็นว่าไม่ควรมีการหมดเวลารูปแบบใด ๆ ในการ์ด SD เช่นกันดังนั้นอย่าเห็นว่าคุณควรมีปัญหาใด ๆ หลายปีที่ผ่านมาฉันเขียนโค้ดที่กำหนดเองและในขณะที่การดีบั๊กก็คือการก้าวผ่านรหัสออกไปโดยบอกว่า 10 วินาทีหรือมากกว่านั้นระหว่างการดำเนินการของ SPI และทั้งหมดนั้นใช้ได้
PeterJJ

1
+1, ความสามารถในการเรียกใช้ SPI ลงไปที่ 0 Hz นั้นมีประโยชน์สำหรับการดีบัก ขอบคุณ
Anindo Ghosh

1
ควรทราบว่าในอุปกรณ์ SPI บางตัวเอาต์พุตข้อมูลสามารถเปลี่ยนแปลงได้เฉพาะกับขอบนาฬิกาที่กำหนด แต่ในบางกรณีการส่งออกข้อมูลอาจเปลี่ยนเป็นแบบอะซิงโครนัส นี่เป็นเรื่องธรรมดาโดยเฉพาะอย่างยิ่งกับบิต "ไม่ว่าง" ในชิปบางตัวหากมีการโอเวอร์คล็อกสถานะของบิต "ไม่ว่าง" และมันยังคงอยู่ที่เอาต์พุตเมื่อส่วนไม่ว่างสัญญาณเอาต์พุตจะเปลี่ยนแบบอะซิงโครนัส ในชิปอื่น ๆ สถานะ "ไม่ว่าง" ที่รายงานจะไม่เปลี่ยนแปลงจนกว่าจะมีการตอกบัตรซ้ำ การออกแบบทั้งสองมีข้อดีและข้อเสียดังนั้นจึงเป็นประโยชน์ที่จะทราบว่ามีการออกแบบทั้งสองประเภทอยู่
supercat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.