串口通信原理與應用-課件_第1頁
串口通信原理與應用-課件_第2頁
串口通信原理與應用-課件_第3頁
串口通信原理與應用-課件_第4頁
串口通信原理與應用-課件_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章串口通信原理與應用

1ppt課件本章內容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART實現(xiàn)發(fā)送和接收數(shù)據(jù)

41232ppt課件教學大綱要求串口通信原理:串口通信的重要參數(shù)、串口通信接口和通用異步接收器和發(fā)送器。S5PV210的UART功能寄存器,包括控制寄存器和操作寄存器UART通信程序編寫和分析。

了解

理解

掌握3ppt課件本章內容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART實現(xiàn)發(fā)送和接收數(shù)據(jù)

41234ppt課件7.1串口通信原理7.1.1串口通信的重要參數(shù)波特率數(shù)據(jù)位停止位奇偶校驗重要參數(shù)5ppt課件1.波特率高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設備的通信。衡量通信速率的參數(shù),表示每秒傳輸?shù)奈坏膫€數(shù)。通信電話線的波特率為14400、28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。例如,300波特率表示每秒發(fā)送300個位。6ppt課件2.數(shù)據(jù)位每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。衡量通信中實際數(shù)據(jù)位的參數(shù)。如何設置取決于想傳輸?shù)男畔ⅰ1热?,標準的ASCII碼是0-127(7位),擴展的ASCII碼是0-255(8位)。當計算機發(fā)送一個信息包,標準的值是5、6、7和8位。7ppt課件3.停止位用于表示單個包的最后一位。注意2.使用的停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。1.典型的值為1、1.5和2位。8ppt課件4.奇偶校驗位例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位為1。在串口通信中一種簡單的檢錯方式。對于偶和奇校驗的情況,串口會設置校驗位(數(shù)據(jù)位后面的一位),用一個值來確保傳輸?shù)臄?shù)據(jù)有偶數(shù)個或者奇數(shù)個邏輯高位。有四種檢錯方式:偶、奇、高和低,當然沒有校驗位也是可以的。9ppt課件7.1.2串行通信接口RS232美國電子工業(yè)協(xié)會EIA在1970年指定的一種串行通信接口標準,9芯D插頭。RS422采用4根數(shù)據(jù)線,加一根地線,全雙工、差分傳輸、多點通信的數(shù)據(jù)傳輸協(xié)議。RS485是在RS-422的基礎上,為擴大應用范圍,EIA制定了RS-485標準,添加了多點、雙向通信能力。10ppt課件7.1.2串行通信接口11ppt課件7.1.2串行通信接口12ppt課件RS-232-CDB-9各引腳定義:CD:載波檢測RXD:接收數(shù)據(jù)線TXD:發(fā)送數(shù)據(jù)線DTR:數(shù)據(jù)終端就緒SG:信號線DSR:數(shù)據(jù)設備就緒RTS:請求發(fā)送CTS:清除發(fā)送RI:振鈴提示13ppt課件RS-232-C遠距離通信系統(tǒng)14ppt課件本章內容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART實現(xiàn)發(fā)送和接收數(shù)據(jù)

