1. 程式人生 > >幾個串列埠協議的整理

幾個串列埠協議的整理

幾串列埠協議的整理

一、UART

UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。

嵌入式裝置中常常使用到的是TTL、TTL轉RS232的這種方式。常用的就三根引線:傳送線TX、接收線RX、電平參考地線GND。

1.1 電路示意圖

img

1.2 通訊協議

將傳輸資料的每個字元一位接一位地傳輸。

https://img-blog.csdn.net/20170719232822650” alt=”串列埠資料傳輸示意圖.png” title=”” />

起始位:先發出一個邏輯”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.當然也可以自定義。在資料傳輸和接收雙方,需要預先統一波特率,以便正確的傳輸資料。

二、I2C 匯流排

2.1 電路示意圖

I²C (Inter-Integrated Circuit)。其擁有一根資料線SDA和一根時鐘線SCL。其匯流排通過上拉電阻與電源相連線。每個接到I2C總線上的器件都有唯一的地址。其中,主動發起操作的一方為主機,另外一方為從機。

IIC 匯流排

2.2 資料傳輸

當沒有資料傳輸的時候,兩根匯流排都為高電平;當採集IIC上的資料時,其時鐘線SCL必須是高電平且SDA的資料必須保持穩定不變—將SDA的電平與SCL的高電平進行“與”操作後,以便確定SDA上是1還是0;在SCL為低電平的時候,SDA上的資料可以進行跳變。

資料傳輸開始時,需要傳送一個起始訊號;資料傳輸結束後,需要傳送一個終止訊號;每8bit資料傳輸結束,都需要一個ACK。起止訊號都有Master發出,而ACK則可能由Master或者SLAVE來發出。資料的傳輸採用大端傳輸。

開始訊號:SCL為高電平,SDA的電平由高跳到低表示開始訊號。

終止訊號:SCL為高電平,SDA的電平由低跳到高表示終止訊號。
IIC時序

2.3 資料協議

IIC資料協議

2.4 I2C讀寫流程

I2C讀寫流程

I2C寫暫存器的標準流程.png

I2C讀暫存器的標準流程.png

三、SPI匯流排

SPI(Serial Peripheral Interface)是一種序列串行同步通訊協議,由一個主裝置和一個或多個從裝置組成。其擁有四根(類)硬腳引線,分別為 SDI(序列資料輸入),SDO(序列資料輸出),SCK(序列移位時鐘),CS(片選)。因為一個主裝置可以掛多個從裝置,則通過片選引腳對從裝置進行選擇。從裝置的工作時鐘則是來自於主裝置的SCK線。

3.1 電路示意圖

SPI匯流排

3.2 資料的傳輸

SPI在資料傳輸的時候,需要確定兩件事情:其一,資料是在時鐘的上升沿採集還是下降沿採集;其二,時鐘的初始(空閒)狀態是為高電平還是低電平。而I2C的空閒狀態,時鐘線為高電平;資料採集的時候,時鐘線也為高電平。但SPI給出了更自由的方式。

CPOL:時鐘極性, 表示 SPI 在空閒時, 時鐘訊號是高電平還是低電平。

CPHA:時鐘相位, 表示 SPI 裝置是在 SCK 管腳上的時鐘訊號變為上升沿時觸發資料取樣, 還是在時鐘訊號變為下降沿時觸發資料取樣。

那麼,SPI CPOL有兩種可能,CPHA有兩種可能,則SPI資料傳輸就有四種可能—按照標準的說法,SPI資料傳輸就有四種模式。

SPI資料傳輸就有四種模式

SPIMode0.png

SPIMode2.png

這裡寫圖片描述

3.3 SPI讀寫

SPI在硬體設計上採用的雙資料線制,根據設計,在SPI通訊過程中,主從裝置之間會形成一個數據環形鏈路—也即是,主裝置向從裝置寫一次資料,從裝置就會回一次資料(至於該從裝置回覆的資料是否有效,則另當別論—如果有效,主裝置就把它讀入;如果無效,則丟棄即可)。

SPI主從連線.png

SPI讀寫.png

相關推薦

串列協議整理

幾串列埠協議的整理 一、UART UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。 嵌入式裝置中常常使用到的是TTL、TTL轉RS232的

串列協議學習整理

