嵌入式分享~IO相关1 ##
這里僅總結一下IO控制相關及這種總線等? ~持續更新
一、 單片機IO直接驅動繼電器?
上圖是隨便找到的兩個不同型號的繼電器。繼電器就是個開關,這個開關是由它內部的線圈控制的,給線圈通電,繼電器就吸合,開關就動作了。絕大部分的繼電器反面都會有如下圖一樣的標識,看標識也就能看出,下圖中1腳2腳之間是線圈,3腳和5腳在繼電器不動作的時候是連一起的,當1腳2腳上加電壓后,繼電器動作,此時3腳就斷開5腳,吸合到了4腳上去。
比如你要控制一條線的通斷,就可以把這條線故意搞斷以后,一端接到3腳,一端接到4腳,然后通過給線圈通電和斷電,就可以控制這條線的通斷了。我們通過單片機開控制1腳2腳上的線圈通電就可以控制這個開關的閉合與斷開了。
線圈1腳和2腳加多大電壓呢?
這個問題,需要看你用的繼電器的正面,比如藍色這個繼電器,最下面一行字為“SRD-05DCV-SL-C”,其中的“05DCV”就表示線圈上所需要的電壓值,在此表示需要直流5V電壓才能驅動這個繼電器吸合。
前面我們說過了,可以用單片機控制這個線圈上的電壓,你可以直接用兩只手拿上5V和GND兩條線直接通到繼電器線圈的兩個引腳,就會聽到響聲了。
那用單片機怎么給他加電壓?我們知道,單片機引腳就可以輸出5V,是不是直接用單片機引腳連接繼電器線圈,就可以了呢?
答案當然不是的!
下面我們來測試一下,用萬用表測量一下這個線圈的電阻,如下圖所示這個繼電器的線圈上的電阻是67.3Ω,假設我們把這個線圈當做一個電阻來看的話,在它兩端加上5V的電壓,歐姆定律用上一算,電流就是74mA左右。但是,我們單片機的普通引腳最大輸出10mA電流,大電流的引腳最大輸出20mA電流(具體的單片機輸出能力需要參照單片機的datasheet)。
通過上面的計算,雖然5V的單片機可以輸出5V的電壓,但是輸出電流能力有限,遠遠達不到驅動繼電器的電流,所以無法直接驅動繼電器。假如我們采用灌電流的連接方式,這樣很有可能直接燒壞單片機的IO口。
這時候我們就需要想辦法,想想怎么能通過小電流來控制大電流呢,此時我們應該不叫容易想到的三極管,比如比較常用的S8050三極管,ICE最大允許電流是500mA,遠遠大于70mA,所以用S8050驅動繼電器絕對是沒有問題的。電路圖如下所示:
看上圖,ICE也就是從C流到E的電流,就是和繼電器線圈一條線的電流。NPN三極管,在這里就是個開關,單片機引腳輸出5V高電平,ICE就導通繼電器就會吸合;單片機引腳輸出0V低電平,ICE就截止,繼電器就不吸合。值得注意的是,剛才計算時候我們是吧線圈當作了電阻,而實際它是線圈,線圈內的電流不能突變,所以在斷開的瞬間會形成反向電動勢,上圖中的二極管就是為了釋放這個反向電動勢而設計的。
同理,電磁閥也是一種電阻很小功率很大的負載,也需要按照上述歐姆定律的方法,選擇合適的驅動元件。
在更多的使用場景下,在同一個項目中可能需要驅動多個繼電器,此時采用分立元件三極管來驅動可能就會有寫繁瑣了,此時可以采用一些驅動芯片,比較常見的有達林頓管ULN2003、ULN2803。采用這樣的集成芯片驅動可以讓電路變得簡潔,還可以增加可靠性。如果需要更加保險的考慮的話可以在輸入驅動信號的地方采用光耦作為隔離。
whaosoft aiot?http://143ai.com???
二、常見內部總線介紹
IIC
??? IIC(Inter-Integrated ? ? ? ?Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線用兩條線(SDA和SCL)在總線和裝置之間傳遞信息,在微控制器和外部設備之間進行串行通訊或在主設備和從設備之間的雙向數據傳送。I2C是OD輸出的,大部分I2C都是2線的(時鐘和數據),一般用來傳輸控制信號。
IIS
??? I2S(Inter-IC ? ? ? ?Sound ? ? ? ?Bus)是飛利浦公司為數字音頻設備之間的音頻數據傳輸而制定的一種總線標準。I2S有3個主要信號:1.串行時鐘SCLK,也叫位時鐘,即對應數字音頻的每一位數據,SCLK有1個脈沖。2.幀時鐘LRCK,用于切換左右聲道的數據。LRCK為“1”表示正在傳輸的是左聲道的數據,為“0”則表示正在傳輸的是右聲道的數據。3.串行數據SDATA,就是用二進制補碼表示的音頻數據。有時為了使系統間能夠更好地同步,還需要另外傳輸一個信號MCLK,稱為主時鐘,也叫系統時鐘(Sys ? ? ? ?Clock)。
SPI
??? SPI(Serial ? ? ? ?Peripheral ? ? ? ?Interface:串行外設接口);SPI是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。
??? SPI接口是以主從方式工作的,這種模式通常有一個主器件和一個或多個從器件,其接口包括以下四種信號:
-
MOSI ? ? ? ? ? ?– 主器件數據輸出,從器件數據輸入
-
MISO – 主器件數據輸入,從器件數據輸出
-
SCLK – 時鐘信號,由主器件產生
-
SS ? ? ? ? ? ??– 從器件使能信號,由主器件控制
UART
??? UART(Universal ? ? ? ?Asynchronous Receiver ? ? ? ?Transmitter:通用異步收發器)。將由計算機內部傳送過來的并行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節,供計算機內部使用并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠票也是串行設備)。可以處理計算機與外部串行設備的同步管理問題。有一些比較高檔的UART還提供輸入輸出數據的緩沖區。常用TXD,RXD,/RTS,/CTS。
JTAG
??? JTAG ? ? ? ?(Joint Test Action Group ? ? ? ?聯合測試行動小組)是一種國際標準測試協議(IEEE1149.1兼容),主要用于芯片內部測試。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。測試復位信號(TRST,一般以低電平有效)一般作為可選的第五個端口信號。一個含有JTAGDebug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內部寄存器和掛在CPU總線上的設備,如FLASH,RAM,內置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。
CAN
??? CAN全稱為“Controller ? ? ? ?Area ? ? ? ?Network”,即控制器局域網,是國際上應用最廣泛的現場總線之一。最初,CAN被設計作為汽車環境中的微控制器通訊,在車載各電子控制裝置ECU之 ? ? ? ?間交換信息,形成汽車電子控制網絡。比如:發動機管理系統、變速箱控制器、儀表裝備、電子主干系統中,均嵌入CAN控制裝置。一個由CAN總線構成的單一網絡中,理論上可以掛接無數個節點。實際應用中,節點數目受網絡硬件的電氣特性所限制。例如,當使用Philips ? ? ? ?P82C250作為CAN收發器時,同一網絡中允許掛接110個節點。CAN ? ? ? ?可提供高達1Mbit/s的數據傳輸速率,這使實時控制變得非常容易。另外,硬件的錯誤檢定特性也增強了CAN的抗電磁干擾能力。
SDIO
??? SDIO是SD型的擴展接口,除了可以接SD卡外,還可以接支持SDIO接口的設備,插口的用途不止是插存儲卡。支持 ? ? ? ?SDIO接口的PDA,筆記本電腦等都可以連接象GPS接收器,Wi-Fi或藍牙適配器,調制解調器,局域網適配器,條型碼讀取器,FM無線電,電視接收 ? ? ? ?器,射頻身份認證讀取器,或者數碼相機等等采用SD標準接口的設備。
GPIO
??? GPIO ? ? ? ?(General Purpose Input Output ? ? ? ?通用輸入/輸出)或總線擴展器利用工業標準I2C、SMBus?或SPI?接口簡化了I/O口的擴展。當微控制器或芯片組沒有足夠的I/O端口,或當系統 ? ? ? ?需要采用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
????每個GPIO端口可通過軟件分別配置成輸入或輸出。
三、?串口通信原理--232、422、485
1 串口通訊
????串口通訊(Serial Communication),是指外設和計算機間,通過數據信號線、地線等,按位進行傳輸數據的一種通訊方式。
????串口是一種接口標準,它規定了接口的電氣標準,沒有規定接口插件電纜以及使用的協議。
????串口按電氣標準及協議來劃分,包括RS-232-C、RS-422、RS485等。
2 串口通訊的數據格式
????一個字符一個字符地傳輸,每個字符一位一位地傳輸,并且傳輸一個字符時,總是以“起始位”開始,以“停止位”結束,字符之間沒有固定的時間間隔要求。
????每一個字符的前面都有一位起始位(低電平),字符本身由7位數據位組成,接著字符后面是一位校驗位(檢驗位可以是奇校驗、偶校驗或無校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位,停止位和空閑位都規定為高電平。實際傳輸時每一位的信號寬度與波特率有關,波特率越高,寬度越小,在進行傳輸之前,雙方一定要使用同一個波特率設置。
3 通訊方式
????單工模式(Simplex Communication)的數據傳輸是單向的。通信雙方中,一方固定為發送端,一方則固定為接收端。信息只能沿一個方向傳輸,使用一根傳輸線。
????半雙工模式(Half Duplex)通信使用同一根傳輸線,既可以發送數據又可以接收數據,但不能同時進行發送和接收。數據傳輸允許數據在兩個方向上傳輸,但是,在任何時刻只能由其中的一方發送數據,另一方接收數據。因此半雙工模式既可以使用一條數據線,也可以使用兩條數據線。半雙工通信中每端需有一個收發切換電子開關,通過切換來決定數據向哪個方向傳輸。因為有切換,所以會產生時間延遲,信息傳輸效率低些。
????全雙工模式(Full Duplex)通信允許數據同時在兩個方向上傳輸。因此,全雙工通信是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力。在全雙工模式中,每一端都有發送器和接收器,有兩條傳輸線,信息傳輸效率高。
顯然,在其它參數都一樣的情況下,全雙工比半雙工傳輸速度要快,效率要高。
4 偶校驗與奇校驗
????在標準ASCII碼中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。
5 停止位
????停止位是按長度來算的。串行異步通信從計時開始,以單位時間為間隔(一個單位時間就是波特率的倒數),依次接受所規定的數據位和奇偶校驗位,并拼裝成一個字符的并行字節;此后應接收到規定長度的停止位“1”。所以說,停止位都是“1”,1.5是它的長度,即停止位的高電平保持1.5個單位時間長度。一般來講,停止位有1,1.5,2個單位時間三種長度。
6 波特率
????波特率就是每秒鐘傳輸的數據位數。
????波特率的單位是每秒比特數(bps),常用的單位還有:每秒千比特數Kbps,每秒兆比特數Mbps。串口典型的傳輸波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps。
????PLC/PC與稱重儀表通訊時,最常用的波特率是9600bps,19200bps。PLC/PC或儀表與大屏幕通訊時,最常用的波特率是600bps。
7 典型的串口通訊標準
????EIA RS232(通常簡稱“RS232”): 1962年由美國電子工業協會(EIA)制定。
????EIA RS485(通常簡稱“RS485”): 1983年由美國電子工業協會(EIA)制定。
8 RS232串口
????RS232是計算機與通信工業應用中最廣泛一種串行接口。它以全雙工方式工作,需要地線、發送線和接收線三條線。RS232只能實現點對點的通信方式。
8.1 RS232串口缺點
?● 接口信號電平值較高,接口電路芯片容易損壞。
?● 傳輸速率低,最高波特率19200bps。
?● 抗干擾能力較差。
?● 傳輸距離有限,一般在15m以內。
?● 只能實現點對點的通訊方式。
8.2 RS232串口接口定義
????RXD:接收數據,TXD:發送數據,GND/SG:信號地。
8.3 電腦DB9針接口定義
????電腦DB9針接口是常見的RS232串口,其引腳定義如下:
??2號腳:RXD(接收數據)
??3號腳:TXD(發送數據)
??5號腳:SG或GND(信號地)
??其它腳:我們不用
????電腦RS232串口與儀表串口連接圖:
????在9針串口接頭中,公頭和母頭的管腳定義順序是不一樣,這一點需要特別注意。那么,這些管腳都有什么作用呢?9針串口和25針串口常用管腳的功能說明如下圖所示:
9 RS485串口
9.1 RS485串口特點
● RS485采用平衡發送和差分接收,具有良好的抗干擾能力,信號能傳輸上千米。
● RS485有兩線制和四線制兩種接線。采用四線制時,只能實現點對多的通訊(即只能有一個主設備,其余為從設備)。四線制現在很少采用,現在多采用兩線制接線方式。
● 兩線制RS485只能以半雙式方式工作,收發不能同時進行。
● RS485在同一總線上最多可以接32個結點,可實現真正的多點通訊,但一般采用的是主從通信方式,即一個主機帶多個從機。
● 因RS485接口具有良好的抗干擾能力,長的傳輸距離和多站能力等優點使其成為首選的串行接口。
9.2?RS485串口接口定義
????A或Data+(D+)或+:信號正;
????B或Data-(D-)或-:信號負。
9.3 計算機與RS485儀表通訊
????計算機自帶的串口只有RS232,沒有RS485,如果計算機要與RS485串口的儀表進行通訊,必須使用串口轉換器或裝上RS485串口轉換卡后才能進行通訊。
9.4 RS485串口的終端電阻
● 一般情況下不需要增加終端電阻,只有在RS485通信距離超過100米的情況下,要在RS485通訊的開始端和結束端增加終端電阻,RS485典型終端電阻是120歐。
● 終端電阻是為了消除在通信電纜中的信號反射在通信過程中,有兩種信號因導致信號反射:阻抗不連續和阻抗不匹配。
????阻抗不連續,信號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號在這個地方就會引起反射。消除這種反射的方法,就必須在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續。由于信號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接一個同樣大小的終端電阻。
????引起信號反射的另一原因是數據收發器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現在通訊線路處在空閑方式時,整個網絡數據混亂。要減弱反射信號對通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實際應用中,對于比較小的反射信號,為簡單方便,經常采用加偏置電阻的方法。
10 串口通訊硬件常見的注意事項
● 通訊電纜端子一定接牢,不可有任何松動,否則,可能會燒壞儀表或上位機的通訊板。
● 不可帶電拔插通訊端子,否則,可能會燒壞儀表或上位機的通訊板,一定要關閉儀表電源后才能去拔插通訊端子或接通訊線。
● 不可帶電拔插通訊端子,否則,可能會燒壞儀表或上位機的通訊板,一定要關閉儀表電源后才能去拔插通訊端子或接通訊線。
● 通訊用的屏蔽電纜最好選用雙層隔離型屏蔽電纜,其次選用單層屏蔽電纜,最好不要選用無屏蔽層的電纜,且電纜屏蔽層一定要能完全屏蔽,有些質量差的電纜,屏蔽層很松散,根本起不到屏蔽的作用。單層屏蔽的電纜屏蔽層應一端接地,雙層屏蔽的電纜屏蔽層其外層(含鎧裝)應兩端接地,內層屏蔽則應一端接地。
● 儀表使用RS232通訊時,通訊電纜長度不得超過15米。
● 一般RS485協議的接頭沒有固定的標準,可能根據廠家的不同引腳順序和管腳功能可能不盡相同,用戶可以查閱相關產品RS485的引腳圖。
● RS485通訊電纜最好選用阻阬匹配、低衰減的RS485專用通訊電纜(雙絞線),不要使用普通的雙絞電纜或質量較差的通訊電纜。因為普通電纜或質量差的通訊電纜,可能阻抗不匹配、衰減大、絞合度不夠、屏蔽層太松散,這樣會導致干擾將非常大,會造成通訊不暢,甚至通訊不上。
● 儀表使用RS485通訊時,每臺儀表必須手牽手地串下去,不可以有星型連接或者分叉,如果有星型連接或者分叉,干擾將非常大,會造成通訊不暢,甚至通訊不上。
● 485總線結構理論上傳輸距離達到1200米,一般是指通訊線材優質達標,波特率9600,只有一臺485設備才能使得通訊距離達到1200米,而且能通訊并不代表每次通訊都正常,所以通常485總線實際的穩定通訊距離遠遠達不到1200米。負載485設備多,線材阻抗不同時,通訊距離更短。
● 儀表使用RS485通訊時,必要時,請接入終端電阻,以增強系統的抗干擾性,典型的終端電阻阻值是120歐。
11 串口通訊軟件設置要點
11.1 有關通訊的一些基本概念
● 主機與從機:在通訊系統中起主要作用、發布主要命令的稱為主機,接受命令的稱為從機。
● 連續方式:指主機不需要發布命令,從機就能自動地向主機發送數據。
● 指令方式:指主機向從機發布命令,從機根據指令執行動作,并將結果“應答”給主機的模式。
● 輸出數據類型:指在連續方式通訊時,從機輸出給主機的數據類型。
● 通訊協議:指主機與從機通訊時,按哪一種編碼規則來通訊。
● 波特率:主從機之間通訊的速度。
● 數據位:每次傳輸數據時,數據由幾位組成。
● 校驗位:數據傳輸錯誤檢測,可以是奇校驗、偶校驗或無校驗。
● 地址:每一臺從機的編號。
11.2 主從機之間通訊設置要點
● 要點一:主/從RS232/485硬件有無設置正確,通訊線有無接對。有些通訊板卡是RS422與RS485共用的,依靠板上跳線來實現的,有些儀表RS232/485也需要通訊跳線來實現。
● 要點二:主機上的通訊端口有無設置正確;超時(一般設置為2s)、通訊延時(一般設置為5~20ms)、ACK信號延時(一般設置為0ms)有無設置正確。
● 要點三:主/從機通訊協議有無選擇正確。
● 要點四:主/從機波特率有無選擇正確。
● 要點五:主/從機數據位有無選擇正確。數據位可以選擇7位,8位。
● 要點六:主/從機校驗位有無選擇正確。校驗位一般可選擇偶校驗、奇校驗、無校驗。
● 要點七:主/從機停止位有無選擇正確。停止位可以選擇1位、1.5位還是2位。
● 要點八:從機地址有無選擇正確。
● 要點九:主/從機的通訊方式有無選擇正確。
????進行通訊測試的時候經常會進行線路測試,測試所用的串口線是否可用,方法如下:
1. 把串口線接到不同的串口,用串口調試工具從一個串口發數據,另一個能正常收到說明串口線是OK的。
2. 把串口線的一端短接(用金屬把2,3號腳連通),用萬用表測另一端的2,3號如果正常的話會有嘀嘀的短接報警聲。
總結
以上是生活随笔為你收集整理的嵌入式分享~IO相关1 ##的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汉字转拼音(工具类)
- 下一篇: 通达信交易接口的解决方法是什么?