412315ppt課件7.1.3通用異步接收器和發(fā)送器(UART)UART支持比特率高達3Mbps,每個UART通道包含兩個FIFO用來接收和發(fā)送數(shù)據(jù),其中,UART0支持接收/發(fā)送獨立的256字節(jié)FIFO,UART1支持64B的FIF0,UART2、3、均支持16B的FIFO。S5PV210提供4個基于DMA或中斷的操作的獨立異步串行I/O端口,UART可以通過產(chǎn)生中斷或DMA請求來進行CPU和UART之間的數(shù)據(jù)傳輸。UART是一種通用串行數(shù)據(jù)的總線,用于異步通信,該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。特點16ppt課件7.1.3通用異步接收器和發(fā)送器(UART)發(fā)送器和接收器包含了FIFO和數(shù)據(jù)移位器。每個UART包含一個波特率發(fā)生器、發(fā)送器、接收器和一個控制單元。S5PV210的UART包括可編程波特率,紅外發(fā)射器/接收器,插入1個或2個停止位,5位、6位、7位或8位的數(shù)據(jù)寬度以及奇偶校驗。特點17ppt課件18ppt課件UART結構圖19ppt課件1.數(shù)據(jù)傳輸模式回環(huán)模式中斷或輪詢DMA模式(此模式僅用于測試,不用做傳輸數(shù)據(jù))。S5PV210的UART提供了一個參考環(huán)回模式測試模式,有助于排除在通信連接中的故障。通過設置UART控制寄存器中的環(huán)回位來選擇此模式。當有數(shù)據(jù)到來或數(shù)據(jù)可發(fā)送時產(chǎn)生中斷,通知CPU。這種方式要求通信硬件比較高,需要支持產(chǎn)生中斷信號。通常實現(xiàn)數(shù)據(jù)的轉移或復制時,CPU將從源地址復制數(shù)據(jù)到寄存器,然后將寄存器數(shù)據(jù)再寫入到目的地址處,這個操作是由CPU來執(zhí)行。20ppt課件2.數(shù)據(jù)發(fā)送發(fā)送的數(shù)據(jù)幀是可編程的,包括一個開始位,5-8個數(shù)據(jù)位,一個可選的奇偶位和1-2個停止位,其可由線性控制寄存器ULCONn來設置。發(fā)送器也可以產(chǎn)生一個終止條件,其可以對一個發(fā)送時間強制串行輸出為邏輯0。在當前發(fā)送字被完全傳輸完以后,該模塊發(fā)送一個終止信號。在終止信號發(fā)送后,其不斷發(fā)送數(shù)據(jù)到TxFIFO中。21ppt課件UART數(shù)據(jù)幀格式22ppt課件3.數(shù)據(jù)接收溢出錯誤奇偶校驗錯誤幀錯誤終止條件是指在舊數(shù)據(jù)被讀取新數(shù)據(jù)覆蓋了舊數(shù)據(jù)是指接收器偵測到一個不希望的奇偶條件。是指接收到的數(shù)據(jù)沒有一個有效的停止位。是指RxDn輸入保持邏輯0狀態(tài)長于一個幀的傳輸時間。23ppt課件4.波特率每個UART波特率發(fā)生器為發(fā)送器和接收器提供串行時鐘。存儲在波特率除數(shù)寄存器和分槽寄存器的值使用來確定串行Tx/Rx時鐘速率。DIV_VAL=UBRDIVn+(numof1’sinUDIVSLOTn)/16DIV_VAL=(PCLK/(bps*16))-1DIV_VAL=(SCLK_UART/(BPS*16))-124ppt課件舉例:如果波特率是115200bps且SLCK_UART時鐘是40MHz,UBRDIVn和UDIVSLOTn的值為:DIV_VAL=(40000000/(115200*-16))-1=21.7-1UBRDIVn=20(DIV_VAL的整數(shù)部分)(UDIVSLOTn中1的數(shù)量)/16=0.7則(UDIVSLOTn中1的數(shù)量)=1125ppt課件本章內容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART實現(xiàn)發(fā)送和接收數(shù)據(jù)

