ฉันต้องการสื่อสารระหว่าง PIC18F4550 ของฉันกับพีซีของฉัน แต่ฉันติดอยู่ว่าฉันควรใช้ UART หรือ USART เป็นระยะทางไกล เมื่อใดจะมีประโยชน์มากกว่าที่จะใช้อันใดอันหนึ่งแทนที่จะใช้อันอื่น?
ฉันต้องการสื่อสารระหว่าง PIC18F4550 ของฉันกับพีซีของฉัน แต่ฉันติดอยู่ว่าฉันควรใช้ UART หรือ USART เป็นระยะทางไกล เมื่อใดจะมีประโยชน์มากกว่าที่จะใช้อันใดอันหนึ่งแทนที่จะใช้อันอื่น?
คำตอบ:
สำหรับวัตถุประสงค์ของคุณ UART และ USART เป็นสิ่งเดียวกัน UART ย่อมาจากสากลตรงกันรับ / ส่งสัญญาณ S เพิ่มเติมใน USART ย่อมาจากแบบซิงโครนัส เป็นเพียงความสามารถที่เพิ่มขึ้นเล็กน้อย Microchip ให้โมดูลเพื่อให้มีประโยชน์มากขึ้นในบางกรณี ความสามารถพิเศษนั้นใช้ไม่ได้ในกรณีของคุณ
พอร์ต PC COM ใช้เวลาเพียง UART ในการพูดคุย ความจริงที่ว่า USART อาจถูกใช้ในลักษณะที่แตกต่างกันนั้นไม่เกี่ยวข้องกับคุณยกเว้นว่าคุณอาจมีบิตการกำหนดค่าเพิ่มเติมบางอย่างที่ต้องตั้งค่าอย่างถูกต้อง
คำตอบสั้น ๆ : ใช้สิ่งที่คุณชิปมี
ในการตรวจสอบคำถามทั้งหมดจำเป็นต้องถอดรหัสคำย่อ:
U niversal ซิงโครR eceiver T ransmitter เป็นแบบดั้งเดิม "พอร์ตอนุกรมของคุณ" มันเป็นแบบอะซิงโครนัสในแง่ที่ว่ามีเพียงสัญญาณเดียวเท่านั้นที่เกี่ยวข้อง - ไม่มีการส่งสัญญาณนาฬิกาและตัวรับสัญญาณจะต้องกู้คืนนาฬิกา
ในทางตรงกันข้ามU niversal S ynchronous AซิงโครนัสR eceiver T ransmitter เป็นอุปกรณ์อเนกประสงค์ที่มีโหมดอะซิงโครนัสสไตล์ UART มากขึ้นแต่สามารถเลือกกำหนดค่าให้ทำงานในโหมดซิงโครนัสที่นาฬิกาถูกส่งไปพร้อมกับข้อมูล ขึ้นอยู่กับความสามารถซึ่งอาจรวมถึงการทำงานร่วมกันกับรูปแบบอนุกรมที่รู้จักกันดีเช่น SPI หรือ I2S
MCU บางตัวอาจเสนออุปกรณ์ต่อพ่วงทั้งสองประเภท สำหรับความต้องการซีเรียลแบบอะซิงโครนัสขั้นพื้นฐานคุณสามารถเลือกได้ อย่างไรก็ตามทางเลือกของคุณอาจได้รับอิทธิพลจากพินที่อุปกรณ์ต่อพ่วงที่กำหนดสามารถใช้งานได้ความต้องการอื่น ๆ ในระบบ ฯลฯ bootloader ROM จากโรงงานอาจใช้งานได้กับอุปกรณ์ต่อพ่วงบางตัวเท่านั้น อาจมีความแตกต่างในการสนับสนุนบัฟเฟอร์ความยาวของคำสนับสนุนแพริตีสัญญาณควบคุมที่เกี่ยวข้อง ฯลฯ และอินเทอร์เฟซซอฟต์แวร์อาจแตกต่างกันอย่างสมบูรณ์ระหว่างสอง
โดยพื้นฐานแล้วมันมีสิ่งเดียวกันสำหรับไมโครคอนโทรลเลอร์ของคุณ
USART ย่อมาจากเครื่องรับ / ส่งสัญญาณแบบอะซิงโครนัสและซิงโครนัสสากล UART ย่อมาจาก universal asynchronous receiver / transmitter
การส่งข้อมูลแบบอะซิงโครนัสจะใช้เวลาส่วนใหญ่ในโปรโตคอลการสื่อสารนี้ การส่งข้อมูลแบบซิงโครนัสนั้นไม่ค่อยได้ใช้เพราะคุณมีโปรโตคอลการสื่อสารแบบซิงโครนัสที่ดีกว่ามากเช่น SPI & I2C
ไมโครคอนโทรลเลอร์ของคุณ (MCU) มีตัวรับ / ส่งสัญญาณ Universal Synchronous / Asynchronous (USART) หน่วยการทำงานนี้รองรับโหมดการสื่อสารแบบซิงโครนัสและโหมดการสื่อสารแบบอะซิงโครนัส
ในโหมดซิงโครนัสเครื่องส่ง Tx เชื่อมต่อกับเครื่องรับ Rx ด้วยสายนาฬิกาและสายข้อมูล หนึ่งครั้งต่อช่วงเวลาของ CLOCK Tx จะส่งบิตอีกครั้งบน DATA และ Rx ใช้บิตอื่นจาก DATA เวลาการถ่ายโอนจะถูกควบคุมโดย CLOCK และเป็นที่รู้จักกันดีในทั้ง Tx และ Rx ดังนั้นทั้ง Tx และ Rx สามารถใช้อัตราบิตสูงกว่าในโหมดอะซิงโครนัส
อย่างไรก็ตามจำเป็นต้องใช้สายไฟ / ตัวเชื่อมต่อสองตัวแทนหนึ่งตัวเอียงและกระวนกระวายใจมากเกินไประหว่าง CLOCK และ DATA ทำให้ได้รับข้อมูลที่เสียหาย ระยะเวลาภายในไดรเวอร์บรรทัดและตัวรับสัญญาณที่มี CLOCK และ DATA จะต้องจับคู่อย่างใกล้ชิดเพื่อลดความเบ้นี้ ทั้งอินเทอร์เฟซและปัจจัยสองสายจะโดดเด่นกว่าในระยะทางที่ไกลกว่าด้วยสายเคเบิลยาวและ / หรือการเชื่อมต่อที่หลากหลาย
ในโหมดอะซิงโครนัสตัวส่ง Tx เชื่อมต่อกับตัวรับ Rx ด้วยสายข้อมูล หนึ่งครั้งต่อช่วงเวลาบิต Tx ส่งบิตอีกครั้งบน DATA และ Rx ใช้บิตอื่นจาก DATA ระยะเวลาการถ่ายโอนนั้นควบคุมโดยออสซิลเลเตอร์แยกความถี่ใน Tx และ Rx ซึ่งแต่ละตัวไม่รู้จักกันและจะแตกต่างกันเล็กน้อย ดังนั้นอัตราบิตที่เชื่อถือได้สูงสุดต่ำกว่าโหมดซิงโครนัส
ในช่วงเริ่มต้นของทุกไบต์ใหม่ Rx ใช้การเปลี่ยนบิตเริ่มต้น STOP-START เพื่อซิงโครไนซ์กับจังหวะลำดับบิตที่เข้ามาใหม่ สิ่งนี้ทำให้ความล่าช้าจากไดร์เวอร์ / ตัวรับสัญญาณสายเคเบิลและตัวเชื่อมต่อไม่เกี่ยวข้องกับช่วงเวลาบิตแม้ว่าจะไม่ได้คุณภาพบิต ต้องการเพียงสายเดียวต่อสัญญาณการสื่อสารแทนที่จะเป็นสองเส้นลดค่าใช้จ่ายในสายเคเบิลตัวเชื่อมต่อและตัวขับ / ตัวรับสัญญาณของสาย
ดังนั้นขึ้นอยู่กับค่าใช้จ่ายที่ยอมรับได้ระยะทางที่คุณกำลังเดินทางและความสามารถของ Tx และ Rx พีซีของคุณมีแนวโน้มที่จะรองรับเฉพาะโหมดอะซิงโครนัสบนพอร์ต COM มาตรฐานซึ่งจำเป็นต้องมีพอร์ตพิเศษ (PCIe หรือ USB, USB ที่เป็นไปได้) สำหรับโหมดซิงโครนัส