標題: STM32C8T6單片機如何讓三串口同時通信不出現(xiàn)相互干擾? [打印本頁]

作者: 皮皮蝦不p    時間: 2022-1-4 16:53
標題: STM32C8T6單片機如何讓三串口同時通信不出現(xiàn)相互干擾?
目前在做一個工業(yè)控制電機同時還要采集傳感器數(shù)據(jù)項目遇到個問題,單片機芯片用的stm32c8t6用了3個串口,協(xié)議是MODBUS_RTU串口協(xié)議,一個串口接MCGS屏幕就地控制(就地屏幕是主機,板子是從機),一個串口接遠程控制(遠程屏幕是主機,板子是從機),還有一個串口接傳感器接收數(shù)據(jù)(板子是主機,傳感器是從機),屏幕是500ms采集一次 200ms等待時間,遠程也是一樣。但是會出現(xiàn)一個問題就是遠程控制的時候,經常會打斷就地屏幕上的數(shù)據(jù)采集,屏幕是MCGS,一旦被打斷就會顯示通信錯誤。如何能做到3個串口同時通信(一直收發(fā)數(shù)據(jù))而互不干擾,沒有用ucos,寫的裸程序。有沒有大佬給個思路...感謝
作者: Hephaestus    時間: 2022-1-4 17:33
接收中斷里面只負責接收數(shù)據(jù)放到隊列里面,主循環(huán)里面處理接收數(shù)據(jù)。
作者: AUG    時間: 2022-1-4 18:09
每個串口獨立中斷,像沙發(fā)所說,中斷里面做數(shù)據(jù)接收,弄3個循環(huán)隊列存儲數(shù)據(jù),在主函數(shù)里面去做相應的處理就可以了。
作者: 皮皮蝦不p    時間: 2022-1-5 08:51
AUG 發(fā)表于 2022-1-4 18:09
每個串口獨立中斷,像沙發(fā)所說,中斷里面做數(shù)據(jù)接收,弄3個循環(huán)隊列存儲數(shù)據(jù),在主函數(shù)里面去做相應的處理 ...

我去試一試
作者: 皮皮蝦不p    時間: 2022-1-5 08:51
Hephaestus 發(fā)表于 2022-1-4 17:33
接收中斷里面只負責接收數(shù)據(jù)放到隊列里面,主循環(huán)里面處理接收數(shù)據(jù)。

我去試試,十分感謝
作者: 皮皮蝦不p    時間: 2022-1-5 08:52
AUG 發(fā)表于 2022-1-4 18:09
每個串口獨立中斷,像沙發(fā)所說,中斷里面做數(shù)據(jù)接收,弄3個循環(huán)隊列存儲數(shù)據(jù),在主函數(shù)里面去做相應的處理 ...

非常非常謝謝
作者: 黃youhui    時間: 2022-1-5 08:55
我覺得你應該學習一下硬漢的USART_FIFO模式,據(jù)說他最多能同時驅動6個串口。硬漢永遠的神

usart_fifo.rar

7.35 KB, 下載次數(shù): 40


作者: 皮皮蝦不p    時間: 2022-1-5 11:21
Hephaestus 發(fā)表于 2022-1-4 17:33
接收中斷里面只負責接收數(shù)據(jù)放到隊列里面,主循環(huán)里面處理接收數(shù)據(jù)。

但是我有一個定時器要給傳感器每200ms發(fā)送命令,這個會影響main函數(shù)里面的操作嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1