一、UART UART是一個大家族,其包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範。它們的主要區別在於其各自的電平範圍不相同。 嵌入式裝置中常常使用到的是TTL、TTL轉RS232的這種方式。常用的就三根引線:傳送線TX、接收線RX、電平參考地線GND。

串列除錯助手

原子常用的串列埠除錯助手. 原子自己寫的 優點:支援中文傳送接收.支援多達16個串列埠.介面簡潔明瞭.使用方便. 缺點:需要安裝,體積大.bug較多. 第二個就是丁丁的sscom. 優點:體積小,功能多,支援串列埠自動搜尋,支援DTR,RTS控制. 缺點:介面不夠友好. 第三個就是 GJWTECH的串列埠

主要的腦網絡——整理自eegfmri的博客

信息 image ntop mat ask http 也有 自己的 style 更詳細的原文請見: http://blog.sina.com.cn/s/blog_60a7516201019qgk.html 按照網絡的功能,以及單突觸(monosynaptic)和多突觸

串列協議的制定以及串列中怎樣接收一個完整資料包的解析

裡以串列埠作為傳輸媒介,介紹下怎樣來發送接收一個完整的資料包。過程涉及到封包與解包。設計一個良好的包傳輸機制很有利於資料傳輸的穩定性以及正確性。串列埠只是一種傳輸媒介,這種包機制同時也可以用於SPI,I2C的匯流排下的資料傳輸。在微控制器通訊系統(多機通訊以及PC與微控制器

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引腳接收序列資料。傳送器和接收器都利用了一個移位暫存器,這個移位暫存器可以將資料進行“並轉串”和“串轉並”

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腳接收

介紹串列監控工具

在開發上位機下位機通訊程式時,有一個好的監控工具會事半功倍。特在網上找了幾款串列埠監控軟體,作了簡單對比: 一、Device Monitoring Studio 網址:http://www.hhdsoftware.com 程式截圖: 軟體功能比較強大,是收費軟體,

MT7688/28 設定3串列

需要好好整理一下解決思路。 背景:端午節,沒回家,物件去上課了,留下我就窩屋子裡調驅動,其實本來可以出去逛公園的。 先說一下系統環境:virtualbox,[email protected] Openwrt版本:Chaos Calmer 15.05-rc2 硬體板卡:MT7688,64MB DDR

STM32多串列printf

網上講的新增printf()到程式中一般都是這樣的(簡要提一下): 1.配置GPIO ,USART,RCC 的Configuration 2.勾選usb micro lib 3.在程式中新增:(標頭檔案需要新增#include <stdio.h>) #ifdef

串列協議分析

 一、主要說明:      串列埠(UART),通用非同步接收器,使用標準的TTL/COMS邏輯電平(0-5v,0-3.3v,0-1.8v)來表示資料,高電平時為資料1,低電平時為資料0。 二、資料傳輸的流程如下;    (1)平時空閒為1狀態。    (2)傳送資料時,t

常見演算法的整理

1.gcd演算法 int gcd(int a, int b) { return (a==0)?b:gcd(b%a, a); } //遞推法 int gcd(int m, int n) { while(m>0) {

3518e 開啟第三串列uart2

因為工作需要,需要使用3518e的uart2,但是海思核心預設只開啟了uart0和uart1,因此需要自己手動開啟uart2,因此網上查了一些資料,開啟uart2。 具體過程如下: 1、修改核心arch/arm/mach-hi3518/core.

串列協議模板及其引數配置

1 modbus協議 1.1 modbus通用 #型號 modbus(crc16) #modbus協議 def crc16: $crc($1,0x8005,0xffff,0x0000,0) # $addr $len 都是輸入的引數 def send:

微控制器和串列裝置通訊設計時要注意的問題

現在有很多外設喜歡通過UART介面進行通訊控制,比如串列埠WIFI模組,串列埠藍芽模組,串列埠HMI等等。因為基本上每款微控制器都有UART這個硬體裝置,這使得通過UART來控制的外設可以在眾多微控制

關於微控制器串列通訊的問題

串列埠通訊:(從微控制器的角度考慮) 過程:(無論中斷開關與否,資料都能進出SBUF,且RI和TI都能硬體置1,只是CPU未進行接收) 接收:PC發一個位元組-->RI硬體置1-->進入中斷,接收資料(RI手動置0)-->返回現場 傳送:單片機發一個位元