聯(lián)系我們???Contact

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

2024/4/9 16:13:41??????點(diǎn)擊:

     

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


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

 

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


       因?yàn)楹唵伟?,通常僅需2條通訊線,1條電源線和1條地線相連。






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


     






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


       1、遠(yuǎn)距離信號(hào)不能傳輸;
       2、通訊速度較慢;
       3、只支持一對(duì)一通訊,不能一對(duì)多通訊。


       所以,針對(duì)這幾個(gè)缺點(diǎn),我們需要采用其它的方式來彌補(bǔ)串口的不足。



      3、RS232,RS485,SPI通訊  


      3.1、RS232,RS485


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

       .RS232通信距離可達(dá)30m左右;


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







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


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

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


      所以串口的速度是非常的慢,之所以這么慢是因?yàn)樵缙诘膯纹瑱C(jī)頻率比較低,時(shí)鐘精度也不高,所以通信雙方的波特率不能做到完全一致,速率太快就會(huì)通信異常。


      3.2、SPI


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





      3.3、I2C


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