與計(jì)算機(jī)接口設(shè)計(jì)_第1頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第2頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第3頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第4頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

與計(jì)算機(jī)接口設(shè)計(jì)第一頁(yè),共五十九頁(yè),2022年,8月28日是時(shí)間上還需要額外的開(kāi)銷。而串行通信的突出的優(yōu)點(diǎn)是僅僅需要數(shù)量很少的傳輸線,特別適合遠(yuǎn)距離傳輸。此外,對(duì)于PIC單片機(jī)而言,串行通信的另一個(gè)優(yōu)點(diǎn)就是,需要占用的引腳的資源較少。PIC16F87X單片機(jī)內(nèi)部集成了兩個(gè)類型不同的串行通信模塊,即通用同步/異步收發(fā)器USART(UniversalSynchronous/AsynchronousReceiverTransmitter)模塊和主控同步串行端口MSSP(MasterSynchronousSerialPort)模塊。前者的主要應(yīng)用目標(biāo)是系統(tǒng)之間的遠(yuǎn)距離串行通信,此項(xiàng)技術(shù)的應(yīng)用歷史比較久遠(yuǎn)。而后者的主要應(yīng)用目標(biāo)是系統(tǒng)內(nèi)部近距離的串行擴(kuò)展。串行通信的實(shí)現(xiàn),在制式、種類、形式、規(guī)范、標(biāo)準(zhǔn)、編碼、檢錯(cuò)、糾錯(cuò)、幀結(jié)構(gòu)、組網(wǎng)方式、調(diào)制方式等方面,存在著多種類型、變化、選擇和解決方案。例如,Philips公司發(fā)明的I2C總線,Intel等公司提出的SMBUS總線,F(xiàn)reescale公司首先應(yīng)用的SPI接口,美國(guó)國(guó)家半導(dǎo)體公司(NSC)公司首先應(yīng)用的MicroWire接口,達(dá)拉斯公司推出的1-Wire總線,美國(guó)電子工業(yè)協(xié)會(huì)推薦標(biāo)準(zhǔn)RS-232、RS433、RS-485接口,Intel等公司提出的USB總線,蘋(píng)果公司提出的IEEE-1394總線,博世公司提出的CAN總線,現(xiàn)場(chǎng)總線基金推出的FF總線,Motorola公司聯(lián)合東芝公司共同開(kāi)發(fā)的LONworks總線等,都是用來(lái)實(shí)現(xiàn)與串行通信功能相關(guān)的技術(shù)和規(guī)范。第二頁(yè),共五十九頁(yè),2022年,8月28日8.1標(biāo)準(zhǔn)串行接口RS-232C接續(xù)串行通信是指單片機(jī)或者計(jì)算機(jī)和外設(shè)之間使用一根數(shù)據(jù)信號(hào)線,數(shù)據(jù)在一個(gè)數(shù)據(jù)信號(hào)線上一位一位地進(jìn)行傳輸,每一位數(shù)據(jù)都占據(jù)一個(gè)固定地時(shí)間長(zhǎng)度,串行通信的特點(diǎn)是使用的數(shù)據(jù)線少,其傳輸?shù)乃俣缺容^慢。串行通信的優(yōu)點(diǎn)也正體現(xiàn)在遠(yuǎn)程通信和上下位機(jī)通信中,隨著新的串行數(shù)據(jù)協(xié)議的誕生,速度和距離都有了較大提高。一個(gè)完整的串行通信系統(tǒng)如圖8.1所示,該通信系統(tǒng)包括數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)。

1.?dāng)?shù)據(jù)通信設(shè)備DTE:DTE是產(chǎn)生二進(jìn)制信號(hào)的數(shù)據(jù)源,也是接收信息的目的,是由數(shù)據(jù)發(fā)送器或接收器或兼具兩者組成的設(shè)備,它可以是一臺(tái)計(jì)算機(jī)。

2.?dāng)?shù)據(jù)通信設(shè)備DCE:DCE是一個(gè)使傳輸信號(hào)符合線路要求,或者滿足DTE要求的信號(hào)匹配器,它是提供數(shù)據(jù)終端設(shè)備與通信線路之間通信的建立、維持和終止連接等功能的設(shè)備,同時(shí)執(zhí)行信號(hào)變換與編碼,它可以是一個(gè)MODEM。第三頁(yè),共五十九頁(yè),2022年,8月28日?qǐng)D8.1串行通信系統(tǒng)

在數(shù)據(jù)通信、計(jì)算機(jī)網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)中,經(jīng)常采用串行通信來(lái)交換數(shù)據(jù)和信息。1969年,美國(guó)電子工業(yè)協(xié)會(huì)(EIA)公布了RS-232C作為串行通信接口的電氣標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)間按位串行傳輸?shù)慕涌谛畔?,合理安排了接口的電氣信?hào)和機(jī)械要求,在世界范圍內(nèi)得到了廣泛的應(yīng)用。但它采用單端驅(qū)動(dòng)非差分接收電路,因而存在著傳輸距離不太遠(yuǎn)(最大傳輸距離15m)和傳送速率不太高(最大位速率為20Kb/s)的問(wèn)題。遠(yuǎn)距離串行通信必須使用Modem,增加了成本。在分布式控制系統(tǒng)和工業(yè)局部網(wǎng)絡(luò)中,傳輸距離常介于近距離(<20m)和遠(yuǎn)距離(>2km)之間的情況,這時(shí)RS-232C(25腳連接器)不能采用,用Modem又不經(jīng)濟(jì),因而需要制定新的串行通信接口標(biāo)準(zhǔn)。第四頁(yè),共五十九頁(yè),2022年,8月28日1977年EIA制定了RS-449。它除了保留與RS-232C兼容的特點(diǎn)外,還在提高傳輸速率,增加傳輸距離及改進(jìn)電氣特性等方面作了很大努力,并增加了10個(gè)控制信號(hào)。與RS-449同時(shí)推出的還有RS-422和RS-423,它們是RS-449的標(biāo)準(zhǔn)子集。另外,還有RS-485,它是RS-422的變形。RS-422、RS-423是全雙工的,而RS-485是半雙工的。RS-422標(biāo)準(zhǔn)規(guī)定采用平衡驅(qū)動(dòng)差分接收電路,提高了數(shù)據(jù)傳輸速率(最大位速率為10Mb/s),增加了傳輸距離(最大傳輸距離1200m)。RS-423標(biāo)準(zhǔn)規(guī)定采用單端驅(qū)動(dòng)差分接收電路,其電氣性能與RS-232C幾乎相同,并設(shè)計(jì)成可連接RS-232C和RS-422。它一端可與RS-422連接,另一端則可與RS-232C連接,提供了一種從舊技術(shù)到新技術(shù)過(guò)渡的手段。同時(shí)又提高位速率(最大為300Kb/s)和傳輸距離(最大為600m)。RS-485為半雙工的,當(dāng)用于多站互連時(shí)可節(jié)省信號(hào)線,便于高速、遠(yuǎn)距離傳送。許多智能儀器設(shè)備均配有RS-485總線接口,將它們聯(lián)網(wǎng)也十分方便。串行通信由于接線少、成本低,在數(shù)據(jù)采集和控制系統(tǒng)中得到了廣泛的應(yīng)用,產(chǎn)品也多種多樣。8.1.1RS-232C接口規(guī)格RS-232C其中RS是RecommendedStandard的縮寫(xiě),代表標(biāo)準(zhǔn),232是標(biāo)識(shí)符,C代表RS-232的最新一次修改(1969年),在這之前,有過(guò)RS-232A、RS-232B標(biāo)準(zhǔn),它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程?,F(xiàn)在,計(jì)算機(jī)上的串行通信端口(RS-232)是標(biāo)準(zhǔn)配置端口,已經(jīng)得到廣泛應(yīng)用,目前計(jì)算機(jī)上一般都1~2個(gè)標(biāo)準(zhǔn)RS-232C串口,即通道COM1和COM2。第五頁(yè),共五十九頁(yè),2022年,8月28日1.RS-232C標(biāo)準(zhǔn)的電氣特性EIA-RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都作了明確規(guī)定。在TXD和RXD引腳上電平定義:邏輯1(MARK)=-3V~-15V;邏輯0(SPACE)=+3~+15V在RTS、CTS、DSR、DTR和DCD等控制線上電平定義:信號(hào)有效(接通,ON狀態(tài),正電壓)=+3V~+15V;信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài),負(fù)電壓)=-3V~-15V對(duì)于數(shù)據(jù)(信息碼):邏輯“1”的傳輸?shù)碾娖綖?3V~-15V,邏輯“0”傳輸?shù)碾娖綖?3V~+15V;對(duì)于控制信號(hào);接通狀態(tài)(ON)即信號(hào)有效的電平為+3V~+15V,斷開(kāi)狀態(tài)(OFF)即信號(hào)無(wú)效的電平為-3V~-15V,也就是當(dāng)傳輸電平的絕對(duì)值大于3V時(shí),電路可以有效地檢查出來(lái);而介于-3~+3V之間的電壓即處于模糊區(qū)電位,此部分電壓將使得計(jì)算機(jī)無(wú)法準(zhǔn)確判斷傳輸信號(hào)的意義,可能會(huì)得到0,也可能會(huì)得到1,如此得到的結(jié)果是不可信的,在通信時(shí)候體現(xiàn)的是會(huì)出現(xiàn)大量誤碼,造成通信失敗。因此,實(shí)際工作時(shí),應(yīng)保證傳輸?shù)碾娖皆凇溃?~15)V之間。目前,大部分計(jì)算機(jī)的RS-232C通信接口都使用了DB9連接器,主板的接口連接器有9根針輸出,也有些比較舊的計(jì)算機(jī)使用DB25連接器輸出,表8.1為RS-232C串口引腳定義表。第六頁(yè),共五十九頁(yè),2022年,8月28日表8.1RS-232C串口引腳定義表第七頁(yè),共五十九頁(yè),2022年,8月28日RS-232C規(guī)定的邏輯電平與一般微處理器、單片機(jī)的邏輯電平是不同的,例如RS-232的邏輯“1”是以-3~-15V來(lái)表示的,而單片機(jī)的邏輯“1”是以+5V來(lái)表示的,兩者完全不同。因此,單片機(jī)系統(tǒng)要和電腦的RS-232接口進(jìn)行通信,就必須把單片機(jī)的信號(hào)電平(TTL電平)轉(zhuǎn)換成計(jì)算機(jī)的RS-232C電平,或者把計(jì)算機(jī)的RS-232C電平轉(zhuǎn)換成單片機(jī)的TTL電平,通信時(shí)必須對(duì)兩種電平進(jìn)行轉(zhuǎn)換。實(shí)現(xiàn)這種轉(zhuǎn)換的方法可以使用分立元件,也可以使用專用RS-232電平轉(zhuǎn)換芯片。目前較為廣泛地使用專用電平轉(zhuǎn)換芯片,如MC1488、MC1489、MAX232等電平轉(zhuǎn)換芯片來(lái)實(shí)現(xiàn)EIA到TTL電平的轉(zhuǎn)換。下面介紹MAXIM公司的單電源電平轉(zhuǎn)換芯片MAX232及接口電路。如圖8.2中所示,MAX232是單電源雙RS-232發(fā)送/接收芯片,采用單電源(+5V)供電,外接只需4個(gè)電容,便可以構(gòu)成標(biāo)準(zhǔn)的RS-232通信接口,硬件接口簡(jiǎn)單,所以被廣泛采用。圖8.2MAX232實(shí)物及芯片引腳排列第八頁(yè),共五十九頁(yè),2022年,8月28日8.1.2接續(xù)方法單片機(jī)和計(jì)算機(jī)RS-232接口電路如圖8.3所示,圖中的C1、C2、C3、C4是電荷泵升壓及電壓反轉(zhuǎn)部分電路,產(chǎn)生V+、V-電源供EIA電平轉(zhuǎn)換使用,C5是VCC對(duì)地去耦電容,其值為0.1UF,電容C1~C5安裝時(shí)必須盡量靠近MAX232芯片引腳,以提高抗干擾能力。圖8.3采用MAX232CPE芯片的PC機(jī)與單片機(jī)串行通信接口電路第九頁(yè),共五十九頁(yè),2022年,8月28日?qǐng)D8.4是一個(gè)采用分立元件構(gòu)成的簡(jiǎn)易R(shí)S-232串行通信接口電路,使用三極管進(jìn)行電平轉(zhuǎn)換,由于簡(jiǎn)單的通信,對(duì)于通信穩(wěn)定性要求較高的應(yīng)用,不建議使用分立元件,因?yàn)榉至⒃娐返姆€(wěn)定性,誤碼率較高,不能完全滿足RS-232C的全部技術(shù)指標(biāo)。分立元件組成的電路優(yōu)點(diǎn)是成本低廉,部分網(wǎng)站上介紹的產(chǎn)品就分立元件構(gòu)成。圖8.4采用分立元件的簡(jiǎn)易R(shí)S-232C通信接口電路第十頁(yè),共五十九頁(yè),2022年,8月28日8.1.3PIC串行通信設(shè)計(jì)實(shí)例當(dāng)PIC單片機(jī)不具備片上硬件USART或者USART不夠用時(shí),可以利用軟件模擬實(shí)現(xiàn)異步串行通信。Microchip公司推出的PIC系列單片機(jī)PIC16C711具有運(yùn)行速度快、低功耗、價(jià)格低、體積小等優(yōu)點(diǎn)。因?yàn)椋痪邆溆布SART時(shí)需要用一般I/O口來(lái)模擬串行口。1.串行接口硬件電路

