ฉันเป็นสมาชิกระดับปริญญาตรีของทีมวิจัยที่ทำงานในโครงการที่เกี่ยวข้องกับ ASIC ที่ส่งสัญญาณ RF และตัวรับสัญญาณไร้สายซึ่งควรส่งข้อมูลไปยังพีซีในที่สุด
รับผลลัพท์ที่รวดเร็วอย่างต่อเนื่องไม่ตรงกันสัญญาณอนุกรมที่ไม่ได้มาตรฐาน (เช่นไม่ SPI, I2C, UART ฯลฯ ) เพื่อให้งานของฉันคือการเขียนซอฟต์แวร์ไมโครคอนโทรลเลอร์เพื่อติดต่อรับสัญญาณไปยังเครื่องคอมพิวเตอร์ ขณะนี้วิธีการของฉันคือการใช้การขัดจังหวะแบบ Edge-Trigger เพื่อวางข้อมูลในบัฟเฟอร์แบบวงกลมและทำกระบวนการถอดรหัสแบบทีละบิตในลูปหลัก ไมโครคอนโทรลเลอร์จะต้องส่งออกข้อมูลนี้พร้อมกันโดยใช้ USB (พอร์ต com เสมือน) ไปยังคอมพิวเตอร์
นี่คือปัญหาที่ฉันมีและสิ่งที่ฉันคาดการณ์ไว้:
ฉันไม่สามารถประมวลผลข้อมูลบัฟเฟอร์ได้เร็วพอแม้จะใช้โปรเซสเซอร์ ARM Cortex M3 ที่ทรงพลังมากของฉัน บิตเรตคือ 400 Kbps (2.5 us / bit) สำหรับการอ้างอิงที่เหลือเพียง 180 รอบต่อบิต (รวมถึงการถอดรหัสและ ISR ซึ่งมี ~ 30 รอบอุ๊ยค่าใช้จ่าย!) นอกจากนี้ MCU ยังต้องจัดการกับงานอื่น ๆ อีกมากซึ่งจะทำการสำรวจในการวนซ้ำหลัก
ไดรเวอร์พอร์ตเสมือนของ USB นั้นอินเตอร์รัปต์เช่นกัน นี่ทำให้ฉันเกือบแน่ใจว่าในที่สุดไดรเวอร์จะมีตัวประมวลผลถูกขัดจังหวะเป็นเวลานานจนคิดถึง 2.5 microsecond (180 รอบ) ซึ่งอาจมีการส่งบิต ฉันไม่แน่ใจว่าการขัดจังหวะความขัดแย้ง / เผ่าพันธุ์เช่นนี้จะได้รับการแก้ไขตามปกติอย่างไร
ดังนั้นคำถามก็คือสิ่งหนึ่งที่อาจทำเพื่อแก้ไขปัญหาเหล่านี้หรือนี่ไม่ใช่แนวทางที่ถูกต้องเลย? ฉันยินดีที่จะพิจารณาแนวทางการใช้ซอฟต์แวร์เป็นศูนย์กลางเช่นกัน ตัวอย่างเช่นการใช้ชิป USB เฉพาะกับเครื่องสถานะฮาร์ดแวร์บางอย่างสำหรับการถอดรหัส แต่นี่คือดินแดนที่ไม่คุ้นเคย