新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR串口通信

        AVR串口通信

        作者: 時間:2016-11-13 來源:網絡 收藏
        用M8做了一個485通信,調試時發現,PC端接收數據不正常,而另一個同樣的板子接收的數據時正常。

        測量了PC端串口接收數據的管腳波形,正常,但是接收數據不對,奇怪!

        本文引用地址:http://www.104case.com/article/201611/316506.htm

        此時發送板的M8工作電壓為3.3V,使用內部晶振。

        將發送版的M8的工作電壓改為5V后,PC端接收數據正常了。

        接收數據的正確與否和M8的工作電壓有關系,而工作電壓的大小會影響什么呢?

        有兩個地方:

        1、IO口的電平

        難道IO口的電平會影響數據的正確與否,這個問題可以排除,原因如下:

        1)、MAX485是5V供電的,但是它可以和3.3V電平匹配。

        2)、接收端的波形是對的,說明數據發出去是對的。

        2、影響內部晶振

        內部晶振受工作電壓影響很大,進而影響了串口通信的波特率,這就是為什么波形是對的,而被PC識別出的數據卻是錯誤的。

        知道原因了,就找一下解決辦法了,根本問題在于波特率上,也就是晶振上,解決辦法如下:

        1、系統采用5V供電

        不合理,因為板子上還有其他的芯片與M8通信,這樣就不敢保證電平匹配了。

        2、使用外部晶振

        不合理,因為該管腳引腳被用了,要是加的話只能飛線。

        3、寫校準字

        需要自己測出校準字是多少。

        合理,不需要更改硬件,但不一定能保證成功,只能實驗了。

        方法如下:

        將0~255的數一次寫到OSCCAL寄存器中,并將其通過轉口發到PC機的串口調試終端上,
        找出連續正確的數字,為保證正確,應該去掉走后一個正確的數(本例子中為BD)。

        這是測得的一串連續對的數據:

        A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD FE FF

        所以校準字可選:A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC

        總結經驗:

        1、M8使用內部晶振時,其振蕩頻率受工作電壓影響很大。

        如果使用了內部晶振,還要做串口通訊,建議是用5V工作或者一定要校準晶振,最好使用外部晶振,

        這樣更安全。

        2、串口接收的數據如果一直穩定的錯,多半原因是波特率的問題了。



        關鍵詞: AVR串口通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 克什克腾旗| 汝城县| 蕲春县| 哈密市| 肥乡县| 四子王旗| 威远县| 牙克石市| 余姚市| 临桂县| 扶绥县| 凤阳县| 南召县| 通渭县| 南宫市| 铜陵市| 鲁甸县| 剑河县| 温泉县| 正定县| 江阴市| 辽阳市| 读书| 宣武区| 鹤庆县| 高台县| 淳化县| 固原市| 东源县| 绥芬河市| 佛学| 莱西市| 青海省| 威宁| 永昌县| 方正县| 长垣县| 贵州省| 柞水县| 磴口县| 芜湖县|