我正在實現一個簡單的可見光通信模塊,帶有兩個arduinos,作爲發送器和接收器,短文本消息由120個字符組成。我使用曼徹斯特編碼和開關式調製。波特率arduino
總而言之,在我的消息幀中,使用曼徹斯特編碼以及前導和幀結束字節,有2480位。我設置了一個位週期爲500微秒。在接收器端,我將這個位取樣四次,在(500/4)125微秒。據我所知,由於每一位是500 us,所以有2000 bits/s正在從發送器發送,所以波特率爲9600 bits/s應該工作。但是,9600不能正常工作,並且高於115200的38400以上的波特率正在工作,我可以在接收器中正確解碼這條短消息。
任何人都可以請解釋我的行爲?爲什麼9600的波特率無法正常工作,雖然我只是每秒發送2000位數據。
進一步的信息,我已經設置預分頻器爲128,所以ADC採樣頻率是(16MHz/128)/ 13 = 9.6kHz。
非常感謝。
我很困惑。你設置爲9600,38400或115200? Arduino的硬件串行端口?您是否將光接收器直接送入Arduno UART? –
是的,Serial.begin()中的串口。對不起,沒有說清楚。 – Anne