之前的電子工程師知識結構體系構建系列文章,還沒有結束。后期在我不忙的時候還是會跟進。今天寫寫串口,最近項目上遇到些問題,讓我覺得有必要花時間總結一下,因為永遠不要忽視細節的重要性。所以花少量的時間,說一說。給大家提供一些思路,同時也是我自己的一個回顧。
以下主要從兩個方面來展開:
一、串口RS232 通信的重要性。
二、RS232調試中的一些小技巧。
一、串口RS232通信呢,在單片機開發中占有非常非常重要的地位。為什么這么說呢?
1、RS232通信是人與機交互的重要渠道。
眾所周知,我們的代碼在編寫完成之后一定存在著大量的bug。程序寫完了不叫完成,調試運行穩定了才算成功。那么很多時候,程序的運行效果我們無法能夠直觀的看到,怎么辦?串口打印!把程序中定義的變量數據通過串口打印的方式,把它們返回到電腦,通過串口助手來幫助我們判斷程序的運行效果。有人說,還可以仿真調試。是的,確實是也可以仿真調試。這個是個人習慣使然,但是起碼這又是一項調試的技能。更何況,我曾經遇到過很多次仿真的過程中出現這樣那樣的錯誤,會有些不穩定的因素在里面。我更加信任這種串口打印的方式。
2、RS232是設備受控與控制的重要的數據傳輸途徑。
這個沒什么可說的,通過串口采集設備中傳感器或者其他終端中的一些數據啦,上位機通過串口給設備發送控制命令啦。這一發一收之間,有太多的例子可以列舉。
3、RS232是其他多種通信方式的基礎。
也有人說,RS232都多少年的老技術了,現在電腦上都沒有這個接口了,老吊呀了。但是我不這么認為:
1)、串口RS485是不是從RS232的基礎上發展起來的。正是因為RS232只能實現點對點的傳輸的這種局限性,才有了RS485這種一對多的傳輸方式。在此基礎上,才又有了Modbus協議首先在485通信上實現?
2)、目前市面上的藍牙通信、wifi通信,這些目前比較新的通信方式中,要在單片機上實現,還是需要通過串口來進行轉接。
二、串口調試中的一些小技巧
1、判斷串口芯片是否正常。參見MAX232的框圖,使用萬用表測量2腳和6腳,只要2腳的電壓在+8V~+9V之間,6腳在-8V~-9V之間,就基本可以斷定這個芯片是好的。這個方法可以在串口通信故障的時候,用來排查硬件原因。
2、當串口調試不通的時候,可以將TX線和RX線進行短接,這樣相當于說,發送了什么數據,就可以原樣接收什么數據。如果能夠完成這一動作,可證明發送方一端的通信是正常的。
3、用printf實現串口打印。
通過把printf函數和相應使用的串口對應起來,可實現串口打印功能。調試更加方便。我所用的是PIC32單片機.具體實現方法如下:
首先在程序文件中包含 #include "stdio.h" 這個標準輸入輸出的頭文件。然后在程序中添加如下函數代碼:
注意,這里使用的是哪個串口,就把對應的串口寄存器對應到這里。這里意思是對串口進行重新定向。以便printf能夠找到要打印哪個串口里面的數據。
不同的單片機可能實現起來方法不太一樣。
4、串口調試中,最基本也是最容易忽視的一點,不要帶電插拔。串口非常容易因為帶電插拔而損壞。不要因為懶惰而僥幸,很可能下一次的插拔之后,串口芯片就廢了。
5、串口通信的距離大概是50英尺,大概15米的樣子。當然這是個理論數據。常規的那種灰白色的串口線,我試過三根串起來的距離,通信還沒有問題。當然,這個傳輸的距離和通信的波特率是有關系的。如果通信距離越遠,那波特率相應的設置就要低一些。否則數據就會出現亂碼。
大家有沒有更好的經驗與心得呢?歡迎留言,一起學習,進步!