1. 單片機的幾種傳輸方式的總結
學習了51單片機以及STM32後總結下單片機與外設或者上位機通訊的幾種傳輸方式
串口、COM口是指的物理介面形式(硬體)。而TTL、RS-232、RS-485是指的電平標准(電信號)
串列通信:指數據一位一位順序傳送
串列介面:簡稱串口(COM口)
並行通信:一組數據的各數據位在多線上同時被傳輸
並行介面:一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一般用於MCU
串列通信分為:
單工:數據單項傳送
半雙工:數據能雙向傳送但不能同時
全雙工:數據能同時雙向傳送
通用的、及支持同步也支持非同步的接收、發送「模塊」,在晶元內部,與SPI、I2C一起構成單片機的匯流排「枝幹」,對於串口,串口通信指串口按位(bit)發送和接收位元組,盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
串列通信技術標准EIA-232/485也就是以前所稱的RS-232/485。
232是PC機與通信工業中應用最廣泛的一種串列介面,RS232單端通信,傳輸距離可達15米,最高速率20Kbps。
RS485傳輸速率為10Mbps,最大傳輸距離1219米,,採用二線制時可實現真正的多點雙向通信,而采
用四線連接時只能實現點對多點通信,無論四線還是二線連接方式匯流排上可接多達 32 個設備。
串列通信傳輸速率用於說明傳輸的快慢。在串列通信中,數據是按位進
行傳送的,因此傳輸速率用每秒鍾傳送格式位的數目來表示,稱之波特率
(band rate)。每秒傳送一個格式位就是 1 波特。常用的波特率有:4800、
9600、19200、115200 波特。
串口三個腳:TX、RX、GND
IIC匯流排是一種兩線式串列匯流排,支持多主控,其中任何能夠進行發送和接收的設備都可以成為主匯流排,一個主控能夠控制信號的傳輸和時鍾頻率,當然在任何時間點上只能有一個主控。IIC匯流排是由數據線SDA和時鍾SCl構成的串列匯流排,可發送和接收數據,在CPU與被控IC之間,IC與IC之間進行雙向傳送,最高傳送速率100Kbps,各種被控制電路均並聯在這條匯流排上,每個設備模塊都有唯一的地址,IIC匯流排上的每一個設備模塊既是主控器或被控器,又是發送器或接收器,這取決於你要實現的功能是怎樣的。
CPU發出的控制信號分為地址碼和控制量兩部分
IIC匯流排傳輸過程中有三種信號:起始信號,終止信號,應答信號。
起始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據;
終止信號:SCL 為低電平時,SDA 由低電平向高電平跳變,結束傳送數據;
應答信號:接收數據的 IC 在接收到 8bit 數據後,向發送數據的 IC 發出
特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號後,
等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情
況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單
元出現故障。
SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。
注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。
單片機通訊方式
2. pic單片機用串口發送接收數據
當接收到數據時,RCIF會被置1,如果讀了接收結果RCREG,則系統自動會把RCIF清0。
程序把清RCIF語句屏蔽了,但TXREG=RCREG;這一句就是讀接收結果(把接收結果RCREG送到發送寄存器TXREG里),所以會自動讓RCIF清0,只有新數據來時,RCIF才會置1,才能再進入中斷。
如果把發送的語句改為TXREG=0X12(或其他不是RCREG的寄存器的變數),因此中斷後沒有讀取接收數據,也就不能清RCIF,RCIF仍然為1,即中斷服務程序退出後,還存在的中斷請求,因此就會馬上進入中斷,從而出現不停的發送數據的現象。
解決的辦法有2:
1、讓原來屏蔽的語句RCIF=0有效;
2、空讀RCREG,如定義一個變數A(unsigned char A),在發送數據後或前,增加A=RCREG就可以了。
3. 單片機怎樣通過串口向計算機發送數據
單片機怎樣通過串口向計算機發送數據:
單片機可以實現與計算機的發送和接收。首先,要正確配置單片機的串口,包括波特率、使用時鍾源、COM口、數據位位數、奇偶校驗位、停止位位數等,同時要保證計算機的配置和單片機的一致。然後,把要發送的數據送到發送緩存,只能一個位元組一個位元組的發送。啟動單片機發送,就可以完成發送操作。如果打開接收中斷,計算機發送數據過來的時候,就會進入到接收中斷,單片機進入接收數據狀態。
要注意的是,單片機是TTL電平,而計算機是232電平,所以在硬體電路連接上要有電平轉換晶元,常用的有MAX232等。
4. 關於單片機串口同時收發數據的時序問題
回答這些問題之前,你要先復習一下串口部件的結構和數據收發的原理。
1.不管你有沒有處理RI,還是在繼續接收數據的。數據接收完成之後,數據從移位寄存器轉移到數據寄存器中,這時才產生中斷,但移位寄存器是空的,還可以繼續接收數據。
2.你想讓串口的收和發同時工作,那就只能使用中斷方式,你用查詢方式是不可能的。如果是使用「半雙工」,那就簡單些:A查詢方法發送數據,B以查詢方式接收數據,反之依然,這樣的缺點是比較耗時,沒有實時性。
後面的幾個問題就用2來回答了,就是用中斷的方法來接收和發送數據,這樣不管你是不是同時收發的,都能處理。按照你的例子說,上位機要發送命令來查詢下位機的結果,那簡單,下位機必須要一個緩沖區來保存收到的數據,然後在主程序中處理緩沖區中的內容,再根據情況向上位機發送數據。當然下位機的發送也可以使用緩沖區來保存待發送的數據。
使用緩沖區的好處就是能保證不發送遺漏。比如上位機可以一次發送多個命令給下位機,這樣就是在接收緩沖區中形成命令隊列,即「排隊」,下位機逐一處理隊列中的每一條命令,然後將對應結果送入發送緩沖區中「排隊」,再有串口發送中斷逐一將其中的位元組發送出去。
5. 串口發送數據是單片機發送數據嗎
通常,具備串列通訊埠的設備都可以發送和接收數據,那麼單片機自然也可以發送串列數據。
PC電腦具有串列通訊埠,也能發送和接收串列數據,電腦和電腦之間,單片機和單片機之間,電腦和單片機之間都能發送和接收數據。當然還有其它設備也可以。
所以說單片機能夠發送數據,但串口發送數據不是只有單片機才能發送數據。
6. 51單片機串口通信是全雙工的,但是為什麼又說它的發送和接受不可以同時進行呢
51單片機串口通信是全雙工的,發送和接受可以同時進行。不可以同時進行的是半雙工。
全雙工方式分別由兩根不同的傳輸線傳送數據時,通信雙方都能在同一時刻進行發送和接收操作,通信系統的每一端都設置了發送器和接收器,因此,能控制數據同時在發送和接受兩個方向上傳送。
半雙工使用同一根傳輸線既作接收又作發送,雖然數據可以在兩個方向上傳送,但通信雙方不能同時收發數據。採用半雙工方式時,通信系統每一端的發送器和接收器,通過收/發開關轉接到通信線上,進行方向的切換,因此,會產生時間延遲。收/發開關實際上是由軟體控制的電子開關。
(6)單片機串口發送接收擴展閱讀:
全雙工方式在發送設備的發送方和接收設備的接收方之間採取點到點的連接,這意味著在全雙工的傳送方式下,可以得到更高的數據傳輸速度。
全雙工方式無需進行方向的切換,因此,沒有切換操作所產生的時間延遲,這對那些不能有時間延誤的互動式應用(例如遠程監測和控制系統)十分有利。這種方式要求通訊雙方均有發送器和接收器,同時,需要2根數據線傳送數據信號。