412326ppt課件7.2S5PV210的UART功能寄存器行控制寄存器(ULCONn)控制寄存器(UCONn)FIFO控制寄存器(UFCONn)UART功能寄存器MODEM控制寄存器(UMCONn)接收發(fā)送狀態(tài)寄存器(UTRSTATn)FIFO狀態(tài)寄存器(UFSTATn)MODEM狀態(tài)寄存器(UMSTATn)發(fā)送緩存寄存器(UTXHn)接收緩存寄存器(URXHn)波特率除數(shù)寄存器(UBRDIVn)錯誤狀態(tài)寄存器(UERSTARn)分槽寄存器(UDIVSLOTn)27ppt課件初始化用到的寄存器有:ULCONn、UCONn、UFCONn、UMCONn、UBRDIVn、UDIVSLOTn。收到用到的寄存器有:UTRSTATn、UTXHn、URXHn。以下就對這幾個寄存器相應的參數(shù)進行詳細說明。28ppt課件7.2.1UART控制寄存器1.UART行控制寄存器通過設置ULCONn來設置UART的通信方式,是否使用紅外,數(shù)據(jù)幀中奇偶校驗類型、停止位的個數(shù)、和數(shù)據(jù)位的位數(shù)。29ppt課件S5PV210中有4個UART,所以行控制寄存器也四個分別是ULCON0、ULCON1、ULCON2、ULCON3,如表所示:一般的正常通信模式下,通常設置為無奇偶校驗位、1個停止位、8個數(shù)據(jù)位,則ULCONn設置為0x3。30ppt課件2.UART控制寄存器(UCONn)UCONn控制寄存器當選擇有FCLK提供時鐘頻率時的分頻除數(shù)、時鐘選擇、發(fā)送接收終端產(chǎn)生類型、發(fā)送接收模式等。下表為UCONn的詳細設置表。31ppt課件32ppt課件3.FIFO控制寄存器(UFCONn)UFCONnFIFO控制寄存器用來設置是否使能FIFO、發(fā)送接收FIFO觸發(fā)級別、是否自動清空緩沖區(qū)。下表為UFCONn寄存器的設置位。33ppt課件34ppt課件4.UARTMODEM控制寄存器(UMCONn)UMCONn寄存器設置時有啟用AFC自動流控,通常不使用AFC自動流控,所以通常設置為0,UMCONn寄存器詳細位可參看數(shù)據(jù)手冊。35ppt課件5.UART波特率除數(shù)寄存器和UART分槽寄存器UBRDIVn寄存器和UDIVSLOTn寄存器用來決定波特率。36ppt課件7.2.2UART操作寄存器1.UART接收發(fā)送狀態(tài)寄存器(UTRSTATn)UTRSTATn寄存器用于記錄UART發(fā)送和接收的狀態(tài),其中包括發(fā)送器是否為空、發(fā)送緩沖寄存器是否為空。如下表所示:37ppt課件38ppt課件2.UART發(fā)送、接收緩沖寄存器UTXHn、URXHn寄存器用于緩沖發(fā)送和接收的數(shù)據(jù),因為數(shù)據(jù)存儲分為大端模式和小端模式。UTXHn發(fā)送緩沖寄存器為只寫寄存器、URXHn接收寄存器為只讀寄存器。39ppt課件緩沖寄存器位描述初始值TXDATAn[31:8]保留--[7:0]UARTn的發(fā)送數(shù)據(jù)--RXDATAn[31:8]保留0[7:0]UARTn的接收數(shù)據(jù)0x0040ppt課件本章內容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART實現(xiàn)發(fā)送和接收數(shù)據(jù)

