硬件編程:硬件開發中常用的幾種通信接口總結

在嵌入式系統中,板上通信接口是指用于將各種集成電路與其他外圍設備交互連接的通信通路或總線。

以下內容為常用板上通信接口:包括I2C、SPI、UART、1-Wire:

I2C總線

I2C總線是一種同步、雙向、半雙工的兩線式串行接口總線。這里,半雙工的含義是指在任意給定的時刻,只有一個方向上是可以通信的。

I2C總線最早由Philips半導體公司于20世紀80年代研發面市。I2C最初的設計目標是為微處理器/微控制器系統與電視機外圍芯片之間的連接提供簡單的方法。

I2C總線由兩條總線組成:串行時鐘線SCL和串行數據線SDA。

SCL線——負責產生同步時鐘脈沖。

SDA線——負責在設備間傳輸串行數據。

I2C總線是共享的總線系統,因此可以將多個I2C設備連接到該系統上。連接到I2C總線上的設備既可以用作主設備,也可以用作從設備。

主設備負責控制通信,通過對數據傳輸進行初始化/終止化,來發送數據并產生所需的同步時鐘脈沖。

從設備則是等待來自主設備的命令,并響應命令接收。主設備和從設備都可以作為發送設備或接收設備。無論主設備是作為發送設備還是接收設備,同步時鐘信號都只能由主設備產生。

在相同的總線上,I2C支持多個主設備的同時存在。圖1-1顯示了I2C總線上主設備和從設備的連接關系。

當總線空閑時,SDA 和SCL 都處于高電平狀態,當主機要和某個從機通訊時,會先發送一個開始條件,然后發送從機地址和讀寫控制位,接下來傳輸數據(主機發送或者接收數據),數據傳輸結束時主機會發送停止條件。傳輸的每個字節為8 位,高位在前,低位在后。

  • 開始條件:SCL 為高電平時,主機將SDA 拉低,表示數據傳輸即將開始。

  • 從機地址:主機發送的第一個字節為從機地址,高7 位為地址,最低位為R/W 讀寫控制位,1 表示讀操作,0 表示寫操作。

一般從機地址有7 位地址模式和10 位地址模式兩種,如果是10 位地址模式,第一個字節的頭7 位是11110XX 的組合,其中最后兩位(XX)是10 位地址的兩個最高位,第二個字節為10 位從機地址的剩下8 位,如下圖所示:

  • 應答信號:每傳輸完成一個字節的數據,接收方就需要回復一個ACK(acknowledge)。寫數據時由從機發送ACK,讀數據時由主機發送ACK。當主機讀到最后一個字節數據時,可發送NACK(Notacknowledge)然后跟停止條件。

  • 數據:從機地址發送完后可能會發送一些指令,依從機而定,然后開始傳輸數據,由主機或者從機發送,每個數據為8 位,數據的字節數沒有限制。

  • 重復開始條件:在一次通信過程中,主機可能需要和不同的從機傳輸數據或者需要切換讀寫操作時,主機可以再發送一個開始條件。

  • 停止條件:在SDA 為低電平時,主機將SCL 拉高并保持高電平,然后在將SDA 拉高,表示傳輸結束。

SPI總線

SPI總線是同步、雙向、全雙工的4線式串行接口總線,最早由Motorola公司提出。SPI是由“單個主設備+多個從設備”構成的系統。需要說明的是:在系統中,只要任意時刻只有一個主設備是處于激活狀態的,就可以存在多個SPI主設備。常運用于EEPROM、FLASH、實時時鐘、AD轉換器、數字信號處理器和數字信號解碼器之間實現通信。

為了實現通信,SPI共有4條信號線,分別是:

(1)主設備出、從設備入(Master Out Slave In,MOSI):由主設備向從設備傳輸數據的信號線,也稱為從設備輸入(Slave Input/Slave Data In,SI/SDI)。

(2)主設備入、從設備出(Master In Slave Out,MISO):由從設備向主設備傳輸數據的信號線,也稱為從設備輸出(Slave Output/Slave Data Out,SO/SDO)。

(3)串行時鐘(Serial Clock,SCLK):傳輸時鐘信號的信號線。