如圖8.5所示,RB0為接收腳,RB5為發(fā)送腳。RB0除作為一般I/O引腳外,還可以作為外部中斷輸入引腳,引起中斷的方式分為上跳沿和下跳沿兩種方式。設(shè)置下跳沿引起中斷。當(dāng)起始位到來(lái)時(shí),RB0上出現(xiàn)下跳沿,引起中斷,如果不是干擾信號(hào)則開(kāi)始接收數(shù)據(jù)。RS-485標(biāo)準(zhǔn)的特點(diǎn)是抗干擾能力強(qiáng),傳輸速率高、傳送距離遠(yuǎn)。它規(guī)定了雙端(平衡式)電氣接口特性。當(dāng)單片機(jī)與具有RS-485接口的PC機(jī)通信時(shí),需要進(jìn)行信號(hào)形式的轉(zhuǎn)換。從單片機(jī)發(fā)送到PC機(jī)的信號(hào)首先轉(zhuǎn)換成平衡信號(hào),再送往PC機(jī)。從PC機(jī)發(fā)送到單片機(jī)的信號(hào)先轉(zhuǎn)換成非平衡信號(hào),再輸入單片機(jī)。信號(hào)形式的轉(zhuǎn)換工作由RS-485接口芯片SN75176完成。SN75176差分總線收發(fā)器工作在半雙工方式,當(dāng)工作于發(fā)送方式時(shí),發(fā)送使能引腳DE為高電平,接收使能引腳RE也為高電平。當(dāng)工作于接收方式時(shí),發(fā)送使能引腳DE為低電平,接收使能引腳RE也為低電平。這樣,可以將DE與RE連接在一起,由RB6引腳輸出控制信號(hào),控制SN75176的發(fā)送和接收使能。為了減少線路上信號(hào)的反射,需要匹配線路的特性阻抗。由于通信載體是雙絞線,它的特性阻抗為120Ω左右,所以線路設(shè)計(jì)時(shí),在RS-485網(wǎng)絡(luò)傳輸線的始端和末端各應(yīng)接1只120Ω的匹配電阻,R1為單片機(jī)一側(cè)的匹配電阻。由于RS485芯片的特性,接收器的靈敏度為±200mV,即差分輸入端VA-VB≥200mV時(shí),輸出邏輯“1”;VA-VB≤-200mV時(shí),輸出邏輯“0”。當(dāng)︱VA-VB︱≤200mV時(shí),輸出不確定。因此,當(dāng)A、B無(wú)信號(hào)輸入時(shí),可能造成接收引腳R上出現(xiàn)低電平,這會(huì)誤認(rèn)為通信幀起始位到來(lái)而引起工作不正常。第十一頁(yè),共五十九頁(yè),2022年,8月28日為了避免這種情況發(fā)生,可以人工的讓A端電位高于B端電位,使R引腳在RS485總線不發(fā)送期間呈現(xiàn)唯一的高電平,單片機(jī)不會(huì)被誤中斷而接收到亂字符。通過(guò)在A、B接上拉、下拉電阻R3、R2可解決這個(gè)問(wèn)題。圖8.5PIC16C711與PC機(jī)之間的接口電路2.單片機(jī)通信程序框圖

PIC單片機(jī)與PC機(jī)之間的通信方式為半雙工方式。一幀數(shù)據(jù)包括一位起始位、8位數(shù)據(jù)位、一位停止位和無(wú)奇偶校驗(yàn)位。設(shè)發(fā)送和接收數(shù)據(jù)的波特率為9600b/s,則每一位占用的時(shí)間td為19600s,約為104μs。單片機(jī)晶振頻率為4MHz,單片機(jī)執(zhí)行一條指令耗費(fèi)時(shí)間1μs?!駟纹瑱C(jī)接收數(shù)據(jù)程序框圖PIC16C711單片機(jī)的RB0引腳具備外部引腳跳變沿中斷功能,向RB0引腳送一個(gè)上跳沿或下跳沿信號(hào),則INTCON寄存器的外部引腳跳變沿中斷標(biāo)志位INTF被置1。如果總中斷和外部引腳跳變沿中斷都使能,并且此時(shí)單片機(jī)沒(méi)有執(zhí)行其他中斷服務(wù)子程序,程序進(jìn)入INT中斷服務(wù)子程序。根據(jù)異步串行通信的特點(diǎn),通信線路空閑時(shí)單片機(jī)接收的是第十二頁(yè),共五十九頁(yè),2022年,8月28日高電平,起始位到來(lái)時(shí)單片機(jī)接收到低電平,因此空閑位和起始位之間是一個(gè)下跳沿。單片機(jī)接收到下跳沿即起始位后,馬上進(jìn)入中斷服務(wù)子程序,準(zhǔn)備接收一幀數(shù)據(jù)。因此在主程序中設(shè)置由下跳沿引起外部引腳跳變沿中斷。下面將主要分析接收子程序即中斷服務(wù)子程序。單片機(jī)接收數(shù)據(jù)程序框圖如圖8.6所示。進(jìn)入中斷服務(wù)子程序后,首先保護(hù)中斷現(xiàn)場(chǎng),然后檢測(cè)起始位是否是“真的”。由于可能存在的各種干擾,PIC單片機(jī)有可能接收到的干擾信號(hào)正好是一個(gè)下跳沿,而實(shí)際上此時(shí)根本沒(méi)有數(shù)據(jù)到來(lái),從而造成誤接收數(shù)據(jù)。因此檢測(cè)起始位的真實(shí)性是有必要的。采取的方法是在52μs(起始位的中點(diǎn))后,檢測(cè)一次RB0上的信號(hào)。程序框圖中是延時(shí)47μs后檢測(cè)RB0上的信號(hào),原因是保護(hù)中斷現(xiàn)場(chǎng)的幾條指令要耗費(fèi)幾個(gè)μs。如果是低電平,則起始位是“真的”,否則為干擾信號(hào),單片機(jī)清INTF標(biāo)志位,然后退出中斷服務(wù)子程序,回到主程序。若起始位是“真的”,則準(zhǔn)備接收數(shù)據(jù)。設(shè)計(jì)規(guī)定數(shù)據(jù)位為8位,故首先設(shè)置接收計(jì)數(shù)器R_CNT內(nèi)容為8。然后將STATUS寄存器中的C位清零,并右移接收數(shù)據(jù)寄存器RCV_R。C的內(nèi)容即0移入RCV_R最高位,接下來(lái)接收數(shù)據(jù)位。為盡量保證數(shù)據(jù)的準(zhǔn)確性,應(yīng)該在每位數(shù)據(jù)的中點(diǎn)檢測(cè)該位數(shù)據(jù)。因此,檢測(cè)第一位數(shù)據(jù)的時(shí)刻距離檢測(cè)起始位的時(shí)刻應(yīng)該是一位數(shù)據(jù)所占的時(shí)間即104μs,此后的每一位數(shù)據(jù)檢測(cè)時(shí)刻之間也是如此。此時(shí)又要用到延時(shí)程序。因?yàn)槊績(jī)纱螜z測(cè)時(shí)刻之間除了延時(shí)之外,指令(C清零、右移等指令)還要占用時(shí)間,這些指令占用5~6μs,因此,為了盡量保證在每一位的中心位置檢測(cè)數(shù)據(jù),延時(shí)時(shí)間定為98μs。如果檢測(cè)得到的數(shù)據(jù)位為1,則置RCV_R最高位為1。如果數(shù)據(jù)位為0,則不必改變最高位,因?yàn)镃為0且已經(jīng)移入RCV_R的最高位。然后,將接收計(jì)數(shù)器內(nèi)容減1。8位數(shù)據(jù)接收完畢后,清INTF標(biāo)志。最后,退出中斷服務(wù)子程序。至此,8位數(shù)據(jù)接收全部存放于RCV_R中。第十三頁(yè),共五十九頁(yè),2022年,8月28日●單片機(jī)發(fā)送數(shù)據(jù)程序框圖用RB5引腳作為發(fā)送引腳,單片機(jī)發(fā)送數(shù)據(jù)程序框圖如圖8.7所示。當(dāng)有數(shù)據(jù)要從單片機(jī)發(fā)往PC機(jī)時(shí),單片機(jī)調(diào)用發(fā)送子程序。在發(fā)送子程序中,首先設(shè)置發(fā)送計(jì)數(shù)器內(nèi)容為8,然后發(fā)送起始位,起始位應(yīng)持續(xù)104μs。因此要調(diào)用延時(shí)子程序,延時(shí)子程序執(zhí)行完后,RB5上的信號(hào)并未立刻變成第一位數(shù)據(jù)的值,這是因?yàn)檫€要執(zhí)行幾條指令,如右移TRS_R、置位等RB5上的信號(hào)才會(huì)變化。假設(shè)延時(shí)104μs,那么加上幾條指令的執(zhí)行時(shí)間,起始位就比104μs寬了。因此,延時(shí)子程序少于104μs,根據(jù)具體的程序定為97μs。然后,右移發(fā)送數(shù)據(jù)寄存器TRS_R,將其最低位即要發(fā)送的數(shù)據(jù)位移入C中,再根據(jù)C中的內(nèi)容將RB5清零或置1,然后將發(fā)送計(jì)數(shù)器內(nèi)容減1,并判斷其是否為0。若為1,則說(shuō)明未發(fā)送完畢,繼續(xù)發(fā)送;否則,發(fā)送停止位。最后,退出發(fā)送子程序。第十四頁(yè),共五十九頁(yè),2022年,8月28日?qǐng)D8.6單片機(jī)接收數(shù)據(jù)程序框圖圖8.7單片機(jī)發(fā)送數(shù)據(jù)程序框圖第十五頁(yè),共五十九頁(yè),2022年,8月28日8.2PIC的USART應(yīng)用

