單線收發 | 硬件UART
1.應用環境
應用電路中,由于空間限制,無法采用兩線通信接口,只允許單線通信,而采用單總線(1-wire)協議,存在程序繁瑣、速度慢等問題,采用自定義單總線協議也不可取。
因此我們提供該問題解決方法,使用通用硬件串口,將原來TX、RX合為一線通信;程序上與原來使用方法一樣,只需簡單修改IO操作,實現最大通信波特率可達500K(最大波特率由MCU決定)。
2.軟件實現
只有一線,不能同時收發,此時必須存在一個主機A,和從機B。
開始A處于發送狀態,B處于接收狀態,在A發送后,A切換為接收狀態,不再發送,B收到數據后,B開始發送,B發送完成切換為接收狀態。
如果A發送后,A在一定時間內沒有收到B返回的數據,可以在A程序中添加超時,A再次發送。
由于TX、RX接在一起,所以在RX接收前,應初始化串口,TX IO設置為輸入、不上拉狀態,避免影響信號;在TX發送前,應關閉串口接收、關閉串口中斷,TX IO設置為推挽輸出,RX IO設置為輸入不上拉,避免影響信號。
芯片型號 | ROM (bytes) | RAM (bytes) | IO | ADC (12bit) | HIRC | Timer | 通訊接口 | 封裝 |
MC51F003A4 | 16K | 512 | 18 (最多) | 12 | 32M | 4*16bit | SPI:1 UART:2 | SOP20/16/8 TSSOP20 |