(4)從設備選擇(Slave Select,SS):用于選擇從設備的信號線,低電平有效。

SPI使用方法:

上圖所示芯片有2 個SPI 控制器,SPI 控制器對應SPI 主設備,每個SPI 控制器可以連接多個SPI從設備。掛載在同一個SPI 控制器上的從設備共享3 個信號引腳:SCK、MISO、MOSI,但每個從設備的CS 引腳是獨立的.

主設備通過控制CS 引腳對從設備進行片選,一般為低電平有效。任何時刻,一個SPI 主設備上只有一個CS 引腳處于有效狀態,與該有效CS 引腳連接的從設備此時可以與主設備通信。

所以,SPI通信方式可以使用“一主多從”的結構進行通信。每個連接到總線上的器件都有唯一的地址,主設備啟動數據傳輸并產生時鐘信號,從設備被主設備尋址,同一時刻只允許有一個主設備。

從設備的時鐘由主設備通過SCLK 提供,MOSI、MISO 則基于此脈沖完成數據傳輸。SPI 的工作時序模式由CPOL(Clock Polarity,時鐘極性)和CPHA(Clock Phase,時鐘相位)之間的相位關系決定,CPOL 表示時鐘信號的初始電平的狀態,CPOL 為0 表示時鐘信號初始狀態為低電平,為1 表示時鐘信號的初始電平是高電平。CPHA 表示在哪個時鐘沿采樣數據,CPHA 為0 表示在首個時鐘變化沿采樣數據,而CPHA 為1 則表示在第二個時鐘變化沿采樣數據。

根據CPOL 和CPHA 的不同組合共有4 種工作時序模式:CPOL=0,CPHA=0、CPOL=0,CPHA=1、CPOL=1,CPHA=0、CPOL=1,CPHA=1

UART

UART——通用異步收發傳輸器,UART 作為異步串口通信協議的一種,工作原理是將傳輸數據的每個字符一位接一位地傳輸。在應用程序開發過程中使用頻率較高的數據總線。

基于UART的數據傳輸是異步形式的串行數據傳輸。基于UART的串行數據傳輸不需要使用時鐘信號來同步傳輸的發送端和接收端,而是依賴于發送設備和接收設備之間預定義的配置。

對于發送設備和接收設備來說,兩者的串行通信配置(波特率、單位字的位數、奇偶校驗、起始位數與結束位、流量控制)應該設置為完全相同。通過在數據流中插入特定的比特序列,可以指示通信的開始與結束。當發送一個字節數據的時候,需要在比特流的開頭加上起始位,并在比特流的末尾加上結束位。數據字節的最低位緊接在起始位之后。

UART 串口的特點是將數據一位一位地順序傳送,只要2 根傳輸線就可以實現雙向通信,一根線發送數據的同時用另一根線接收數據。

UART 串口通信有幾個重要的參數,分別是波特率、起始位、數據位、停止位和奇偶檢驗位,對于兩個使用UART 串口通信的端口,這些參數必須匹配,否則通

  • 起始位:表示數據傳輸的開始,電平邏輯為“0” 。

  • 數據位:可能值有5、6、7、8、9,表示傳輸這幾個bit 位數據。一般取值為8,因為一個ASCII 字符值為8 位。

  • 奇偶校驗位:用于接收方對接收到的數據進行校驗,校驗“1” 的位數為偶數(偶校驗) 或奇數(奇校驗),以此來校驗數據傳送的正確性,使用時不需要此位也可以。

  • 停止位:表示一幀數據的結束。電平邏輯為“1”。

  • 波特率:串口通信時的速率,它用單位時間內傳輸的二進制代碼的有效位(bit) 數來表示,其單位為每秒比特數bit/s(bps)。常見的波特率值有4800、9600、14400、38400、115200 等,數值越大數據傳輸的越快,波特率為115200 表示每秒鐘傳輸115200 位數據。

1-Wire接口