8.2.1PIC16F877非同步通信功能(USART接口)通用同步/異步接收發(fā)送模塊(USART)是兩個(gè)串行通信接口之一,USART又稱為SCI(SerialCommunicationInterface)。USART可以設(shè)置為全雙工異步串行通信系統(tǒng),這種方式可以與個(gè)人計(jì)算機(jī)PC或串行接口CRT等外圍設(shè)備進(jìn)行串行通信。也可以設(shè)置為半雙工異步串行通信系統(tǒng),與串行接口的A/D或D/A集成電路、串行EEPROM等器件連接。

USART是二線制串行通信接口,它可以被定義如下三種工作方式:全雙工異步方式、半雙工同步主控方式、半雙工同步從動(dòng)方式。為了把RC6和RC7分別設(shè)置成串行通信接口的發(fā)送/時(shí)鐘(TX/CK)線和接收/數(shù)據(jù)(TX/DT)線,必須首先把SPEN位(TCSTAT的RD7)和方向寄存器TRISC的D7:D6置1。

USART功能模塊含有兩個(gè)8位可讀/寫(xiě)的狀態(tài)/控制寄存器,它們是發(fā)送狀態(tài)/控制寄存器TXSTA和接收狀態(tài)/控制寄存器。第十六頁(yè),共五十九頁(yè),2022年,8月28日USART帶有一個(gè)8位波特率發(fā)生器BRG(BaudRatoGenerator),BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個(gè)獨(dú)立的8位定時(shí)器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器TXSTA的BRGH位(即D2)也被用來(lái)控制波特率(在同步方式下忽略BRGH位)。向波特率寄存器SPBRG寫(xiě)入一個(gè)新的初值時(shí),都會(huì)使BRG定時(shí)器復(fù)位清零,由此可以保證BRG不需要等到定時(shí)器溢出后就可以輸出新的波特率。對(duì)USART方式進(jìn)行初始化的程序如下:BSFSTATUS,RP0;將指針指向數(shù)據(jù)存儲(chǔ)器的第1頁(yè)MOVLW0x19MOVWFSPBRG;設(shè)置波特率為9600BCFSTATUS,RP0;將指針指向數(shù)據(jù)存儲(chǔ)器的第0頁(yè)CLRFRCSTA;將接收控制和狀態(tài)寄存器清零BSFRCSTA,SPEN;串口允許CLRFPIR1;清除中斷標(biāo)志BSFSTATUS,RP0;將指針指向數(shù)據(jù)存儲(chǔ)器的第1頁(yè)CLRFTXSTA;將發(fā)送控制和狀態(tài)寄存器清零BSFTXSTA,BRGH;設(shè)置為異步、高速波特率BSFTXSTA,TXEN;允許發(fā)送BCFSTATUS,RP0;將指針指向數(shù)據(jù)存儲(chǔ)器的第0頁(yè)BSFRCSTA,CREN;允許接收初始化完成后,即可發(fā)送或接收數(shù)據(jù)。在發(fā)送或接收數(shù)據(jù)時(shí),通過(guò)查詢發(fā)送/接收中斷標(biāo)志位即可判斷是否發(fā)送完一個(gè)數(shù)據(jù)/接收到一個(gè)數(shù)據(jù)。送/接收中斷標(biāo)地不需要也不有用軟件復(fù)位。第十七頁(yè),共五十九頁(yè),2022年,8月28日在異步串行發(fā)送的過(guò)程中,只要TXREG寄存器為空,中斷標(biāo)志TXIF就置位。因此,TXIF為1并不是發(fā)送完畢的標(biāo)志,但仍可以用TXIF標(biāo)志來(lái)判斷。因此當(dāng)TXREG為空時(shí),將數(shù)據(jù)送入后,數(shù)據(jù)會(huì)保留在TXREG寄存器中,直到前一個(gè)數(shù)據(jù)從發(fā)送移位寄存器中移出,即前一個(gè)數(shù)據(jù)發(fā)送。8.2.2串行接口芯片8251A

8251的管腳和內(nèi)部結(jié)構(gòu)如圖8.8所示。1.同CPU的連接信號(hào)●RESET:當(dāng)這個(gè)引腳上出現(xiàn)一個(gè)6倍時(shí)鐘寬的高電平信號(hào)時(shí),芯片被復(fù)位,使芯片處于空閑狀態(tài)。這個(gè)空閑狀態(tài)將一直保持到由編程確定了新?tīng)顟B(tài)才結(jié)束。在系統(tǒng)中使用此芯片時(shí),總是把復(fù)位端與系統(tǒng)的復(fù)位線相連,使它受到加電自動(dòng)復(fù)位和人工復(fù)位的控制。●CLK:是為芯片內(nèi)有關(guān)電路工作提供時(shí)鐘的輸入端。這個(gè)時(shí)鐘的頻率與數(shù)據(jù)速率并無(wú)直接關(guān)系,但是,為了電路工作可靠,在同步方式下最好使這個(gè)頻率比數(shù)據(jù)速率大30倍以上。在異步方式下,大4.5倍?!?、:是CPU對(duì)8251A中的寄存器讀、寫(xiě)時(shí)的控制信號(hào)輸入端?!馛/:是一個(gè)決定CPU對(duì)芯片讀寫(xiě)內(nèi)容的控制輸入端。如果輸入為高電平,CPU對(duì)芯片就是寫(xiě)控制字或讀狀態(tài)字;反之,讀寫(xiě)的內(nèi)容就是數(shù)據(jù)。通常,將該端與地址線的最低位相接。于是,8251A就占有兩個(gè)端口地址,偶地址為數(shù)據(jù)口地址,而奇地址為控制口地址。●:片選輸入端。該引腳輸入低電平時(shí),芯片可以與CPU之間傳輸數(shù)據(jù);反之,芯片的8個(gè)數(shù)據(jù)引腳處于懸空狀態(tài)。第十八頁(yè),共五十九頁(yè),2022年,8月28日?qǐng)D8.88251A芯片引腳

