999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

AVR單片機(jī)的V-USB和串口通信方式比較

2012-12-17 10:48:3693707部隊(duì)王志海
電子世界 2012年8期
關(guān)鍵詞:單片機(jī)設(shè)備

93707部隊(duì) 王志海

1.引言

串口通信是單片機(jī)與上位機(jī)最常用的數(shù)據(jù)通信方式,隨著USB接口的普及,單片機(jī)與計(jì)算機(jī)之間越來(lái)越多的使用USB接口進(jìn)行數(shù)據(jù)傳輸,但是直接選用USB接口控制芯片會(huì)增加開(kāi)發(fā)成本與難度。為單片機(jī)設(shè)備選擇一個(gè)簡(jiǎn)單、快速、適用的通信方式,不但可以降低開(kāi)發(fā)成本和技術(shù)難度,也可以最大程度的提高單片機(jī)系統(tǒng)的運(yùn)行效率。本文對(duì)AVR單片機(jī)使用串口通信和V-USB方案的開(kāi)發(fā)實(shí)現(xiàn)過(guò)程進(jìn)行比較,分析了兩種通訊方式的特點(diǎn)和應(yīng)用場(chǎng)合。

1.1 V-USB簡(jiǎn)介

V-USB的全稱(chēng)是Virtual USB for AVR microcontrollers,是一個(gè)開(kāi)源項(xiàng)目。它利用純軟件的實(shí)現(xiàn)方式在ATMEGA公司的AVR系列單片機(jī)上虛擬出USB口,將其模擬為低速USB設(shè)備,實(shí)現(xiàn)方案不需要添加其他的USB接口芯片。通常單片機(jī)與上位機(jī)進(jìn)行USB通信,需要用專(zhuān)用的芯片進(jìn)行USB協(xié)議的轉(zhuǎn)換,例如CP2101、PL2303、SL811、PDIUSBD12等。其中CP2101、PL2303芯片使用起來(lái)雖然簡(jiǎn)單,但是功能單一,只能做USB轉(zhuǎn)串口的通訊設(shè)備;而PDIUSBD12、SL811芯片功能較強(qiáng),但是設(shè)計(jì)使用復(fù)雜,這些USB芯片的價(jià)格都相對(duì)較高,增加了系統(tǒng)的硬件成本。而V-USB簡(jiǎn)單易用,成本較低,絕大多數(shù)的AVR系列單片機(jī)加上很少的幾個(gè)外部元件,就可以組成一個(gè)USB系統(tǒng)。

1.2 串口通信簡(jiǎn)介

串口通信基于RS-232-C串行總線接口標(biāo)準(zhǔn),最初是為了連接計(jì)算機(jī)主機(jī)與CRT終端之間的通信,后來(lái)逐漸廣泛地應(yīng)用于各種設(shè)備之間的數(shù)據(jù)交換。早期的計(jì)算機(jī)主機(jī)都帶有RS-232接口,是最常用的數(shù)據(jù)接口,具有傳輸距離遠(yuǎn)、連接方式簡(jiǎn)單、線路占用少、開(kāi)發(fā)資料多等優(yōu)點(diǎn)。絕大多數(shù)的單片機(jī)都內(nèi)置USART單元用于串行通信。

2.下位機(jī)實(shí)現(xiàn)方法

2.1 V-USB下位機(jī)實(shí)現(xiàn)

V-USB系統(tǒng)的硬件結(jié)構(gòu)很簡(jiǎn)單,需要一個(gè)AVR單片機(jī)(片上具有2KB Flash,128字節(jié)RAM的大部分型號(hào)都可以),再加上少量的外部元件(晶振、電阻、穩(wěn)壓二極管等),就組成了一個(gè)基本的V-USB系統(tǒng),實(shí)現(xiàn)方案需占用單片機(jī)的兩個(gè)數(shù)據(jù)引腳(其中D+必須連接至INT0),并不占用其他的UART、計(jì)時(shí)器等硬件資源。系統(tǒng)組成如圖1。

圖中的D1和D2是3.6V穩(wěn)壓二極管,目的是限制USB數(shù)據(jù)線上的電平。USB通信規(guī)范中規(guī)定,數(shù)據(jù)線D+、D-上的電平范圍在3.0V至3.6V之間,而AVR單片機(jī)的輸出電平是VCC。如果單片機(jī)的VCC是5V,如沒(méi)有D1、D2的情況下將導(dǎo)致電平不匹配,會(huì)出現(xiàn)在計(jì)算機(jī)中無(wú)法正確識(shí)別出USB設(shè)備的情況。單片機(jī)所需的電源VCC可由USB的5V輸出電源直接提供,電阻R1和R2起到了限流和保護(hù)的作用,避免意外情況下?lián)p壞計(jì)算機(jī)的USB端口或單片機(jī)的端口。