1-Wire接口是由Maxim Dallas半導體公司(首頁為http://www.maxim-ic.com)開發的異步半雙工通信協議,也稱為Dallas 1-Wire?協議。其中,按照主-從通信模型,只使用單條信號線DQ實現通信。

1-Wire總線的一個重要特征在于,該總線允許在信號線上傳輸能量。1-Wire接口支持在總線上連接單個主設備以及一個或多個從設備。

并行接口

板上并行接口(parallel interface)通常用于系統與外圍設備之間的通信,其中,外圍設備通過存儲器映射到系統的主控端。只要嵌入式系統的主控處理器/控制器含有并行總線,支持并行總線的設備就可以直接連接到該總線系統上。外圍設備與主控端之間具有控制信號接口,可以控制并行總線上的數據通信。這里,通信的控制信號包括讀/寫信號和設備選擇信號。一般說來,外圍設備具有設備選擇線;只有當主控處理器選通該線的時候,該設備才是有效的。

數據傳輸的方向可以是從主控端到外圍設備,也可以是從外圍設備到主控端;這是通過讀和寫控制信號線進行控制的。只有主控處理器能夠控制讀控制信號和寫控制信號。一般說來,外圍設備通過存儲器映射到主控處理器,從而可以訪問分配的地址范圍。此時,設備需要使用地址譯碼電路來產生芯片選擇信號。

當處理器選擇的地址位于設備指定范圍內的時候,譯碼電路對芯片選擇線進行觸發,從而激活設備。然后,處理器可以使能相應的控制線(分別是RD與WD),從而由設備讀出數據,或者是向設備寫入數據。

為了實現并行通信,系統需要嚴格遵循時序規范。前面已經提到過,并行通信是由主控處理器啟動的。如果某外圍設備想要對通信進行初始化,那么可以向處理器發出中斷,告知相關信息。

為了實現上述功能,設備的中斷線需要連接到處理器的中斷線上,并且主控處理器需要觸發相應的中斷。需要說明的是,主控處理器的數據總線寬度決定了并行接口的寬度,可以是4位、8位、16位、32位、64位等。設備支持的總線寬度應該與主控處理器完全相同。

END

來源:博客園,作者:Iriczhao


版權歸原作者所有,如有侵權,請聯系刪除。

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270974.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270974.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270974.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

集合初始化時,指定集合初始值大小

集合初始化時,指定集合初始值大小

hadoop常用linux命令,# Hadoop學習筆記(二)——Linux常用命令

ifconfigLinux ifconfig命令用于顯示或設置網絡設備。ifconfig可設置網絡設備的狀態,或是顯示目前的設置。ifconfig.png語法ifconfig [網絡設備][down up -allmulti -arp -promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-br…

數據庫:計算地球上兩個坐標點之間里程

今天給大家分享計算地球上兩個坐標點之間里程不同數據庫版本的腳本。1、SQLServer腳本–-計算地球上兩個坐標點(經度,緯度)之間距離sql函數 CREATE FUNCTION [dbo].[fnGetDistance](LatBegin REAL , LngBegin REAL, LatEnd REAL, LngEnd REA…

jvm 崩潰日志設置_JVM致命錯誤日志(hs_err_pid.log)分析(轉載)

當jvm出現致命錯誤時,會生成一個錯誤文件 hs_err_pid.log,其中包括了導致jvm crash的重要信息,可以通過分析該文件定位到導致crash的根源,從而改善以保證系統穩定。當出現crash時,該文件默認會生成到工作目錄下&#x…

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

【Qt開發】Qt Creator在Windows上的調試器安裝與配置

Qt Creator在Windows上的調試器安裝與配置 如果安裝Qt時使用的是Visual Studio的預編譯版,那么很有可能就會缺少調試器(Debugger),而使用MSVC的Qt對應的原生調試器是CDB(對應MinGW的Qt使用GDB調試器)。本文…

linux rsync 帶密碼,Linux配置ssh無密碼驗證,rsync

1.我先聲明主機pangzhiminglinux 192.168.200.129CentOS2 192.168.200.130方法大概是這樣:如果想從pangzhiminglinux的普通用戶無驗證登錄到CentOS2的普通用戶(單方向的),那么就要在兩個主機都建立一個相同名字,相同密碼的普通…

Java:Lombok插件用法筆記

1、Lombok是什么東東?官方介紹Lombok項目是一個Java庫,它可以自動嵌入你的編輯器和構建工具中,從而減少你的代碼量。永遠不要再寫另一個getter或equals方法,它帶有一個注釋的你的類有一個功能全面的生成器,自動化你的日…

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序對)

題目大意:給出n個數的序列,每次可以交換相鄰的兩個數,問把序列變成編號i在編號i1左邊,編號1在編號n右邊(一個環)最少需要多少步。如:35421最少交換兩次變為34512。 一開始看到這題,只會O(n),后來…

sap實施和開發哪個前景_2021年了!還不知道 SAP顧問的職業前景?

一、先說什么是SAP。百度詞條的解釋:SAP有兩個意思一為“System Applications and Products”的簡稱,是SAP公司的產品——企業管理解決方案的軟件名稱。也代指SAP公司。二為SAP開發的ERP(Enterprise-wide Resource Planning)軟件名…

Linux找最大最小值的命令,Linux中awk命令正確的求最大值、最小值、平均值、總和...

test.txt文件內容&#xff1a;911352142118求最大值&#xff1a;awk BEGIN {max 0} {if ($10 > max0) max$1} END {print "Max", max} test.txtMax 118求最小值&#xff1a;awk BEGIN {min 65536} {if ($10 < min0) min$1} END {print "Min", min}…

?分布式數據庫技術基礎:數據分布介紹

1、數據分布的定義數據分布是指在分布式環境中通過合理分布數據&#xff0c;提高數據操作自然并行度&#xff0c;以達到最優的執行效率的目的。在構建分布式數據庫系統運行環境時&#xff0c;必須考慮數據如何分布在系統的各個場地上。數據分布主要關注的問題是在分布式數據中&…

uname命令 linux,Linux uname命令詳解

Linux uname命令用于顯示系統信息。uname可顯示電腦以及操作系統的相關信息。語法參數&#xff1a;uname [參數]參數&#xff1a;-a或--all&#xff1a;顯示全部的信息&#xff1b;-m或--machine&#xff1a;顯示電腦類型&#xff1b;-n或-nodename&#xff1a;顯示在網絡上的主…

ios開發text kit_IOS開發入門之TextKit詳解

本文將帶你了解IOS開發入門iOS 開發 富文本詳解之TextKit詳解&#xff0c;希望本文對大家學IOS有所幫助。textkit結構textkit使用步驟#Mark - 1. 自定義label --class CZLabel: UILabel---四個屬性//1.屬性文本存儲private lazy var textStorage NSTextStorage()//2.負責文本…

分布式數據庫技術基礎:數據分片介紹

1、數據分片定義數據分片也成為數據分割&#xff0c;是分布式數據庫的特征之一。一般在一個分布式數據庫中&#xff0c;全局數據庫是由各個局部數據庫邏輯組合而成的&#xff0c;反之各個局部數據庫是由全局數據庫的某種分割邏輯而得的。數據分片得到的各部分元組成為該關系的邏…

9.02

1.input標簽&#xff1a;<input> 標簽用于搜集用戶信息。根據不同的 type 屬性值&#xff0c;輸入字段擁有很多種形式。 輸入字段可以是文本字段、復選框、掩碼后的文本控件、單選按鈕、按鈕等等。例如&#xff1a;Frist name:<input type"text" name"…

分布式數據庫技術基礎:分布透明性相關知識

1、分布透明性介紹數據分布獨立性&#xff1a;主要是指用戶或用戶程序使用分布式數據庫如同使用集中式數據庫那樣&#xff0c;不必關系全局數據的分布情況。也就是說全局數據的邏輯分片、片段的物理位置分配、各場地數據庫的數據模型等情況對用戶和用戶應用程序是透明的。因此分…

宏基4750網卡驅動linux,宏基4750g網卡驅動下載

宏基4750g網卡驅動是宏基筆記本上網驅動&#xff0c;驅動可以幫助用戶體驗便捷上網功能&#xff0c;只需要的雙擊驅動安裝就可以完成&#xff0c;網卡驅動是筆記本必備程序&#xff0c;歡迎用戶來當易網下載體驗&#xff01;驅動介紹Acer宏碁Aspire 4750G筆記本網卡驅動14.4.0.…