●D0~D7:雙向8位數(shù)據(jù)線,同片內(nèi)數(shù)據(jù)總線緩沖器相連,CPU通過(guò)D0~D7向8251A寫(xiě)數(shù)據(jù)和控制字,以及讀數(shù)據(jù)和狀態(tài)字。2.MODEM控制信號(hào)8251A還提供了四個(gè)與MODEM相連的控制信號(hào),信號(hào)的含義與RS232C標(biāo)準(zhǔn)相同?!瘢―ataTerminalReady):數(shù)據(jù)終端準(zhǔn)備好(輸出,低電平有效)。這是一個(gè)通用的輸出信號(hào),可由命令字的位1置“1”,而變?yōu)橛行?,用以表示CPU準(zhǔn)備就緒。第十九頁(yè),共五十九頁(yè),2022年,8月28日●(DataTerminalReady):數(shù)據(jù)終端準(zhǔn)備好(輸出,低電平有效)。這是一個(gè)通用的輸出信號(hào),可由命令字的位1置“1”,而變?yōu)橛行?,用以表示CPU準(zhǔn)備就緒?!瘢≧equestToSend):請(qǐng)求發(fā)送(輸出,低電平有效)。此信號(hào)用于通知調(diào)制器,CPU已準(zhǔn)備好發(fā)送。它可由命令字的位5置“1”而變?yōu)橛行Вǖ碗娖接行В??!?ClearToSend):清除發(fā)送信號(hào)(輸入,低電平有效)。這是調(diào)制解凋器或其它外設(shè)送到8251A中的調(diào)制解調(diào)器控制器的信號(hào)。當(dāng)其有效時(shí),表示允許USART發(fā)送數(shù)據(jù)。上述四個(gè)信號(hào)在使用時(shí)應(yīng)按規(guī)定引腳連接。信號(hào)在傳輸過(guò)程中,由MODEM輸入后存放在8251A的狀態(tài)字節(jié)中,芯片內(nèi)對(duì)此并不作處理,只有當(dāng)CPU讀狀態(tài)后才可能給出響應(yīng)。CTS也是從MODEM送來(lái)的信號(hào),如果為低電平。且8251A中已經(jīng)設(shè)置了允許發(fā)送命令,芯片就可以向MODEM送出串行數(shù)據(jù)。如果在數(shù)據(jù)傳送中,出現(xiàn)了某個(gè)條件不滿足的情況,那么,在傳輸完當(dāng)前的字節(jié)后,即行停止。和都是由CPU寫(xiě)命令時(shí)給8251A設(shè)置的,為使兩個(gè)引腳有效(低電平),對(duì)寄存器中這兩位應(yīng)寫(xiě)入“1”。3.發(fā)送器有關(guān)信號(hào)●TxD:發(fā)送數(shù)據(jù)。發(fā)送緩沖器從數(shù)據(jù)總線上接收數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù),并按要求插入附加字符或附加位后,在時(shí)鐘的下降沿按位從TxD上發(fā)送出去?!駒RDY:發(fā)送器準(zhǔn)備好信號(hào)。如果該信號(hào)有效,就表示發(fā)送緩沖器已空,CPU可以向芯片送入新的數(shù)據(jù)。這個(gè)信號(hào)的狀態(tài)要受到命令字中TxEN位(允許發(fā)送)的控制。如果把TxRDY信號(hào)作為向CPU請(qǐng)求數(shù)據(jù)的中斷信號(hào),TxEN位就可以看作是中斷控制的屏蔽位。在8251A的狀態(tài)字中有一位TxRDY,CPU也可以用查詢的方式判斷是否可以送數(shù)據(jù)。第二十頁(yè),共五十九頁(yè),2022年,8月28日●TxE:發(fā)送緩沖器空標(biāo)志。不管發(fā)送時(shí)是處于等待還是發(fā)送狀態(tài),只要發(fā)送緩沖器中沒(méi)有再要發(fā)送的字符,這個(gè)標(biāo)志就變高。當(dāng)從CPU送入一個(gè)數(shù)據(jù)字符時(shí),該位標(biāo)志就被復(fù)位。這個(gè)標(biāo)志可以用來(lái)表示一段數(shù)據(jù)傳輸?shù)慕Y(jié)束。如果是半雙工工作,這個(gè)標(biāo)志可以用作從發(fā)到收的轉(zhuǎn)換。同步工作時(shí),如果臨時(shí)出現(xiàn)TxE,就意味著數(shù)據(jù)發(fā)送出現(xiàn)空缺,芯片會(huì)自動(dòng)插補(bǔ)同步字符?!瘢狠斎丝刂瓢l(fā)送器數(shù)據(jù)速率的時(shí)鐘。每個(gè)數(shù)據(jù)的移位輸出,是在TxC的下降沿實(shí)現(xiàn)的。異步方式下,的頻率可以是數(shù)據(jù)速率的1、16或64倍。同步方式時(shí),