V-USB的軟件源代碼是由C代碼和匯編代碼組成的,開(kāi)發(fā)環(huán)境為AVR GCC,已組織好幾種不同USB設(shè)備的框架,開(kāi)發(fā)者只需直接利用即可。最小化的V-USB程序框架編譯后需要占用單片機(jī)1150至1400字節(jié)的程序空間。

由于V-USB使用單片機(jī)IO口模擬USB通信,是用純軟件的方式實(shí)現(xiàn)了硬件芯片的功能。而USB通信的速率要求是比較高的。因此在進(jìn)行USB通信時(shí)單片機(jī)的CPU占用率比較高的。為保證可靠的USB數(shù)據(jù)傳輸,單片機(jī)CPU時(shí)鐘必須是工作在12MHz、12.8MHz、15MHz、16MHz、16.5MHz、18MHz、20MHz這幾個(gè)頻率。

2.2 串口通信下位機(jī)實(shí)現(xiàn)

具備USART單元的AVR單片機(jī)都可以使用串行通信方式,硬件實(shí)現(xiàn)僅使用單片機(jī)的RXD和TXD引腳。為和計(jì)算機(jī)的RS-232接口連接,一般使用MAX232芯片進(jìn)行電平轉(zhuǎn)換,這需要增加部分外圍電路,MAX232應(yīng)用電路如圖2:

若要提高用串口通訊硬件的易用性,還可以選擇成品的USB轉(zhuǎn)TTL接口芯片,可以方便的將使用串口通信的單片機(jī)設(shè)備變?yōu)閁SB設(shè)備,并且不影響上位機(jī)和下位機(jī)的程序編制。

為減小波特率偏差,USART對(duì)單片機(jī)的使用的晶振頻率和串口設(shè)置的通訊速率有一些要求,不匹配的波特率和晶振頻率會(huì)使傳輸出現(xiàn)通訊錯(cuò)誤。具體可查各型單片機(jī)的數(shù)據(jù)手冊(cè)中的波特率設(shè)置表。

3.上位機(jī)程序編制

3.1 V-USB上位機(jī)程序編寫(xiě)

V-USB項(xiàng)目在計(jì)算機(jī)端使用跨平臺(tái)的開(kāi)源項(xiàng)目LibUSB來(lái)訪問(wèn)USB設(shè)備。LibUSB-Win32是LibUSB在Windows操作系統(tǒng)(Win2k,WinXP,Vista,Win7)上的通用USB設(shè)備驅(qū)動(dòng)程序及開(kāi)發(fā)包。利用LibUSB可以在不設(shè)計(jì)核心驅(qū)動(dòng)程序代碼的情況下,訪問(wèn)Windows系統(tǒng)上的USB設(shè)備。LibUSB-Win32的開(kāi)源項(xiàng)目網(wǎng)站是http://libusb-win32.sourceforge.net,遵守GNU Lesser General Public License(LGPL)和GNU General Public License(GPL)許可協(xié)議。協(xié)議規(guī)定LibUSB-Win32可以開(kāi)源也可以用于商業(yè)軟件。

表1 兩種通信接口特征對(duì)比

圖1

圖2

LibUSB-Win32為C/C++程序員提供了可直接用于開(kāi)發(fā)的頭文件和Lib文件,其中Lib文件還提供了BCC、GCC和MSVC這三個(gè)版本。C/C++程序員在自己的程序中要使用LibUSB-Win32時(shí),只需包含提供的頭文件,并鏈接合適的Lib文件即可。對(duì)于使用其他語(yǔ)言的開(kāi)發(fā)者,可以通過(guò)直接調(diào)用LibUsb-Win32的動(dòng)態(tài)鏈接庫(kù)中的函數(shù)來(lái)使用LibUSB的功能來(lái)訪問(wèn)USB設(shè)備。如果開(kāi)發(fā)者希望具體的控制通訊細(xì)節(jié),可以使用LibUSB提供的函數(shù)usb_init()、usb_find_busses()、usb_control_msg()來(lái)實(shí)現(xiàn)設(shè)備操作、控制傳輸、批量傳輸、中斷傳輸?shù)裙δ堋?/p>