412341ppt課件7.3UART通信實例(一)IO程序編程步驟第1步查看電路連接圖第2步翻查數(shù)據(jù)手冊第3步確定關鍵定義第4步編寫程序第5步實驗程序42ppt課件7.3.1查看電路連接圖通常使用的串口是RS-232,在RS-232標準中定義了邏輯1和邏輯0電壓級數(shù),以及標準的傳輸速率和連接器類型。43ppt課件44ppt課件專用芯片SP3232,用于實現(xiàn)RS-232串行數(shù)據(jù)通信接口和TTL兼容的數(shù)字邏輯電路之間的電平轉換,提供了兩路雙向的接收發(fā)送驅動器,可以同時對Rx、Tx、CTS和RTS思路信號進行轉換。45ppt課件串口的連接通常使用簡單連接方式,只連接三根線,即發(fā)送、接收和信號地線,需要連接RSTXD0、RSRXD0、GND三根線。由圖可知TXD0和GPA0_1引腳連接,RXD0和GPA0_0引腳連接。46ppt課件7.3.2翻查數(shù)據(jù)手冊查看數(shù)據(jù)手冊中GPIO中A0組中兩個引腳的設置。圖中TXD0、RXD0和GPA0復用一個引腳,所以使用之前一定要設置引腳的功能。47ppt課件7.3.4編寫程序1.初始化在程序運行之前一定要對相關的寄存器進行初始化,下面的uart_init函數(shù)是對UART相關寄存器進行初始化,clock_init函數(shù)是對clock相關寄存器進行初始化。48ppt課件voiduart_init(){GPA0CON&=~0xFF;GPA0CON|=0x22;//0b00100010

/*8-bits/Onestopbit/Noparity/Normalmodeoperation*//*每次8位,1個停止位,無奇偶驗證,正常發(fā)送模式(非紅外)*/

ULCON0=0x3|(0<<2)|(0<<3)|(0<<6);//0b00xx011

/*Interruptrequestorpollingmode/Normaltransmit/Normaloperation/PCLK/*//*發(fā)送和接受引腳采用中斷和輪詢查詢模式,正常發(fā)送,常規(guī)操作,時鐘選擇為PCLK*/UCON0=1|(1<<2)|(0<<10);

/*禁止FIFO*/

UFCON0=0;49ppt課件/***波特率計算:115200bps**PCLK=66MHz**DIV_VAL=(66000000/(115200x16))-1=35.8-1=34.8**UBRDIV0=34(DIV_VAL的整數(shù)部分)**(numof1'sinUDIVSLOTn)/16=0.8(DIV_VAL的小數(shù)部分)**(numof1'sinUDIVSLOTn)=12**UDIVSLOT0=0xDDDD(在數(shù)據(jù)手冊上880頁查表)*/UBRDIV0=34;//波特率分度值

UDIVSLOT0=0xDDDD;}50ppt課件51ppt課件voiduart_send_byte(unsignedcharbyte){while(!(UTRSTAT0&(1<<2)));/*等待發(fā)送緩沖區(qū)為空*/UTXH0=byte;/*發(fā)送一字節(jié)數(shù)據(jù)*/}

unsignedcharuart_recv_byte(){while(!(UTRSTAT0&1));/*等待接收緩沖區(qū)有數(shù)據(jù)可讀*/returnURXH0;/*接收一字節(jié)數(shù)據(jù)*/}