的頻率與數(shù)據(jù)速率相同。4.接收器有關(guān)信號(hào)●RxD:接收數(shù)據(jù)。用來(lái)接收外設(shè)送來(lái)的串行數(shù)據(jù),按規(guī)定檢查有關(guān)字符或有關(guān)位后,經(jīng)串一并轉(zhuǎn)換送入數(shù)據(jù)總線緩沖器,RxD在時(shí)鐘上升沿采樣輸入?!馬xRDY:接收器準(zhǔn)備好標(biāo)志。如果該位為高電乎,接收緩沖器中就已經(jīng)有組裝好了的一個(gè)數(shù)據(jù)字符,可通知CPU將它取走。與TxRDY相似,RxRDY也可用作中斷請(qǐng)求信號(hào),也可以通過(guò)讀狀態(tài)字了解接收器狀態(tài)。一旦CPU讀走這個(gè)數(shù)據(jù)字符,RxRDY被復(fù)位。要是CPU沒(méi)有及時(shí)取走數(shù)據(jù),新接收數(shù)據(jù)將覆蓋數(shù)據(jù),使一個(gè)數(shù)據(jù)丟失,出現(xiàn)溢出錯(cuò)誤,并反映在狀態(tài)字中?!瘢航邮諘r(shí)鐘輸入端。當(dāng)時(shí)鐘處在上升沿時(shí),才可能把數(shù)據(jù)取樣輸入。時(shí)鐘速率的規(guī)定與相同。實(shí)際上,和往往連接在一起,用同一個(gè)時(shí)鐘源。第二十一頁(yè),共五十九頁(yè),2022年,8月28日●SYNDET/BRKDET:同步和間斷檢測(cè)。芯片在同步方式工作時(shí),用作同步檢測(cè)端;異步時(shí)則用作間斷檢測(cè)輸出。芯片可以由編程確定是內(nèi)同步還是外同步。如果是內(nèi)同步,就由芯片內(nèi)電路搜索同步字符,一旦找到,就由該端輸出一個(gè)高電平。如果是外同步,當(dāng)片外檢測(cè)電路找到同步字符后,就可以從該引腳輸入一個(gè)高電平信號(hào),使8251A正式開(kāi)始接收。一旦開(kāi)始正常接收數(shù)據(jù),同步檢測(cè)端恢復(fù)低電平輸出。異步方式工作中,通常在線路上無(wú)數(shù)據(jù)時(shí)以高電平表示。在8251A中也可以由程序控制,使無(wú)數(shù)據(jù)的間斷時(shí)間內(nèi)線路上呈現(xiàn)低電平,即發(fā)送一個(gè)字符長(zhǎng)度的全“0”碼。接收端具有對(duì)這種間斷碼檢測(cè)的能力,如果檢測(cè)到間斷碼,將從該端輸出一個(gè)高電平。為了避免接收器對(duì)尚未正式開(kāi)始工作的線路低電平誤認(rèn)為間斷狀態(tài),8251A在復(fù)位后總是要在檢測(cè)到一次高電平輸入后,才開(kāi)始對(duì)間斷狀態(tài)的檢測(cè)。對(duì)于8251A它有三個(gè)字,一個(gè)方式指令字、命令指令字、狀態(tài)字,其中方式指令字和命令字都是要寫(xiě)入到控制口里的,而狀態(tài)字是從控制口讀出來(lái)的,如果讀和寫(xiě)能夠區(qū)別,也就是狀態(tài)字和指令字這兩個(gè)可以區(qū)別,但指示字里是方式指示字還是命令指示字,這個(gè)關(guān)系必須要注意,它們的關(guān)系應(yīng)是在開(kāi)機(jī)時(shí)、在復(fù)位時(shí)以及完成后,先給的字認(rèn)為是方式指示字。給完了方式指示字后再給的自動(dòng)認(rèn)為是命令指令字,就不會(huì)把后面給的當(dāng)作方式字進(jìn)行保存,而當(dāng)作命令控制操作。8.2.3USART應(yīng)用通信編程實(shí)例1.概述要在PIC16F877與PC機(jī)間進(jìn)行數(shù)據(jù)交換,這里可應(yīng)用USART來(lái)實(shí)現(xiàn)。在編寫(xiě)程序時(shí)首先要設(shè)置好USART異步通訊模塊工作模式及相關(guān)寄存器,PIC16F877的USART與其他具有USART的PIC單片機(jī)一樣,可以被設(shè)置成為與PC機(jī)進(jìn)行全雙工異步通訊,第二十二頁(yè),共五十九頁(yè),2022年,8月28日它是利用PORTC口的RC6和RC7兩個(gè)引腳作為通訊的2線制串行通訊接口。為了把PORTC口的RC6和RC7兩個(gè)引腳分別設(shè)置成串行通訊接口的發(fā)送(TX)腳和接收(RX)腳,必須要把USART的接收狀態(tài)和控制寄存器RCSTA的bit7(SPEN)位和TRISC寄存器的bit7置“1”,把TRISC寄存器的bit6置“0”。為了使USART分別工作于接收或發(fā)送狀態(tài),就必須設(shè)置相應(yīng)的狀態(tài)寄存器和控制寄存器。在設(shè)置接收器時(shí),要注意接收腳對(duì)接收信號(hào)的采樣。接收腳RX上的數(shù)據(jù)被采樣3次,通過(guò)一個(gè)三中取二邏輯檢測(cè)電路來(lái)判斷RX腳上的電平是高還是低,以作為采樣取值。另外,要使USART工作在異步通訊方式,就必須要設(shè)置通訊的傳送、接收速率即波特率,USART的波特率設(shè)置是通過(guò)控制獨(dú)立的一個(gè)8位波特率發(fā)生器BRG實(shí)現(xiàn)的。在異步工作方式下,串行通訊接口USART采用標(biāo)準(zhǔn)的不歸0(NRZ)格式(即1位起始位、8位或9位數(shù)據(jù)位及1位停止位),最常用的數(shù)據(jù)格式是8位。PIC16F877片內(nèi)的8位波特率發(fā)生器BRG可以用來(lái)驅(qū)動(dòng)振蕩器的時(shí)鐘,產(chǎn)生標(biāo)準(zhǔn)的波特率頻率。PIC16F877的USART發(fā)送和接收順序是從最低位(LSB)開(kāi)始。USART發(fā)送器和接收器在功能上是完全獨(dú)立的,但是它們所用的數(shù)據(jù)格式和波特率必須是相同的。波特率發(fā)生器可以根據(jù)發(fā)送狀態(tài)和控制寄存器TXSTA的bit2(BRGH)位設(shè)置產(chǎn)生2種不同的移位速度:對(duì)系統(tǒng)時(shí)鐘16分頻和64分頻的波特率時(shí)鐘,即設(shè)置該位在異步通訊模式為1時(shí)表示通訊為高速,為0時(shí)表示通訊為低速。要使USART工作于異步通訊模式,可通過(guò)對(duì)發(fā)送狀態(tài)和控制寄存器TXSTA的bit4(SYNC)位設(shè)置清“0”。由上可知,PIC16F877的USART異步工作設(shè)置主要包括對(duì)以下部件的設(shè)置:波特率發(fā)生器BRG、采樣電路、異步發(fā)送器、異步接收器等。這里關(guān)于PIC16F877的USART異步工作有兩點(diǎn)需要說(shuō)明:一是USART硬件不支持奇偶效驗(yàn),但可以用軟件實(shí)現(xiàn)(并可作為第9位數(shù)據(jù)傳輸);二是在CPU處于休眠工作方式時(shí),USART不能工作在異步通訊方式。第二十三頁(yè),共五十九頁(yè),2022年,8月28日2.USART波特率發(fā)生器BRG設(shè)置在異步通訊方式下,波特率發(fā)生器BRG需要設(shè)置一個(gè)初值,以使BRG輸出一個(gè)合適的波特率。在BRG設(shè)置時(shí),其工作在高速還是低速是由發(fā)送狀態(tài)寄存器和控制寄存器TXSTA的bit2(BRCH)位進(jìn)行設(shè)置的。在PIC16F877內(nèi)部時(shí)鐘工作模式下,設(shè)置BRG波特率寄存器SPBRG在低速和高速初值的計(jì)算公式如下:BRGH=0(低速)異步波特率=FOSC/(64(X+1))BRGH=1(高速)波特率=FOSC/(16(X+1))其中,X為SPBRG寄存器的值(0~255)。實(shí)際應(yīng)用中,上式用于高速方式(BRGH=1)下計(jì)算波特率可以減小誤差。另外,在向波特率寄存器SPBRG寫(xiě)入一個(gè)新值時(shí)會(huì)使BRG定時(shí)器復(fù)位(清零),由此就可保證波特率發(fā)生器BRG不需要等到定時(shí)器溢出后就可輸出新的波特率。3.USART異步通訊的寄存器設(shè)置實(shí)現(xiàn)USART異步通訊的寄存器主要有:發(fā)送狀態(tài)寄存器和控制寄存器TXSTA、接收狀態(tài)和控制寄存器RCSTA、波特率發(fā)生器存器SPBRG、發(fā)送數(shù)據(jù)寄存器TXREG、接收數(shù)據(jù)寄存器RCREG、外圍接口中斷使能寄存器PIE1和外圍接口標(biāo)志寄存器PIR1等。●發(fā)送狀態(tài)和控制寄存器(表8.2)表8.2發(fā)送狀態(tài)和控制寄存器第二十四頁(yè),共五十九頁(yè),2022年,8月28日bit7CSRC:異步方式未用。bit6TX9:發(fā)送數(shù)據(jù)長(zhǎng)度選擇位。1=選擇9位數(shù)據(jù);0=選擇8位數(shù)據(jù)。bit5TXEN:發(fā)送允許位。1=允許發(fā)送;0=關(guān)閉發(fā)送。bit4SYNC:USART同步/異步方式選擇位。1=選擇同步方式;0=選擇異步方式。bit3此位未用。bit2BRGH:高速波特率使能位。1=高速;0=低速。bit1TRMT:發(fā)送移位寄存器(TSR)“空”標(biāo)志位。1=TSR空;0=TSR滿。bit0TX9D:發(fā)送數(shù)據(jù)的第9位?!窠邮諣顟B(tài)和控制寄存器(表8.3)表8.3接收狀態(tài)和控制寄存器bit7SPEN:串行口使能位。1=允許串行口工作(把RC7和RC6設(shè)置成串行口引腳;0=禁止止串行工作;bit6RX9:接收數(shù)據(jù)長(zhǎng)度選擇位。1=選擇接收9位數(shù)據(jù);0=選擇接收8位數(shù)據(jù)。bit5SREN:?jiǎn)巫止?jié)接收允許位。異步方式此位未用。Bit4CREN:連續(xù)接收選擇位。1=允許連續(xù)接收;0=禁止連續(xù)接收。第二十五頁(yè),共五十九頁(yè),2022年,8月28日bit3ADDEN:地址匹配檢測(cè)使能位。1=允許地址匹配檢測(cè),允許中斷并且當(dāng)RSR的D8被置1時(shí)讀接收緩沖器數(shù)據(jù);0=禁止地址匹配檢測(cè),接收所有字節(jié),第9位被看作奇偶效驗(yàn)位。bit2FERR:幀格式錯(cuò)標(biāo)志位。1=幀格式錯(cuò)(讀RCREG寄存器可對(duì)該位刷新并且準(zhǔn)備接收下一個(gè)有效位);0=無(wú)幀格式錯(cuò)。bit1OERR:越位溢出錯(cuò)標(biāo)志位。1=有溢出錯(cuò),清CREN位可將此位清零;0=無(wú)溢出錯(cuò)。bit0RX9D:接收數(shù)據(jù)的第9位,可作奇偶效驗(yàn)位。●外圍接口中斷使能寄存器(表8.4)表8.4外圍接口中斷使能寄存器bit5RCIE:串行異步通訊接口接收中斷使能位。1=允許USART接收中斷;0=禁止US2ART接收中斷。bit4TXIE:串行異步通訊接口發(fā)送中斷使能位。1=允許USART發(fā)送中斷;0=禁止USART發(fā)送中斷。其余位在異步通訊中未用。第二十六頁(yè),共五十九頁(yè),2022年,8月28日●外圍接口中斷標(biāo)志寄存器(表8.5)表8.5外圍接口中斷標(biāo)志寄存器bit5RCIF:異步串行通訊(USART)接口接收中斷標(biāo)志位;1=USART接收緩沖區(qū)滿;0=USART接收緩沖區(qū)空。bit4TXIF:異步串行通訊(USART)接口發(fā)送中斷標(biāo)志位;1=USART發(fā)送緩沖區(qū)空;0=USART發(fā)送緩沖區(qū)滿。其余位在異步通訊中未用?!衿渌拇嫫鞑ㄌ芈拾l(fā)生器存器SPBRG的設(shè)置可以參考USR2TA波特率發(fā)生器BRG的設(shè)置內(nèi)容,在設(shè)置該寄存器就是根據(jù)單片機(jī)工作時(shí)鐘頻率確定傳輸數(shù)據(jù)的波特率,只要將其初值寫(xiě)入SPBRG寄存器即可。發(fā)送數(shù)據(jù)寄存器TXREG是將單片機(jī)需要發(fā)送的數(shù)據(jù)存放的寄存器,在單片機(jī)未發(fā)送之前就必須要將備發(fā)送的數(shù)據(jù)裝入該寄存器。接收數(shù)據(jù)寄存器RCREG是將單片機(jī)接收到外界數(shù)據(jù)后存放數(shù)據(jù)的寄存器,在單片機(jī)確定接收的數(shù)據(jù)無(wú)誤后,將其數(shù)據(jù)存放到該寄存器中。第二十七頁(yè),共五十九頁(yè),2022年,8月28日4.PIC16F877單片機(jī)與PC機(jī)實(shí)現(xiàn)電平轉(zhuǎn)換PC機(jī)的串行接口是符合EIARS-232C規(guī)范的外部總線標(biāo)準(zhǔn)接口。RS-232C采用的是負(fù)邏輯,即邏輯”1”:-5~-15V;邏輯”0”:+5~+15V。而CMOS電平為:邏輯“1”:4.99V,邏輯“0”:0.01V;TTL電平的邏輯“1”和“0”則分別為2.4V和0.4V。因此在用RS-232C總線進(jìn)行串行通信時(shí)需外接電路實(shí)現(xiàn)電平轉(zhuǎn)換。在發(fā)送端用驅(qū)動(dòng)器將TTL或CMOS電平轉(zhuǎn)換為RS-232C電平,在接收端用接收器將RS-232C電平再轉(zhuǎn)換為T(mén)TL或CMOS電平。這里選用了MAXIM公司的MAX232來(lái)作電平轉(zhuǎn)換。MAX232屬于MAXIM公司的通用串行接收/發(fā)送驅(qū)動(dòng)器芯片。其外圍電路簡(jiǎn)單,只需外接4個(gè)0.1μF的電容即可,其系統(tǒng)硬件電路如圖8.9所示。圖中MAX232將PIC16F877的TX輸出的TTL電平信號(hào)轉(zhuǎn)換為RS-232C電平,輸入到PC機(jī),并將PC機(jī)輸出的RS-232C電平轉(zhuǎn)換為T(mén)TL電平,輸出到PIC16F877單片機(jī)的RX引腳。5.PC機(jī)支持與PIC16F877進(jìn)行數(shù)據(jù)交換的PC機(jī)可與PIC16F877可以編程實(shí)現(xiàn),其實(shí)現(xiàn)功能如下:PC機(jī)和單片機(jī)均可發(fā)送和接收數(shù)據(jù),由PC機(jī)決定是發(fā)送還是接收;程序設(shè)定當(dāng)PC機(jī)鍵盤(pán)輸入發(fā)送指令時(shí),PC機(jī)分別顯示PC機(jī)發(fā)送的數(shù)據(jù)和單片機(jī)會(huì)送的數(shù)據(jù);當(dāng)PC機(jī)鍵盤(pán)輸入接收指令時(shí),PC機(jī)將接收單片機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù),并將其數(shù)據(jù)顯示。在編程中,必須要注意設(shè)置PC機(jī)與PIC16F877單片機(jī)在進(jìn)行數(shù)據(jù)交換時(shí)的數(shù)據(jù)傳輸格式相同。通常采用的通訊協(xié)議如下:波特率為9600bps,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶效驗(yàn)位。PC機(jī)發(fā)送命令給單片機(jī),鍵盤(pán)輸入發(fā)送命令時(shí),控制單片機(jī)接收數(shù)據(jù),當(dāng)PC機(jī)鍵盤(pán)輸入接收命令時(shí),控制單片機(jī)發(fā)送數(shù)據(jù)給PC機(jī)。PC機(jī)與PIC16F877單片機(jī)進(jìn)行數(shù)據(jù)交換的程序編制流程如圖8.10所示。