在V-USB項(xiàng)目中,有多個(gè)使用LibUSBWin32訪問(wèn)USB設(shè)備的工程。開(kāi)發(fā)者可以直接在自己的工程中添加opendevice.h和opendevice.cpp來(lái)訪問(wèn)外圍USB設(shè)備,編程時(shí)僅使用已經(jīng)編寫(xiě)好的usbOpenDevice()、usb_set_configuration()、usb_control_msg()、usb_close()等幾個(gè)函數(shù)就可以快速實(shí)現(xiàn)與外圍USB設(shè)備的數(shù)據(jù)通信功能。

由于AVR單片機(jī)具有低成本、高性能的特性,使得V-USB非常適合于應(yīng)用于USB加密狗、低速USB數(shù)據(jù)采集設(shè)備、HID設(shè)備等,這樣通過(guò)使用極少元件構(gòu)成的具有USB通信功能的單片機(jī)系統(tǒng)比很多使用專(zhuān)用芯片的系統(tǒng)成本低、開(kāi)發(fā)難度低。

目前應(yīng)用V-USB的成熟產(chǎn)品有:

USBasp(USB接口的AVR編程寫(xiě)入器)、AVRCDC(USB轉(zhuǎn)RS232)、USB Bootlader等。在V-USB網(wǎng)站上(見(jiàn)參考文獻(xiàn))還有許多使用V-USB的開(kāi)源項(xiàng)目,這些項(xiàng)目提供了完整的單片機(jī)程序和計(jì)算機(jī)程序的代碼及原理圖,非常方便開(kāi)發(fā)者查閱參考這些資源,并在這些開(kāi)源工程實(shí)例的基礎(chǔ)上進(jìn)行修改,快速開(kāi)發(fā)適合于應(yīng)用需求的單片機(jī)設(shè)備。

3.2 串口通信上位機(jī)程序編寫(xiě)

在Windows下,常用的串口方法主要有:使用MSComm控件、Windows API函數(shù)、第三方類(lèi)庫(kù)等。使用MSComm控件比較簡(jiǎn)單,多種計(jì)算機(jī)編程語(yǔ)言均可利用其實(shí)現(xiàn)對(duì)串口的控制,但是對(duì)于通訊速度和實(shí)時(shí)性要求高的場(chǎng)合,如果處理不好就會(huì)出現(xiàn)內(nèi)存泄露等問(wèn)題。使用Windows API中用于控制串口通信的函數(shù),需要對(duì)相關(guān)的參數(shù)和數(shù)據(jù)結(jié)構(gòu)有一定的了解,雖然各種語(yǔ)言、各種應(yīng)用場(chǎng)合都可以使用,但是編程較為復(fù)雜,開(kāi)發(fā)周期長(zhǎng),只適合需要精準(zhǔn)的控制通訊細(xì)節(jié)的情況。相對(duì)而言第三方的開(kāi)發(fā)類(lèi)庫(kù)例如CSerialPort類(lèi),CSerialPortEx等,不但支持多串口多線程,而且使用簡(jiǎn)單,開(kāi)發(fā)周期短,應(yīng)用場(chǎng)合較廣。

4.通訊速度比較

V-USB將單片機(jī)實(shí)現(xiàn)為支持USB1.1協(xié)議的低速設(shè)備。由于低速USB設(shè)備的速度是1.5M位/秒,而AVR單片機(jī)為單指令周期的,當(dāng)單片機(jī)使用12MHz的時(shí)鐘頻率時(shí),單片機(jī)運(yùn)行時(shí)每8條指令就精確完成一個(gè)數(shù)據(jù)位的采集。這對(duì)單片機(jī)的時(shí)序要求非常嚴(yán)格,所以V-USB項(xiàng)目的核心部分代碼完全由匯編語(yǔ)言實(shí)現(xiàn),并對(duì)AVR GCC編譯器做了優(yōu)化。筆者使用V-USB的最小框架進(jìn)行數(shù)據(jù)傳輸測(cè)試,上位機(jī)發(fā)送一次USB命令,下位機(jī)不做處理直接應(yīng)答,每次傳輸8字節(jié)時(shí)數(shù)據(jù)交換速度最快,約為1600B/s,當(dāng)傳輸字節(jié)數(shù)增加時(shí)速度會(huì)下降,這種數(shù)據(jù)通訊是應(yīng)答式,總數(shù)據(jù)傳輸速度為3200B/s即25.6kbps,加上單片機(jī)數(shù)據(jù)處理的耗時(shí),通訊速率應(yīng)該可以達(dá)到20kbps。

