ฉันสงสัยว่ามันเป็นไปได้อย่างไรที่จะใช้ bitbanging เพื่อขับ 9600 baud serial ผ่าน GPIO pin บน Raspberry Pi
เห็นได้ชัดว่า Linux ไม่ใช่แพลตฟอร์มที่ดีมากสำหรับการสร้างบิตเนื่องจากมีไดรเวอร์จำนวนมากและการขัดจังหวะอื่น ๆ ซึ่งอาจบล็อก CPU เป็นระยะเวลานาน (1-10ms) อย่างไรก็ตามสถานการณ์ได้ดีขึ้นมากเมื่อเร็ว ๆ นี้และ pre-emption บางอย่างถูกเปิดใช้งานเป็นประจำในเมล็ด ฉันยังสงสัยว่าเคอร์เนลที่ได้รับการปรับปรุงตามเวลาจริงสามารถใช้กับ Raspberry Pi ได้อย่างง่ายดายและสามารถเลือกฮาร์ดแวร์และไดรเวอร์ที่เชื่อมต่อได้อย่างระมัดระวัง
มาตรฐานความน่าเชื่อถือของฉันคือควรอยู่ในช่วงความคลาดเคลื่อนอนุกรมปกติ 9600 บอดเป็นส่วนใหญ่ ขณะนี้ฉันไม่แน่ใจว่ามีข้อผิดพลาดจำนวนเท่าใดที่สามารถใช้ได้ในทางปฏิบัติ แต่มีการส่งสัญญาณซ้ำและการตอบรับในโปรโตคอลดังนั้นจึงค่อนข้างทนได้
ดังนั้นคำถามของฉันคือ:
- ซอฟต์แวร์ userland สามารถเชื่อถือได้ bit-bang 9600 baud speed หรือไม่?
- สิ่งนี้ต้องการเคอร์เนลที่ถูกแก้ไขตามเวลาจริงหรือไม่?
- ฉันควรคาดหวังข้อผิดพลาดกี่ข้อโดยทั่วไป
นอกจากนี้ยังมีรหัสตัวอย่างใด ๆ ที่ทำซีเรียลผ่าน GPIO Bit Banging ฉันรู้จัก Arduino SoftSerial แต่มันเกี่ยวกับมัน
ในกรณีที่ต้องการ จำกัด คำถาม: นี่ไม่ใช่อินเทอร์เฟซแบบอนุกรมมาตรฐานและ UART ของ Raspberry Pi ใช้สำหรับลิงค์อนุกรมอื่นแล้ว ฉันไม่ต้องการคำตอบที่แนะนำฮาร์ดแวร์ภายนอก (เช่น Gertboard หรือ Arduino) หรือคำตอบที่ขึ้นอยู่กับ UART
reliability
อาจขึ้นอยู่กับการกระทำและความคาดหวัง