第二十八頁(yè),共五十九頁(yè),2022年,8月28日?qǐng)D8.9PIC16F877與PC接口原理圖源程序如下:1)初始化設(shè)置部分COUNTEQU0X20TEMPEQU0X21J0EQU0X22第二十九頁(yè),共五十九頁(yè),2022年,8月28日ORG0NOP STARTGOTOMAINORG0X05MAINBANKSELTRISCMOVLWB’10000000’MOVWFTRISCMOVLW0X30;將RAM單元初始化MOVWFFSRBCFSTATUS,RP0MOVLW0X22MOVWFCOUNTBCFPIR1,RCIFBSFPIR1,TXIFINTRAMMOVFCOUNT,0MOVWFINDFINCFCOUNT,1INCFFSR,1BTFSSFSR,7GOTOINTRAM圖8.10數(shù)據(jù)交換程序流程框圖第三十頁(yè),共五十九頁(yè),2022年,8月28日BANKSELTXSTAMOVLW0X19MOVWFSPBRG;波特率設(shè)置為9600bpsMOVLW0X04MOVWFTXSTA;異步高速方式BCFSTATUS,RP0MOVLW0X80MOVWFRCSTA;串行口使能MOVLW0X30MOVWFFSRBSFRCSTA,CREN;接收允許BSFSTATUS,RP0BSFTXSTA,TXEN;發(fā)送允許BCFSTATUS,RP02)接收并返回?cái)?shù)據(jù)部分WAITBTFSSPIR1,RCIFGOTOWAIT;接收PC機(jī)命令MOVFRCREG,0MOVWFTEMP第三十一頁(yè),共五十九頁(yè),2022年,8月28日MOVWFINDFINCFFSRDECFSZTEMP;接收到的數(shù)據(jù)為1,則接收GOTOTXW;否則發(fā)送數(shù)據(jù)MOVLW0X06MOVWFTEMPWAIT1BTFSSPIR1,RCIFGOTOWAIT1;接收一個(gè)數(shù)據(jù)MOVFRCREG,0MOVWFCOUNTMOVWFTXREGLOOPTXBTFSSPIR1,TXIF;將接收到的數(shù)據(jù)送回PC機(jī)GOTOLOOPTXMOVFCOUNT,0MOVWFINDFINCFFSRDECFSZTEMPGOTOWAIT1GOTOOVER;處理完畢第三十二頁(yè),共五十九頁(yè),2022年,8月28日TXWMOVLW0X09;向PC機(jī)發(fā)送9個(gè)數(shù)據(jù)MOVWFTEMPMOVLWD’00’MOVWFJ03)發(fā)送數(shù)據(jù)部分TXW0MOVFJ0,0MOVWFTXREGINCFJ0;單片機(jī)發(fā)送的數(shù)據(jù)為0~8和一位存儲(chǔ)數(shù)據(jù)TXW1BTFSSPIR1,TXIFGOTOTXW1DECFSZTEMPGOTOTXW0OVERBCFRCSTA,CREN;通信任務(wù)完成,關(guān)接收和發(fā)送允許要實(shí)現(xiàn)PIC單片機(jī)與PC機(jī)間的數(shù)據(jù)通訊,不僅是要連接硬件電路和對(duì)單片機(jī)進(jìn)行編程,同時(shí)還需要在PC上編寫(xiě)數(shù)據(jù)收發(fā)的程序。通常,對(duì)于單片機(jī)與PC機(jī)間的數(shù)據(jù)通訊交換調(diào)試時(shí),可以串口通訊調(diào)試工具,同時(shí)也可以自編調(diào)試程序。程序編寫(xiě)好后,再與上述PIC16F877一起進(jìn)行操作,即可實(shí)現(xiàn)簡(jiǎn)易通訊數(shù)據(jù)交換。第三十三頁(yè),共五十九頁(yè),2022年,8月28日這里特別需要注意的是:當(dāng)PC機(jī)與單片機(jī)系統(tǒng)通信時(shí),單片機(jī)數(shù)據(jù)存儲(chǔ)區(qū)(RAM)內(nèi)的數(shù)據(jù)是十六進(jìn)制,在信號(hào)線上傳輸?shù)氖鞘M(jìn)制數(shù)的ASCII碼的二進(jìn)制形式;而Windows系統(tǒng)下使用的是ANSI碼,ANSI碼僅在前126個(gè)與ASCII碼相同,即在Windows下接收到的是十六進(jìn)制數(shù)的ASCII碼的字符串,可先轉(zhuǎn)換為ANSI碼后再在Windows下還原為十六進(jìn)制數(shù)。第三十四頁(yè),共五十九頁(yè),2022年,8月28日8.3USB接口設(shè)計(jì)

USB的全稱是通用串行總線(UniversalSerialBus),最多可連接127臺(tái)外設(shè),USB其最大的特點(diǎn)是支持熱插拔和即插即用。當(dāng)設(shè)備插入時(shí),主機(jī)枚舉此設(shè)備并加載所需的驅(qū)動(dòng)程序,因此使用遠(yuǎn)比PCI和ISA總線方便。USB速度比平行并聯(lián)總線(ParellelBus,例如EPP、LPT)與串聯(lián)總線(SerialPort,例如RS-232)等傳統(tǒng)電腦用標(biāo)準(zhǔn)總線快上許多。原標(biāo)準(zhǔn)中USB1.1的最大傳輸帶寬為12Mbps,USB2.0的最大傳輸帶寬為480MbpsUSB的設(shè)計(jì)為非對(duì)稱式的,它由一個(gè)主機(jī)(host)控制器和若干通過(guò)hub設(shè)備以樹(shù)形連接的設(shè)備組成。一個(gè)控制器下最多可以有5級(jí)hub,包括Hub在內(nèi),最多可以連接127個(gè)設(shè)備,而一臺(tái)計(jì)算機(jī)可以同時(shí)有多個(gè)控制器。和SPI-SCSI等標(biāo)準(zhǔn)不同,USBhub不需要終結(jié)器

USB可以連接的外設(shè)有鼠標(biāo)、鍵盤(pán)、gamepad、游戲桿、掃描儀、數(shù)碼相機(jī)、打印機(jī)、硬盤(pán)和網(wǎng)絡(luò)部件。對(duì)數(shù)碼相機(jī)這樣的多媒體外設(shè)USB已經(jīng)是缺省接口;由于大大簡(jiǎn)化了與計(jì)算機(jī)的連接,USB也逐步取代并口成為打印機(jī)的主流連接方式。2004年已經(jīng)有超過(guò)1億臺(tái)USB設(shè)備;到2005年顯示器和高清晰度數(shù)字視頻外設(shè)是僅有的USB未能染指的外設(shè)類別,,因?yàn)樗麄冃枰叩膫鬏斔俾省5谌屙?yè),共五十九頁(yè),2022年,8月28日由于USB支持熱插拔,即插即用的優(yōu)點(diǎn),所以USB接口已經(jīng)成為計(jì)算機(jī)的標(biāo)準(zhǔn)接口。USB目前有兩個(gè)版本,USB1.1的最高數(shù)據(jù)傳輸率為12Mbps,USB2.0則提高到480Mbps。二者的物理接口完全一致,數(shù)據(jù)傳輸率上的差別完全由PC的USBhost控制器以及USB設(shè)備決定。USB還可以通過(guò)連接線為設(shè)備提供最高5V,500mA的電力。現(xiàn)標(biāo)準(zhǔn)中將UBS統(tǒng)一為USB2.0,分為:(1)High-speed,傳輸速率25Mbps~400Mbps(最大480Mbps)(2)Full-speed,傳輸速率500Kbps~10Mbps(最大12Mbps)(3)Low-speed,傳輸速率10Kbps~100Kbps(最大1.5Mbps)USB的優(yōu)點(diǎn):●USB具有真正的“即插即用”特性,用戶可以很容易地對(duì)外設(shè)進(jìn)行安裝和拆卸,主機(jī)可按外設(shè)的增刪情況自動(dòng)配置系統(tǒng)資源,同時(shí)用戶可以在不關(guān)機(jī)的情況下進(jìn)行外設(shè)的更換,外設(shè)裝置的驅(qū)動(dòng)程序的安裝刪除將實(shí)現(xiàn)自動(dòng)化?!馯SB具有很強(qiáng)的連接能力?!竦统杀尽!窨臻g的節(jié)省?!馯SB與ETDM特性可以支持諸如ISDN等高速數(shù)字電話信息通路接口?!襁B接電纜輕巧,電源體積縮小。●USB一種開(kāi)放性的不具專利版權(quán)的理想工業(yè)標(biāo)準(zhǔn)。8.3.1USB接口規(guī)范

目前USB支持3種數(shù)據(jù)信號(hào)速率,USB設(shè)備應(yīng)該在其外殼或者有時(shí)是自身上正確標(biāo)明其使用的速率。USB-IF進(jìn)行設(shè)備認(rèn)證并為通過(guò)兼容測(cè)試并支付許可費(fèi)用的設(shè)備第三十六頁(yè),共五十九頁(yè),2022年,8月28日提供基本速率(低速和全速)和高速的特殊商標(biāo)許可。1.5Mbit/s(183KByte/s)的低速速率,主要用于人機(jī)接口設(shè)備(HumanInterfaceDevices,HID)例如鍵盤(pán)、鼠標(biāo)、游戲桿。12Mbit/s(1.4MByte/s)的全速速率,在USB2.0之前是曾經(jīng)是最高速率,后起的更高速率的高速接口應(yīng)該兼容全速速率。多個(gè)全速設(shè)備間可以按照先到先得法則劃分帶寬;使用多個(gè)等時(shí)設(shè)備時(shí)會(huì)超過(guò)帶寬上限也并不罕見(jiàn)。所有的USBHub支持全速速率。480Mbit/s(57MByte/s)的高速速率,并非所有的USB2.0設(shè)備都是高速的。高速設(shè)備插入全速hub時(shí)應(yīng)該與全速兼容。而高速hub具有所謂TransactionTranslator(事務(wù)翻譯器)功能,能夠隔離全速、低速設(shè)備與高速之間數(shù)據(jù)流,但是不會(huì)影響供電和串聯(lián)深度。1.機(jī)械和電氣標(biāo)準(zhǔn)

