為什么都喜歡用串口通訊?那 RS485,SPI 和 I2C 呢?

2024/4/9 16:13:41??????點擊:

     

       1、為什么都喜歡用串口通訊?


       之前在做單片機產(chǎn)品的時候,用的最多的就是串口通訊,凡是單片機的外設,優(yōu)先選用帶串口功能的,比如藍牙模塊,WIFI模塊,4G模塊,電表和顯示屏等等。

 

       為什么都喜歡用串口通訊?


       因為簡單啊,通常僅需2條通訊線,1條電源線和1條地線相連。






       雙方約定好相同的速度,比如115200bps,以這種數(shù)據(jù)包的形式給對方發(fā)送數(shù)據(jù),一次發(fā)送8位,也就是一個字節(jié)的數(shù)據(jù)。


     






      2、串口通訊的缺點  
       雖然串口簡單,但是它也有缺點:


       1、遠距離信號不能傳輸;
       2、通訊速度較慢;
       3、只支持一對一通訊,不能一對多通訊。


       所以,針對這幾個缺點,我們需要采用其它的方式來彌補串口的不足。



      3、RS232,RS485,SPI通訊  


      3.1、RS232,RS485


       像我開始舉的例子,單片機跟外設之間距離短可以正常通信,要是我們長距離傳輸數(shù)據(jù)就容易受到干擾,導致通信異常,這時候聰明的人類就發(fā)明了RS232和RS485通信。

       .RS232通信距離可達30m左右;


       .RS485的通信距離理想情況下能超過1000m,且485的總線上可掛多個負載。







       通常,串口通信最大的波特率為115200


       如果沒有校驗位,就應該除以10,得到的是每秒字節(jié)數(shù):115200÷10= 11520 (字節(jié)/秒)。再除以 1024,就是每秒 KB 數(shù):11520÷1024=11.25 (KB/秒)。

      
       如果有一位奇偶校驗位,就應該除以 11,得到的是每秒 KB 數(shù):115200÷11÷1024= 10.27 (KB/秒)。


      所以串口的速度是非常的慢,之所以這么慢是因為早期的單片機頻率比較低,時鐘精度也不高,所以通信雙方的波特率不能做到完全一致,速率太快就會通信異常。


      3.2、SPI


      那如果在通信雙方之間加一個clock時鐘信號,不給通信雙方約定相同的速度,我們只需根據(jù)時鐘信號的上升沿進行發(fā)送接收數(shù)據(jù),大大提高了通信速率,于是產(chǎn)生了SPI通信,它可以輕松突破10M。





      3.3、I2C


      如果我們的單片機要同時控制多個外設,用很多串口分別連接是很浪費的,要是一條通信線上可同時掛多個外設,那是相當?shù)墓?jié)約資源,所以就產(chǎn)生了I2C。