單片機(jī)的串口通信速度依賴于單片機(jī)USART所設(shè)置的波特率,其單位時(shí)位/秒(b/s),即每秒鐘傳輸?shù)亩M(jìn)制位數(shù)。若設(shè)置為9600b/s,則每秒鐘傳輸?shù)淖止?jié)數(shù)為9600/8=1200Byte。由于USART本身是串行通信,所以收發(fā)數(shù)據(jù)時(shí)均是單字節(jié)到達(dá)的。而V-USB可以設(shè)置一次通訊所傳輸?shù)淖止?jié)數(shù),最大一次可以傳輸254Byte。在編程上可以一次傳輸處理指定字節(jié)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)使用上更為簡(jiǎn)單。

5.結(jié)束語(yǔ)

綜上所述,兩種通信接口(如表1所示)各有優(yōu)缺點(diǎn)。V-USB適用于對(duì)單片機(jī)空閑時(shí)間多、通訊速度要求不高,硬件成本較低、易用性好、需要快速開(kāi)發(fā)應(yīng)用USB接口設(shè)備的單片機(jī)項(xiàng)目。串口通信適用于傳輸距離遠(yuǎn)、處理器功能任務(wù)復(fù)雜、需要對(duì)數(shù)據(jù)通信嚴(yán)格控制的單片機(jī)項(xiàng)目。

[1]V-USB項(xiàng)目.http://www.obdev.at/vusb/.

[2]libusb-win32項(xiàng)目.http://libusb-win32.sourceforge.net.

[3]ATMEL公司.http://www.atmel.com.

[4]MSDN.http://www.microsoft.com/msdn.

猜你喜歡
單片機(jī)設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
基于VB6.0+Access2010開(kāi)發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
如何在設(shè)備采購(gòu)中節(jié)省成本
主站蜘蛛池模板: 国产尹人香蕉综合在线电影| 色九九视频| 久草热视频在线| 国产情侣一区二区三区| 99re热精品视频中文字幕不卡| 亚洲中文字幕无码爆乳| 国产91九色在线播放| a色毛片免费视频| 天堂av高清一区二区三区| 67194亚洲无码| 国产一区二区三区精品欧美日韩| 伊人激情久久综合中文字幕| 久久伊人久久亚洲综合| 亚洲天堂网视频| 在线观看网站国产| 国产精品手机视频一区二区| 国产高清在线精品一区二区三区| 国产日韩精品欧美一区喷| 亚洲69视频| 欧美日韩国产精品va| 国产精品99久久久久久董美香| 亚洲第一成年网| 亚洲人成色77777在线观看| 91欧洲国产日韩在线人成| 欧美成在线视频| 91精品国产91欠久久久久| 曰韩人妻一区二区三区| 国产v精品成人免费视频71pao | 亚洲无码高清免费视频亚洲 | 亚洲日韩精品伊甸| 欧美精品二区| 一级毛片在线播放| 在线观看精品自拍视频| 呦女精品网站| 久久a级片| 国产精品19p| 97无码免费人妻超级碰碰碰| 久久久久久久久亚洲精品| 99久久成人国产精品免费| 国产极品美女在线播放| 黄色污网站在线观看| 在线观看91精品国产剧情免费| 她的性爱视频| 亚洲av日韩av制服丝袜| 欧美精品成人| 国产一区二区三区在线精品专区| 黄片一区二区三区| 欧美自拍另类欧美综合图区| 黄色网站不卡无码| 国产97公开成人免费视频| 亚洲熟女偷拍| 午夜国产精品视频| 国产一区二区福利| 国产1区2区在线观看| 亚洲成a人片| 99在线视频免费| 国产SUV精品一区二区| 亚洲中字无码AV电影在线观看| 国产丰满大乳无码免费播放| 高清大学生毛片一级| 伊人久久精品无码麻豆精品| 亚洲成a人片7777| 亚洲精品老司机| 欧美色亚洲| 亚洲中文在线看视频一区| 国产成人区在线观看视频| 国产视频大全| 日韩国产综合精选| 素人激情视频福利| 亚洲成a人在线观看| 国产黄在线免费观看| 国产精品真实对白精彩久久| 国产精品观看视频免费完整版| 久久综合伊人77777| 国产欧美又粗又猛又爽老| 欧美色图久久| 亚洲综合18p| 孕妇高潮太爽了在线观看免费| 婷婷六月综合网| 日韩毛片在线播放| 国产人成在线观看| 国产一级在线观看www色|