圖8.11標(biāo)準(zhǔn)USB接口第三十七頁(yè),共五十九頁(yè),2022年,8月28日標(biāo)準(zhǔn)USB接口如圖8.11所示,其電氣特性見(jiàn)表8.6。USB信號(hào)使用分別標(biāo)記為D+和D-的雙絞線傳輸,各自使用半雙工差分信號(hào)并協(xié)同工作,以抵消長(zhǎng)導(dǎo)線的電磁干擾。USB的電纜有四根線,兩根傳送的是5V的電源,有一些直接和電源HUB相連的設(shè)備可以直接利用它來(lái)供電。另外的兩根是數(shù)據(jù)線,數(shù)據(jù)線是單工的,在整個(gè)的一個(gè)系統(tǒng)中的數(shù)據(jù)速率是一定的,要么是高速,要么是低速,沒(méi)有一個(gè)可以中間變速的設(shè)備來(lái)實(shí)現(xiàn)數(shù)據(jù)碼流的變速.在這一點(diǎn)上,USB和1394有明顯的差別。USB的總線可以在不使用的時(shí)候被掛起,這樣一來(lái)就可以節(jié)約能源。在有些時(shí)候的總線還有可能擋機(jī)(stall),比如說(shuō)象數(shù)據(jù)傳送的時(shí)候突然被打斷,這個(gè)時(shí)候通過(guò)host的重新配置可以實(shí)現(xiàn)總線的重新工作。表8.6標(biāo)準(zhǔn)USB電氣特性表第三十八頁(yè),共五十九頁(yè),2022年,8月28日2.編碼方式USB標(biāo)準(zhǔn)采用NRZI方式(翻轉(zhuǎn)不歸零制)對(duì)數(shù)據(jù)進(jìn)行編碼。翻轉(zhuǎn)不歸零制(non-returntozero,inverted),電平保持時(shí)傳送邏輯1,電平翻轉(zhuǎn)時(shí)傳送邏輯0。軟件架構(gòu)

一個(gè)USB主機(jī)通過(guò)hub鏈可以連接多個(gè)設(shè)備。由于理論上一個(gè)物理設(shè)備可以承擔(dān)多種功能,例如路由器同時(shí)也可以是一個(gè)SD卡讀卡器,USB的術(shù)語(yǔ)中設(shè)備(device)指的是功能(functions)。集線器(hub)由于作用特殊,按照正式的觀點(diǎn)并不認(rèn)為是function。直接連接到主機(jī)的hub是根(root)hub。4.端點(diǎn)設(shè)備/功能(和集線器)與管道(pipe)(即邏輯通道)聯(lián)系在一起,管道把主機(jī)控制器和被稱為端點(diǎn)的邏輯實(shí)體連接起來(lái)。管道和比特流(例如UNIX的pipeline)有著相同的含義,而在USB詞匯中術(shù)語(yǔ)端點(diǎn)經(jīng)常和管道混用,甚至在正式文檔中。端點(diǎn)(和各自的管道)在每個(gè)方向上按照0-15編號(hào),因此一個(gè)設(shè)備/功能最多有32個(gè)活動(dòng)管道,16個(gè)進(jìn),16個(gè)出。兩個(gè)方向的端點(diǎn)0總是留給總線管理,占用了32個(gè)端點(diǎn)中的2個(gè)。在管道中,數(shù)據(jù)使用不同長(zhǎng)度的包傳遞,端點(diǎn)可以傳遞的包長(zhǎng)度上限一般是長(zhǎng)度的2^n字節(jié),所以USB包經(jīng)常包含的數(shù)據(jù)量依次有8、16、32、64、128、256、512或者1024字節(jié)。一個(gè)端點(diǎn)只能單向(進(jìn)/出)傳輸數(shù)據(jù),自然管道也是單向的。每個(gè)USB設(shè)備至少有兩個(gè)端點(diǎn)/管道:它們分別是進(jìn)出方向的,編號(hào)為0,用于控制總線上的設(shè)備。按照各自的傳輸類型,管道被分為4類:第三十九頁(yè),共五十九頁(yè),2022年,8月28日●控制傳輸一般用于短的、簡(jiǎn)單的對(duì)設(shè)備的命令和狀態(tài)反饋,例如用于總線控制的0號(hào)管道?!竦葧r(shí)傳輸——按照有保障的速度(可能但不必然是盡快地)傳輸,可能有數(shù)據(jù)丟失,例如實(shí)時(shí)的音頻、視頻。●中斷傳輸——用于必須保證盡快反應(yīng)的設(shè)備(有限延遲),例如鼠標(biāo)、鍵盤(pán)。●批量傳輸——使用余下的帶寬大量地(但是沒(méi)有對(duì)于延遲、連續(xù)性、帶寬和速度的保證)傳輸數(shù)據(jù),例如普通的文件傳輸。一旦設(shè)備(功能)通過(guò)總線的hub附加到主機(jī)控制器,主機(jī)控制器就給它分配一個(gè)主機(jī)上唯一的7位地址。主機(jī)控制器通過(guò)投票分配流量,一般是通過(guò)輪詢模式,因此沒(méi)有明確向主機(jī)控制器請(qǐng)求之前,設(shè)備不能傳輸數(shù)據(jù)。為了訪問(wèn)端點(diǎn),必須獲得一個(gè)分層的配置。連接到主機(jī)的設(shè)備有且僅有一個(gè)設(shè)備描述符(devicedescriptor),而設(shè)備描述符有若干配置描述符(configurationdescriptors)。這些配置一般與狀態(tài)相對(duì)應(yīng),例如活躍和節(jié)能模式。每個(gè)配置描述符有若干接口描述符(interfacesetting),用于描述設(shè)備的一定方面,所以可以被用于不同的用途:如一個(gè)相機(jī)可能擁有視頻和音頻兩個(gè)接口。接口描述符有一個(gè)缺省接口設(shè)置(defaultinterfacesetting)和可能多個(gè)替代接口設(shè)置(alternateinterfacesettings),它們都擁有如上所述的端點(diǎn)描述符。一個(gè)端點(diǎn)能夠在多個(gè)接口和替代接口設(shè)置之間復(fù)用。5.USB接頭接頭是由USB協(xié)會(huì)所指定,接頭的設(shè)計(jì)一方面為了支持眾多USB的基本需求,另一方面也避免以往許多類似串行接頭所出現(xiàn)的問(wèn)題。接頭設(shè)計(jì)的相當(dāng)耐用。許多以往使用的接頭較脆弱,即使受力不大,有時(shí)針腳或零件也會(huì)折彎甚至斷裂。而USB接頭的金屬第四十頁(yè),共五十九頁(yè),2022年,8月28日導(dǎo)電部份周圍有塑料作為保護(hù),而且整個(gè)連接部份被金屬的保護(hù)套圍住,因此USB接頭不論插拔,都不容易受損。不可能把USB接口插錯(cuò)。這是防呆設(shè)計(jì),方向相反的插頭不可能插到插座里,方向正反很容易感覺(jué)出來(lái)。接頭能相對(duì)便宜地大量生產(chǎn)。在USB網(wǎng)絡(luò)中,接頭被強(qiáng)制使用定向拓?fù)洹SB不支持環(huán)形網(wǎng)絡(luò),因此不兼容的USB設(shè)備之間接口也不兼容。不像其他通訊系統(tǒng)(如RJ-45電纜)不能使用轉(zhuǎn)換插頭,防止環(huán)形USB網(wǎng)絡(luò)產(chǎn)生。適度的插拔力。USB電纜和小型USB設(shè)備能被插口卡?。ú恍枰獖A子、螺絲或者其他接口那樣的鎖扣)。允許通過(guò)適當(dāng)力量插拔,連接器要方便困難環(huán)境和殘障人士使用。由于接頭的構(gòu)造,在將USB插頭插入U(xiǎn)SB座時(shí),插頭外面的金屬保護(hù)套會(huì)先接觸到USB座內(nèi)對(duì)應(yīng)的金屬部份,之后插頭內(nèi)部的四個(gè)觸點(diǎn)才會(huì)接觸到USB座。金屬保護(hù)套會(huì)連接到系統(tǒng)的地點(diǎn),提供路徑使靜電可以放電,避免因靜電通過(guò)電子零件而造成損壞。8.3.2USB數(shù)據(jù)傳輸模式1.HCD包含主機(jī)控制器和根HUB的硬件為程序員提供了由硬件實(shí)現(xiàn)定義的接口主機(jī)控制器設(shè)備(HCD)。而實(shí)際上它在計(jì)算機(jī)是就是端口和內(nèi)存映射。1.0和1.1的標(biāo)準(zhǔn)有兩個(gè)競(jìng)爭(zhēng)的HCD實(shí)現(xiàn)??蛋氐拈_(kāi)放主機(jī)控制器接口(OHCI)和Intel的通用主機(jī)控制器接口(UHCI)。VIA威盛采納了UHCI;其他主要的芯片組多使用OHCI。主要區(qū)別是UHCI更加依賴軟件驅(qū)動(dòng),因此對(duì)CPU要求更高,但是自身的硬件會(huì)更廉價(jià)。它們的并存導(dǎo)致操作系統(tǒng)開(kāi)發(fā)和硬件廠商都必須在兩個(gè)方案上開(kāi)發(fā)和測(cè)試,從而導(dǎo)致費(fèi)用上升。第四十一頁(yè),共五十九頁(yè),2022年,8月28日因此USB-IF在USB2.0的設(shè)計(jì)階段堅(jiān)持只能有一個(gè)實(shí)現(xiàn)規(guī)范,這就是擴(kuò)展主機(jī)控制器接口(EHCI)。因?yàn)镋HCI只支持全速傳輸,所以EHCI控制器包括四個(gè)虛擬的全速或者慢速控制器。這里同樣是Intel和Via使用虛擬UHCI,其他一般使用OHCI控制器。USB封包格式

