多路串口轉(zhuǎn)一路串口 UART有沒(méi)有辦法實(shí)現(xiàn)一對(duì)多通信?
UART有沒(méi)有辦法實(shí)現(xiàn)一對(duì)多通信?可以同時(shí)使用一個(gè)發(fā)射機(jī)和多個(gè)接收機(jī),即一主多從結(jié)構(gòu),單向傳輸;由于UART端口不同于IIC端口,因此沒(méi)有地址概念。當(dāng)從機(jī)應(yīng)答(只有一個(gè)響應(yīng))時(shí),主機(jī)不知道它是誰(shuí)。那么
UART有沒(méi)有辦法實(shí)現(xiàn)一對(duì)多通信?
可以同時(shí)使用一個(gè)發(fā)射機(jī)和多個(gè)接收機(jī),即一主多從結(jié)構(gòu),單向傳輸;由于UART端口不同于IIC端口,因此沒(méi)有地址概念。當(dāng)從機(jī)應(yīng)答(只有一個(gè)響應(yīng))時(shí),主機(jī)不知道它是誰(shuí)。那么,您想做什么
主機(jī)按一定的時(shí)間間隔發(fā)送查詢包,并以一定的數(shù)據(jù)格式(通信協(xié)議)填寫查詢包,通常包括:起始字符、從機(jī)地址、數(shù)據(jù)、校驗(yàn)字節(jié)、結(jié)束字符等
每個(gè)從機(jī)都處于接收狀態(tài)。主機(jī)發(fā)送查詢數(shù)據(jù)包后,立即切換到接收狀態(tài)。每個(gè)從機(jī)同時(shí)接收來(lái)自主機(jī)的數(shù)據(jù),并分析數(shù)據(jù)包中的地址是否與自己的地址相同。如果它是不同的,它將不響應(yīng)并且仍然處于接收狀態(tài)。如果相同,則發(fā)送應(yīng)答數(shù)據(jù)包。(在應(yīng)答數(shù)據(jù)包中,它還包含從機(jī)地址,在接收到應(yīng)答后,主機(jī)知道這是從機(jī)根據(jù)地址信息發(fā)送的數(shù)據(jù)。處理完數(shù)據(jù)后,主機(jī)向從機(jī)詢問(wèn)其他地址,從機(jī)一一應(yīng)答。從機(jī)從主機(jī)發(fā)送的查詢信息中獲取來(lái)自主機(jī)的數(shù)據(jù)。實(shí)現(xiàn)了多機(jī)雙向通信。
485一主多從程序怎么寫,要求雙向通信?
多機(jī)通信需要協(xié)議支持。當(dāng)然,有許多這樣的協(xié)議,如modbus,TCP/IP等
硬件可以是TTL,RS232,RS485,can等。我將不描述硬件。實(shí)現(xiàn)多機(jī)通信的關(guān)鍵是地址和幀中斷。其中大部分是程序問(wèn)題,暫時(shí)還不清楚。您可以嘗試了解Modbus RTU。該協(xié)議易于理解和實(shí)現(xiàn)。