voiduart_send_string(char*str){char*p=str;while(*p)uart_send_byte(*p++);}52ppt課件(3)主函數(shù)intmain(){charbyte;

GPC1CON&=~(0xFF<<12);GPC1CON|=((LEDS<<12)|(LEDS<<16));

GPC1DAT|=0x3<<3;uart_send_string("\r\nUARTTestinS5PV210\r\n");

while(1){uart_send_string("\r\n1.LED1Toggle\r\n");uart_send_string("\r\n2.LED2Toggle\r\n");uart_send_string("\r\nPleaseselect1or2toToggletheLED\r\n");byte=uart_recv_byte();uart_send_byte(byte);if(byte=='1')GPC1DAT^=1<<3;//改變LED1的狀態(tài)

elseif(byte=='2')GPC1DAT^=1<<4;//改變LED2的狀態(tài)

}return0;}53ppt課件程序入口:.global_start_start: blclock_init bluart_init blmainhalt:bhalt54ppt課件下面介紹如何把本實例的目標bin文件制作成類u-boot啟動的目標bin文件。因為u-boot啟動分兩個階段BL1和BL2啟動,iROM在加載BL1時會校驗BL1的頭信息,規(guī)定如下:0x0:BL1的大?。ㄗ畲?6KB-16B)0x4:0規(guī)定0x8:BL1的校驗和。0x16:0規(guī)定。55ppt課件在生成源bin后,還需要添加16B的頭信息,制作成類u-boot的目標bin文件。具體讀者還需要詳細了解BootLoader的啟動過程。為了給源bin文件頭加入16B的頭信息,編寫文件addtopinfo.c56ppt課件具體燒寫到SD卡的流程如下:(1)執(zhí)行如下命令生成addtopinfo(#表示在Shell命令行下執(zhí)行)。#gccaddtopinfo.c–oaddtopinfo(2)然后用addtopinfo制作帶有頭信息的bin文件。#./addtopinfosource.bindest.bin(3)如果在虛擬機下運行Linux,就將SD卡插入SD讀卡器,將鼠標移到虛擬機中,然后將SD卡讀卡器插入計算機,這是Linux中將自動掛載SD卡。如果再實體機下運行Linux,就直接把SD卡讀卡器插入主機,如果沒有自動掛載,就手動用mount命令掛載。#mount/dev/adb1/mnt57ppt課件(4)在Linux中執(zhí)行df查看分區(qū)信息。#dfFilesystem1K-blocksUsedAvailableUse%Mountedon…/dev/sdb13864000438639961%/mntSdb1是SD卡的第1個分區(qū)。(5)執(zhí)行命令燒寫dest.bin到SD的第1塊。(6)拔下SD卡,將其插入開發(fā)板,然后撥動啟動選擇開關,選擇從SD啟動,上電后,看到邏輯程序現(xiàn)象。58ppt課件7.4UART通信實例(二)在實例一中實現(xiàn)了串口的基本通信功能,下面在實例二使用按鍵通過串口傳輸命令來控制LED。在此程序中需要建立四個文件,分別是start.Skey.cuart.cclock.c

。在uart.c和clock.c中主要包含五個函數(shù):clock_init()uart_init()uart_send_byte()uart_send_byte()uart_recv_byte()這幾個函數(shù)與實例一相同,在此不再敘述。在start.S中定義一個程序入口。59ppt課件start.S.global_start@聲明一個全局的標號.globalkey_isr_start:@設置棧,以調用c函數(shù)blclock_init bluart_init@開總中斷

mrsr0,cpsr @讀取cpsr寄存器中的值到r0bicr0,r0,#0x00000080@清除第7位,IRQ中斷禁止位,寫0使能IRQmsrcpsr,r0 @ ;把修改好的r0的值重新協(xié)會cpsrblmain@;跳轉到C函數(shù)去執(zhí)行60ppt課件halt:bhaltkey_isr:@;計算返回地址:PC的值等于當前執(zhí)行的地址+8,當CPU正要執(zhí)行某條指令時(還未執(zhí)行),被中斷,

@;這是這條剛要執(zhí)行的指令的地址剛好=PC-4sublr,lr,#4stmfdsp!,{r0-r12,lr}@;保護現(xiàn)場

blkey_handle@;恢復現(xiàn)場

ldmfdsp!,{r0-r12,pc}^@;^表示把spsr恢復到cpsr61ppt課件voidkey_handle(){volatileunsignedcharkey_code=EXT_INT_0_PEND&0xF;//檢查4個按鍵

volatileunsignedcharkey=0;VIC0ADDRESS=0;/*清中斷向量寄存器*/EXT_INT_0_PEND|=0xF;/*清中斷掛起寄存器*/

if(key_code==1)/*key1*/{key='1';GPC1DAT|=1<<3;/*LED1ON*/}elseif(key_code==2)/*key2*/{key='2';GPC1DAT&=~(1<<3);/*LED1OFF*/}

62ppt課件elseif(key_code==4)/*key3*/{key='3';GPC1DAT|=1<<4;/*LED2ON*/}elseif(key_code==8)/*key4*/{key='4';GPC1DAT&=~(1<<4);/*LED2OFF*/}uart_send_string("Youarepressedkey:");uart_send_byte(key);uart_send_string("\r\n");}63ppt課件intmain(){GPC1CON&=~(0xFF<<12);GPC1CON|=((0x01<<12)|(0x01<<16));/*配置GPC0_3和GPC0_4為輸出:LED1和LED2*/GPH0CON|=0xFFFFFFFF<<0;/*配置GPH0_0-GPH0_3為外部中斷:key1-key4*/EXT_INT_0_CON&=~(0xFF<<0); /*清空低八位*/EXT_

溫馨提示

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

最新文檔

評論

0/150

提交評論