USB的封包格式和早期的internet封包格式非常相似,要了解USB連接原理就一定要先了解封包格式。USBpacketformatOFFSETTYPESIZEVALUE0HeaderChksum1Checksumoftheheaderbyaddingtheheaderbytes,excludingtheheaderchecksum.1HeaderSize1Sizeoftheheader,includingstringsifapplicable.2Signature2Signature:0x12344VendorID2USBVendorID6ProductID2USBProductID8ProductVersion1Productversion9FirmwareVersion1Firmwareversion10UsbAttributes1USBattributes:Bit0:Ifsetto1,theheaderincludesallthreestrings:language,manufacture,andproductstrings;ifsetto0,theheaderdoesnotincludeanystrings.Bit2:Ifsetto1,thedevicecanbeselfpowered;ifsetto0,itcannotbeselfpowered.Bit3:Ifsetto1,thedevicecanbebuspowered;ifsetto0,itcannotbebuspowered.第四十二頁(yè),共五十九頁(yè),2022年,8月28日Bits1and4...7:Notused.11MaxPower1Maximumpowerthedeviceneedsinunitsof2mA.12Attribute1Deviceattributes:Bit0:Ifsetto1,theCPUspeedrunsat24MHz;ifsetto0,theCPUspeedrunsat12MHz.Bit3:Ifsetto1,thedevice'sEEPROMcansupport400MHz;ifsetto0,itcannotsupport400MHz.Bits1,2and4...7:Notused.13WPageSize1MaximumI2Cwritepagesize14DataType1ThisvaluedefinesifthedeviceisapplicationEEPROMordeviceEEPROM.0x01:ApplicationEEPROM0x02:DeviceEEPROMOthervaluesareinvalid.15RpageSize1MaximumI2Creadpagesize.Ifthevalueiszero,thewholePayLoadSizeisreadinoneI2Creadsetup.16PayLoadSize2Sizeoftheapplication,ifusingEEPROMasanapplicationEEPROM;otherwisethevalueis0.0xxxLanguagestring4LanguagestringinstandardUSBstringformatifapplicable.0xxxManufacturestring...ManufacturestringinstandardUSBstringformatifapplicable.第四十三頁(yè),共五十九頁(yè),2022年,8月28日0xxxProductstring...ProductstringinstandardUSBstringformatifapplicable.0xxxApplicationCode...Applicationcodeifapplicable.傳輸方式在USB的數(shù)據(jù)傳送的方式下,有四種的傳輸方式:控制(Control)、同步(isochronous)、中斷(interrupt)、大量(bulk)。如果、從硬件開(kāi)始來(lái)設(shè)計(jì)整個(gè)的系統(tǒng),必須正確選擇傳送的方式,如果只是一個(gè)驅(qū)動(dòng)程序的編寫(xiě)者,只需要弄清楚USB是采用什么工作方式就行了。通常所有的傳送方式下的主動(dòng)權(quán)都在PC端,也就是host端。控制方式傳送:控制傳送是雙向傳送,數(shù)據(jù)量通常較小。USB系統(tǒng)軟件用來(lái)主要進(jìn)行查詢、配置和給USB設(shè)備發(fā)送通用的命令。控制傳送方式可以包括8、16、32和64字節(jié)的數(shù)據(jù),這依賴于設(shè)備和傳輸速度??刂苽鬏?shù)湫偷赜迷谥饔?jì)算機(jī)和USB外設(shè)之間的端點(diǎn)(Endpoint)0之間的傳輸,但是指定供應(yīng)商的控制傳輸可能用到其它的端點(diǎn)。同步方式傳送:同步傳輸提供了確定的帶寬和間隔時(shí)間(latency)。它被用于時(shí)間嚴(yán)格并具有較強(qiáng)容錯(cuò)性的流數(shù)據(jù)傳輸,或者用于要求恒定的數(shù)據(jù)傳送率的即時(shí)應(yīng)用中。例如執(zhí)行即時(shí)通話的網(wǎng)絡(luò)電話應(yīng)用時(shí),使用同步傳輸模式是很好的選擇。同步數(shù)據(jù)要求確定的帶寬值和確定的最大傳送次數(shù)。對(duì)于同步傳送來(lái)說(shuō),即時(shí)的數(shù)據(jù)傳遞比完美的精度和數(shù)據(jù)的完整性更重要一些。中斷方式傳送:中斷方式傳輸主要用于定時(shí)查詢?cè)O(shè)備是否有中斷數(shù)據(jù)要傳送。設(shè)備的端點(diǎn)模式器的結(jié)構(gòu)決定了它的查詢頻率,從1到255ms之間。這種傳輸方式典型的應(yīng)

第四十四頁(yè),共五十九頁(yè),2022年,8月28日用在少量的分散的、不可預(yù)測(cè)數(shù)據(jù)的傳輸。鍵盤(pán)、操縱桿和鼠標(biāo)就屬于這一類型。中斷方式傳送是單向的并且對(duì)于host來(lái)說(shuō)只有輸入的方式。大量傳送:主要應(yīng)用在數(shù)據(jù)大量傳送傳送和接受數(shù)據(jù)上,同時(shí)又沒(méi)有帶寬和間隔時(shí)間要求的情況下,要求保證傳輸。打印機(jī)和掃描儀屬于這種類型。這種類型的設(shè)備適合于傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數(shù)據(jù)的傳送完成之后再傳送和接收數(shù)據(jù)。USB將其有效的帶寬分成各個(gè)不同的幀(frame),每幀通常是1ms時(shí)間長(zhǎng)。每個(gè)設(shè)備每楨只能傳送一個(gè)同步的傳送包。在完成了系統(tǒng)的配置信息和連接之后,USB的host就會(huì)對(duì)不同的傳送點(diǎn)和傳送方式做一個(gè)統(tǒng)籌安排,用來(lái)適應(yīng)整個(gè)的USB的帶寬。通常情況下,同步方式和中斷方式的傳送會(huì)占據(jù)整個(gè)帶寬的90%,剩下的就安排給控制方式傳送數(shù)據(jù)。8.3.3USB接口電氣特性設(shè)備依附在總線上的設(shè)備可以是需要特定的驅(qū)動(dòng)程序的完全定制的設(shè)備,也可能屬于某個(gè)設(shè)備類別。這些類別定義了某種設(shè)備的行為和接口描述符,這樣一個(gè)驅(qū)動(dòng)程序可能用于所有此種類別的設(shè)備。一般操作系統(tǒng)都為支持這些設(shè)備類別,為其提供通用驅(qū)動(dòng)程序。設(shè)備分類由USB設(shè)計(jì)論壇設(shè)備工作組決定,并分配ID。如果一個(gè)設(shè)備類型屬于整個(gè)設(shè)備,該設(shè)備的描述府bDeviceClass的域保存類別ID;如果它這是設(shè)備的一個(gè)界面,其ID保存在界面描述府的;bInterfaceClass域。他們都占用一個(gè)字節(jié),所以最多有253種設(shè)備類別。(0x00和0xFF保留)。當(dāng)bDeviceClass設(shè)為0x00,操作系統(tǒng)會(huì)檢查每個(gè)接口的bInterfaceClass以確定其類別。第四十五頁(yè),共五十九頁(yè),2022年,8月28日每種類別可選支持子類別(SubClass)和協(xié)議子定義(Protocolsubdefinition)這樣可以用于主設(shè)備類型的不斷修訂。常用設(shè)備類別和ID有:0x00保留值0x01USB音頻設(shè)備,像聲卡這樣的設(shè)備。0x03人機(jī)接口設(shè)備,鍵盤(pán)鼠標(biāo)等0x06靜止圖像捕捉設(shè)備,用在USB上的PictureTransferProtocol。0x07USB打印設(shè)備,打印機(jī)。0x08USB大容量存儲(chǔ)設(shè)備keydrive,可移動(dòng)硬盤(pán),MMC卡、SD卡、CF卡讀卡器,數(shù)碼相機(jī),數(shù)字音頻播放器等。這一類設(shè)備顯示成一個(gè)文件系統(tǒng)。0x09USBhubs。0x0AUSB通信設(shè)備(“CDC”)usedfor調(diào)制解調(diào)器(包括軟件調(diào)制解調(diào)器),網(wǎng)卡(交叉電纜),ISDN,傳真。

第四十六頁(yè),共五十九頁(yè),2022年,8月28日0x0EUSB視頻設(shè)備,類似攝像頭,電視卡的動(dòng)態(tài)圖像捕捉設(shè)備。0xE0無(wú)線控制器,如藍(lán)牙dongles。0xFF定制設(shè)備。電源USB接頭提供一組5伏特的電壓,可作為相連接USB設(shè)備的電源。實(shí)際上,設(shè)備接收到的電源可能會(huì)低于5V,只略高于4V。USB規(guī)范要求在任何情形下,電壓均不能超過(guò)5.25V;在最壞情形下(經(jīng)由USB供電HUB所連接的LOWPOWER設(shè)備)電壓均不能低于4.375V,一般情形電壓會(huì)接近5V。一個(gè)USB的根集線器最多只能提供500mA的電流。如此的電流已足以驅(qū)動(dòng)許多電子設(shè)備,不過(guò)連接在總線供電HUB的所有設(shè)備,需要共享500mA的電流額度。一個(gè)由總線供電的設(shè)備可以使用到它所連接埠上允許輸出的所有電源??偩€供電的HUB可以將電源供給連接在HUB上的所有設(shè)備,不過(guò)USB的規(guī)范只允許總線供電的HUB下游串接一層總線供電的設(shè)備,因此,總線供電的HUB下游不允許再串接另一個(gè)由總線供電的HUB。許多HUB有外加電源,因此可以提供電源給下游的設(shè)備,不會(huì)消耗總線上的電源。若設(shè)備需要的電壓超過(guò)5V,或是需要電流超過(guò)500mA,都需要使用外加電源。相對(duì)于之前其他溝通介面僅能傳遞訊息資料,高電壓USB插槽本身還能提供5V(伏特)的主動(dòng)電壓,及0.5A(安培)的電流,因此對(duì)于一些小型設(shè)備而言,可以不必再外接電源供應(yīng)裝置,就能利用來(lái)自USB插槽的電力順利運(yùn)作。利用這特點(diǎn),也有廠商開(kāi)發(fā)出適當(dāng)?shù)呐啪€,將USB拿來(lái)當(dāng)作供電插座般使用,例如作為移動(dòng)電話的充電器,或是提供小型電燈的電力需要,反而與原本用來(lái)連接電腦用的主要用途無(wú)關(guān)。第四十七頁(yè),共五十九頁(yè),2022年,8月28日USB的低層結(jié)構(gòu)●USB設(shè)備USB的設(shè)備可以接在PC上的任意的USB接口上。而使用HUB還可以擴(kuò)展使更多的USB設(shè)備連接到系統(tǒng)中,USB的HUB有一個(gè)上行的端口(到host),有多個(gè)的下行端口(連接其它的設(shè)備),從而可以使整個(gè)的系統(tǒng)可以擴(kuò)展的連接127個(gè)外設(shè),其中HUB也酸外設(shè)。對(duì)于USB系統(tǒng)來(lái)說(shuō),USB的host永遠(yuǎn)是PC邊,所有的其他連接到host都稱為設(shè)備,在設(shè)備與設(shè)備之間是無(wú)法實(shí)現(xiàn)直線通信的,只有通過(guò)host的管理與調(diào)節(jié)才能夠?qū)崿F(xiàn)數(shù)據(jù)的互相傳送。在系統(tǒng)中,通常會(huì)有一個(gè)根HUB,這個(gè)HUB一般有兩個(gè)下行的端口。一個(gè)PC可以擁有一個(gè)或多個(gè)的USBhost控制器。一般有兩種類型的控制器:UHCI(USBho

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論