幾個串列埠協議學習整理
一、UART
UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。
嵌入式裝置中常常使用到的是TTL、TTL轉RS232的這種方式。常用的就三根引線:傳送線TX、接收線RX、電平參考地線GND。
1.1 電路示意圖
1.2 通訊協議
將傳輸資料的每個字元一位接一位地傳輸。
起始位:先發出一個邏輯”0”的訊號,表示傳輸字元的開始。
資料位:緊接著起始位之後。資料位的個數可以是4、5、6、7、8等,構成一個字元。通常採用ASCII碼。
奇偶校驗位:資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。
停止位:它是一個字元資料的結束標誌。可以是1位、1.5位、2位的高電平。
空閒位:處於邏輯“1”狀態,表示當前線路上沒有資料傳送。
波特率:資料傳輸的速率。有以下幾個檔位:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200.當然也可以自定義。在資料傳輸和接收雙方,需要預先統一波特率,以便正確的傳輸資料。
二、IIC 匯流排
I²C (Inter-Integrated Circuit)。其擁有一根資料線SDA和一根時鐘線SCL。其匯流排通過上拉電阻與電源相連線。每個接到I2C總線上的器件都有唯一的地址。其中,主動發起操作的一方為主機,另外一方為從機。
1.1 電路示意圖
1.2 資料傳輸
當沒有資料傳輸的時候,兩根匯流排都為高電平;當採集IIC上的資料時,其時鐘線SCL必須是高電平且SDA的資料必須保持穩定不變---將SDA的電平與SCL的高電平進行“與”操作後,以便確定SDA上是1還是0;在SCL為低電平的時候,SDA上的資料可以進行跳變。
資料傳輸開始時,需要傳送一個起始訊號;資料傳輸結束後,需要傳送一個終止訊號;每8bit資料傳輸結束,都需要一個ACK。起止訊號都有Master發出,而ACK則可能由Master或者SLAVE來發出。資料的傳輸採用大端傳輸。
開始訊號:SCL為高電平,SDA的電平由高跳到低表示開始訊號。
終止訊號:SCL為高電平,SDA的電平由低跳到高表示終止訊號。
1.3 資料協議
1.4 I2C讀寫流程
參考:
三、SPI匯流排
SPI(Serial Peripheral Interface)是一種序列串行同步通訊協議,由一個主裝置和一個或多個從裝置組成。其擁有四根(類)硬腳引線,分別為 SDI(序列資料輸入),SDO(序列資料輸出),SCK(序列移位時鐘),CS(片選)。因為一個主裝置可以掛多個從裝置,則通過片選引腳對從裝置進行選擇。從裝置的工作時鐘則是來自於主裝置的SCK線。
1.1 電路示意圖
1.2 資料的傳輸
SPI在資料傳輸的時候,需要確定兩件事情:其一,資料是在時鐘的上升沿採集還是下降沿採集;其二,時鐘的初始(空閒)狀態是為高電平還是低電平。而I2C的空閒狀態,時鐘線為高電平;資料採集的時候,時鐘線也為高電平。但SPI給出了更自由的方式。
CPOL:時鐘極性, 表示 SPI 在空閒時, 時鐘訊號是高電平還是低電平。
CPHA:時鐘相位, 表示 SPI 裝置是在 SCK 管腳上的時鐘訊號變為上升沿時觸發資料取樣, 還是在時鐘訊號變為下降沿時觸發資料取樣。
那麼,SPI CPOL有兩種可能,CPHA有兩種可能,則SPI資料傳輸就有四種可能---按照標準的說法,SPI資料傳輸就有四種模式。
1.3 SPI讀寫
SPI在硬體設計上採用的雙資料線制,根據設計,在SPI通訊過程中,主從裝置之間會形成一個數據環形鏈路---也即是,主裝置向從裝置寫一次資料,從裝置就會回一次資料(至於該從裝置回覆的資料是否有效,則另當別論---如果有效,主裝置就把它讀入;如果無效,則丟棄即可)。
相關推薦
幾個串列埠協議學習整理
一、UART UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。 嵌入式裝置中常常使用到的是TTL、TTL轉RS232的這種方式。常用的就三根引線:傳送線TX、接收線RX、電平參考地線GND。
幾個串列埠協議的整理
幾串列埠協議的整理 一、UART UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。 嵌入式裝置中常常使用到的是TTL、TTL轉RS232的
幾個串列埠除錯助手
原子常用的串列埠除錯助手. 原子自己寫的 優點:支援中文傳送接收.支援多達16個串列埠.介面簡潔明瞭.使用方便. 缺點:需要安裝,體積大.bug較多. 第二個就是丁丁的sscom. 優點:體積小,功能多,支援串列埠自動搜尋,支援DTR,RTS控制. 缺點:介面不夠友好. 第三個就是 GJWTECH的串列埠
【C語言實現串列埠通訊知識點整理(四)】關於執行緒和程序
轉載:https://www.cnblogs.com/fuchongjundream/p/3829508.html 因為在外部檔案中呼叫結構體沒有用extern修飾,導致獲取不到正確的值,一直糾結線上程上。現在大概總結執行緒和程序的特點: 概念 1、程序(process) 狹義定義:
【C語言實現串列埠通訊知識點整理(三)】串列埠開啟、設定資料成功後進行資料讀寫
int OpenDev(char *Dev) { int fd = open(Dev,O_RDWR | O_NOCTTY | O_NONBLOCK); if(-1 == fd) { perror("Can't Open Serial Port"); return -1;
【C語言實現串列埠通訊知識點整理(二)】遇到的問題整理(待續....)
1.c編譯錯誤--error:stray \357 in program UTF-8編碼問題。UTF-8編碼有BOM和無BOM格式。BOM,ByteOrderMark(位元組標記順序),表明使用UTF8來進行編碼。UTF-8的BOM通常為3個位元組EF BB BF。轉換成對應的字元檢視,就是‘\
【C語言實現串列埠通訊知識點整理(一)】執行緒、開啟串列埠、設定波特率、設定校驗位、互斥鎖等實現基本的通訊
部分程式碼借鑑地址:https://blog.csdn.net/wangqingchuan92/article/details/73497354/ 謝謝! 1.建立執行緒線上程內進行串列埠之間的收發 void CREAT_pthread(void) { pthr
最近幾個月區塊鏈學習的總結
什麼是區塊鏈? 比特幣 一提起區塊鏈,100百個人裡面可能有99個會提到比特幣,有人甚至認為區塊鏈就是加密數字貨幣,這其實是對區塊鏈的一種誤解。區塊鏈技術來源於比特幣。比特幣由中本聰於2008年提出,其目的在於構建完全通過對等技術實現的電子現金系統,中間不需要任何金融機構。中介金
記錄自己的學習歷程---關於JSP的幾個面試點(新手學習筆記,並不能保證內容正確性,如有誤請指教)
僅作為新手在學習過程中的筆記,並不能保證正確性。 1)WEB專案的結構 META-INF WEB-INF lib 放jar包 class 放生成的位元組碼檔案 index.jsp 預設主介面 2)JSP的執行過
Linux作業系統下的串列埠通訊學習筆記
一、什麼是串列埠通訊 串列埠通訊是指計算機主機與外設之間以及主機系統與主機系統之間資料的序列傳送。使用串列埠通訊時,傳送和接收到的每一個字元實際上都是一次一位的傳送的,每一位為1或者為0。 二、串列埠通訊的分類 串列埠通訊可以分為同步通訊和非同步通訊兩類。同步通訊是按照
串列埠協議的制定以及串列埠中怎樣接收一個完整資料包的解析
裡以串列埠作為傳輸媒介,介紹下怎樣來發送接收一個完整的資料包。過程涉及到封包與解包。設計一個良好的包傳輸機制很有利於資料傳輸的穩定性以及正確性。串列埠只是一種傳輸媒介,這種包機制同時也可以用於SPI,I2C的匯流排下的資料傳輸。在微控制器通訊系統(多機通訊以及PC與微控制器
藍芽協議學習整理(二)藍芽協議規範(射頻、基帶鏈路控制、鏈路管理)
第二章 藍芽協議規範(射頻、基帶鏈路控制、鏈路管理) 藍芽協議是藍芽裝置間交換資訊所應該遵守的規則。與開放系統互聯(OSI)模型一樣,藍芽技術的協議體系也採用了分層結構,從底層到高層形成了藍芽協議棧,各層協議定義了所完成的功能和使用資料分組格式,以保證藍芽
AM335X下Linux使用所有6個串列埠,包括UART4、UART5
AM335X開發板總共有6個串列埠,其中因為UART4和UART5與其他功能複用,所以我們在使用的時候,並不使用所有串列埠。但是有的時候,我們恰恰是要用到儘量多的串列埠,這種情況下,則可以簡單的修改一下核心程式碼。UART4和UART5功能複用情況如下: UART4 和 can 功能有衝
delphi:檢測當前有多少個串列埠可用?
1)窗體上放一個button,一個memo; 2)button的click事件中寫如下程式碼: procedure TfrmMain.Button1Click(Sender: TObject); var reg: TRegistry; ts: TStrings;
UART串列埠協議基礎1
Louis [email protected] 串列埠協議基礎 1 串列埠概述 串列埠由收發器組成。傳送器是通過TxD引腳傳送序列資料,接收器是通過RxD引腳接收序列資料。傳送器和接收器都利用了一個移位暫存器,這個移位暫存器可以將資料進行“並轉串”和“串轉並”
AM335X 串列埠驅動學習(1)-基於linux3.8核心
學習串列埠驅動,先從資料結構入手吧。串列埠驅動有3個核心資料結構: (/drivers/tty/serial/omap-serial.c) - UART特定的驅動程式結構定義:struct uart_driver serial_omap_reg; - U
JAVA串列埠開發學習筆記1
1、下載java Communications api開發包。2、將win32com.dll拷貝入C:\j2sdk1.4.2_04\bin3、將comm.jar拷貝入C:\j2sdk1.4.2_04\jre\lib\ext4、將javax.comm.properties拷
STM32下多個串列埠的Printf用法
網上講的新增printf()到程式中一般都是這樣的(簡要提一下): 1.配置GPIO ,USART,RCC 的Configuration 2.勾選usb micro lib 3.在程式中新增:(標頭檔案需要新增#include <stdio.h>) #ifdef __GNUC__ #define
VC訪問西門子S7-200的串列埠協議分析(實測通過)
讀命令: PLC地址為2號,讀取VD300的值為0x0960 1. PC發讀取命令: 68 1B 1B 68 02 00 6C 32 01 00 00 00 00 000E 00 00 04 01 12 0A 10 06 00 01 00 01 84 00 09 60D5
一個串列埠連線另外兩個串列埠的設計
本文介紹如何使用一個串列埠連線兩個裝置,可實現某個裝置,如微控制器,使用一個串列埠和另外兩個裝置的串列埠通訊。 連線情況如下:P2與P1、P3通訊,P1與P3不需要通訊。所有的裝置都是1腳接收