单片机中的几种通信方式
首先弄懂串行通信和并行通信以及串口通信和并口通信的概念。
串行通行:它是一個(gè)概念,它是指數(shù)據(jù)一位一位地順序傳送,其特點(diǎn)就是通信線路
簡(jiǎn)單,只要一對(duì)傳輸線就可實(shí)現(xiàn)雙向通信,適用于遠(yuǎn)距離通信,但傳輸速度慢。它
包括普通的串口通信,I2C,SPI,UART...
串口通信:是一種實(shí)際通信方式,但是我們可以幾乎看成一樣.
串行接口:簡(jiǎn)稱(chēng)串口,或串行通信接口,或串行通訊接口(通常指com口)。
并行通信:如果一組數(shù)據(jù)的各數(shù)據(jù)位在多條線上同時(shí)被傳輸,那么就是并行通信。
并口接口:就是一種接口,各數(shù)據(jù)位同時(shí)被傳輸,傳輸速度快,效率高,一邊可用于MCU。
串行通信又可分為單工,半雙工和全雙工
單工:信息只能單向傳送。
半雙工:信息能雙向傳送但不能同時(shí)。
全雙工:信息能同時(shí)雙向傳送。
串行通信還可分為同步通信和異步通信
同步通信(兩根線):是把許多字符組成一個(gè)信息組,這樣,字符可以一個(gè)接一個(gè)地傳輸,但是,
在每組信息(通常稱(chēng)為信息幀)的開(kāi)始要加上同步字符,在沒(méi)有信息要傳輸時(shí),要填上空字符,
因?yàn)橥絺鬏敳辉试S有間隙。同步方式下,發(fā)送方除了發(fā)送數(shù)據(jù),還要傳輸同步時(shí)鐘信號(hào),
信息傳輸?shù)碾p方用同一個(gè)時(shí)鐘信號(hào)確定傳輸過(guò)程中每1位的位置
異步通信(一根信號(hào)線,沒(méi)有時(shí)鐘線):是一種很常用的通信方式。異步通信在發(fā)送字符時(shí),所發(fā)送的字符之間的時(shí)間
間隔可以是任意的。當(dāng)然,接收端必須時(shí)刻做好接收的準(zhǔn)備。發(fā)送端可以在任意時(shí)刻開(kāi)始發(fā)送字符,
因此必須在每一個(gè)字符的開(kāi)始和結(jié)束的地方加上標(biāo)志,即加上開(kāi)始位和停止位,以便使接收端能夠
正確地將每一個(gè)字符接收下來(lái)。異步通信的好處是通信設(shè)備簡(jiǎn)單、便宜,但傳輸效率較低(因?yàn)殚_(kāi)始位和停止位的開(kāi)銷(xiāo)所占比例較大)。
同步通信與異步通信區(qū)別:
1.同步通信要求接收端時(shí)鐘頻率和發(fā)送端時(shí)鐘頻率一致,發(fā)送端發(fā)送連續(xù)的比特流;異步通信時(shí)
不要求接收端時(shí)鐘和發(fā)送端時(shí)鐘同步,發(fā)送端發(fā)送 ? ? 完一個(gè)字節(jié)后,可經(jīng)過(guò)任意長(zhǎng)的時(shí)間間隔再發(fā)送下一個(gè)字節(jié)。
2.同步通信效率高;異步通信效率較低。
3.同步通信較復(fù)雜,雙方時(shí)鐘的允許誤差較小;異步通信簡(jiǎn)單,雙方時(shí)鐘可允許一定誤差。
4.同步通信可用于點(diǎn)對(duì)多點(diǎn);異步通信只適用于點(diǎn)對(duì)點(diǎn)。
單片機(jī)中的SPI、UART、I2C
1、SPI
????SPI允許單片機(jī)和外圍設(shè)備或者單片機(jī)之間高速同步數(shù)據(jù)傳輸,SPI可以有主機(jī)和從機(jī)模式之選,通信的主從機(jī)之間通過(guò)移位寄存器同時(shí)交換數(shù)據(jù)。目前自己用的以主機(jī)模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
???通信過(guò)程:在設(shè)置好SPI的工作模式:包括SCK頻率(數(shù)據(jù)傳輸速率),工作速度,主從模式,以及數(shù)據(jù)接收發(fā)送對(duì)應(yīng)的時(shí)鐘極性。在主模式下,將SS拉低表示通信的開(kāi)始,然后通過(guò)向SPI數(shù)據(jù)寄存器中寫(xiě)入一字節(jié)的數(shù)據(jù)后自動(dòng)啟動(dòng)時(shí)鐘SCK開(kāi)始進(jìn)行一次通信,通信完成后會(huì)產(chǎn)生相應(yīng)的中斷標(biāo)志,標(biāo)志一個(gè)字節(jié)數(shù)據(jù)的傳送完成。通信完成后將SS腳拉高,表示通信過(guò)程已經(jīng)結(jié)束。
???注意SS引腳的設(shè)置:當(dāng)設(shè)置為從機(jī)模式時(shí),SS引腳應(yīng)設(shè)置為輸入,拉低的時(shí)候SPI才能起作用,拉高的話是消極的SPI模式;在主機(jī)模式下,SS引腳可以設(shè)置,一般應(yīng)設(shè)置為輸出,如果設(shè)置為輸入的話應(yīng)保持為高,否則將不能進(jìn)行正常的主機(jī)模式操作。
2、USART
???USART的操作比較簡(jiǎn)單,主要是設(shè)置波特率,數(shù)據(jù)格式,以及中斷允許位等,值得至于的是其USART IN SPI MODE,在SPI模式下的USART的操作跟SPI操作差不多,主要是Clock的設(shè)置,然后發(fā)送數(shù)據(jù)還是通過(guò)USART的中斷進(jìn)行
3、I2C
???I2C接口是簡(jiǎn)單強(qiáng)大的通信接口,只需要兩根雙向總線(時(shí)鐘和數(shù)據(jù)線),SCL和SDA,即可實(shí)現(xiàn)一個(gè)主機(jī)和最多128個(gè)從機(jī)進(jìn)行通信。模擬I2C接口的過(guò)程:啟動(dòng)I2C,一般是在SCL為高時(shí)將SDA拉低啟動(dòng)數(shù)據(jù)發(fā)送,SDA只有在SCL為低時(shí)才能拉高拉低有效,在SCL為高時(shí)拉高拉低SDA只是用于停止啟動(dòng)I2C通信
串口通信是用來(lái)和系統(tǒng)外部的設(shè)別通信的。比如設(shè)備和設(shè)備之間通信。
SPI,UAR,I2C都是串行通信方式,并行通信方式一般用的少,因?yàn)橹贿m合
短距離,一般用于MCU比較多,因?yàn)镸CU它對(duì)數(shù)據(jù)的傳輸速度有要求,而且
與塔相連的芯片一般會(huì)比較近。
MCU 他的屬性要比CPU(這里指單片機(jī),其他地方應(yīng)該也是) 強(qiáng),它包括CPU的性能,
且還有CPU沒(méi)有的性能。
總結(jié)
以上是生活随笔為你收集整理的单片机中的几种通信方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言-作用域
- 下一篇: Weisfeiler-Leman tes