《嵌入式操作系統(tǒng)》課件-項(xiàng)目三 串行通信設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
《嵌入式操作系統(tǒng)》課件-項(xiàng)目三 串行通信設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
《嵌入式操作系統(tǒng)》課件-項(xiàng)目三 串行通信設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
《嵌入式操作系統(tǒng)》課件-項(xiàng)目三 串行通信設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
《嵌入式操作系統(tǒng)》課件-項(xiàng)目三 串行通信設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩70頁(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)介

串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三任務(wù)一串行通信基本知識(shí)目錄一、串行通信基本概念三、串行端口硬件五、串行數(shù)據(jù)傳輸模式七、串行通信的方式二、串行通信協(xié)議四、串行通信軟件六、串行通信關(guān)鍵參數(shù)串行通信是一種數(shù)據(jù)傳輸方式,數(shù)據(jù)在一條線路上按順序一位一位地傳輸。并行通信數(shù)據(jù)在多條線路上按順序同時(shí)傳輸。一、串行通信基本概念串行通信具有硬件簡(jiǎn)單、成本低廉、適用于遠(yuǎn)距離通信等優(yōu)點(diǎn),傳輸速率較慢。并行通信與串行正好相反。二、串行通信協(xié)議串行通信需要遵循一定的協(xié)議,以確保數(shù)據(jù)的正確傳輸。常見(jiàn)的串行通信協(xié)議包括RS-232、RS-485、SPI等。這些協(xié)議規(guī)定了數(shù)據(jù)傳輸?shù)母袷健⑿盘?hào)線的定義以及傳輸方式等。針腳定義符號(hào)載波檢測(cè)DCD接收數(shù)據(jù)RXD發(fā)送數(shù)據(jù)TXD數(shù)據(jù)終端準(zhǔn)備好DTR信號(hào)地SG

常用235引腳數(shù)據(jù)準(zhǔn)備好DSR請(qǐng)求發(fā)送RTS清除發(fā)送CTS振鈴提示RI二、串行通信協(xié)議實(shí)現(xiàn)串行通信需要硬件的支持,其中最常見(jiàn)的硬件設(shè)備是串行端口。串行端口是計(jì)算機(jī)上的一個(gè)物理接口,可以通過(guò)它來(lái)連接外部設(shè)備,實(shí)現(xiàn)數(shù)據(jù)的傳輸。三、串行端口硬件常見(jiàn)的串行端口包括COM1、COM2等,單片機(jī)、嵌入式串口包括UART、USART。為了實(shí)現(xiàn)串行通信,我們需要使用相應(yīng)的軟件進(jìn)行調(diào)試或下載。這些軟件可以用來(lái)配置串行端口、設(shè)置通信參數(shù)以及發(fā)送和接收數(shù)據(jù)等。常見(jiàn)的串行通信軟件包括超級(jí)終端、串口調(diào)試助手等。四、串行通信軟件五、串行數(shù)據(jù)傳輸模式串行通信的數(shù)據(jù)傳輸模式分為異步模式和同步模式。異步模式是指數(shù)據(jù)傳輸過(guò)程中每個(gè)字符獨(dú)立于其他字符進(jìn)行發(fā)送。同步模式是指多個(gè)字符一起進(jìn)行傳輸,需要使用時(shí)鐘信號(hào)來(lái)同步。根據(jù)實(shí)際需要選擇合適的數(shù)據(jù)傳輸模式。異步通信在異步通信中,數(shù)據(jù)通常是以字符(字節(jié))為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)是低位在前,高位在后,通過(guò)傳輸線被接收端一幀一幀地接收。字符幀也稱為數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位等4部分組成。五、串行數(shù)據(jù)傳輸模式串行通信基本知識(shí)同步通信同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。信息幀和異步通信的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符。(1)單同步字符幀格式:(2)雙同步字符幀格式:波特率是指串行通信中數(shù)據(jù)傳輸?shù)乃俣?,用每秒鐘傳輸?shù)奈粩?shù)表示。如:4800bit/s、9600bit/s、19200bit/s、38400bit/s、115200bit/s。六、串行通信關(guān)鍵參數(shù)數(shù)據(jù)位是指?jìng)鬏數(shù)臄?shù)據(jù)中包含的位數(shù),常見(jiàn)的有5位、7位和8位,通常使用8位數(shù)據(jù)位。停止位用于標(biāo)識(shí)一幀數(shù)據(jù)的結(jié)束。校驗(yàn)位用于檢測(cè)數(shù)據(jù)傳輸過(guò)程中可能出現(xiàn)的錯(cuò)誤,常見(jiàn)的校驗(yàn)方式有奇校驗(yàn)O、偶校驗(yàn)E、無(wú)校驗(yàn)N。串行通信按數(shù)據(jù)傳輸?shù)姆较蚣皶r(shí)間關(guān)系可分為:?jiǎn)喂ぁ腚p工和全雙工。七、串行通信的方式1.單工通信通信線的一端接發(fā)送器,一端接接收器,數(shù)據(jù)只能按照一個(gè)固定的方向傳送,單方向如:收音機(jī)。2.半雙工通信系統(tǒng)的每個(gè)通信設(shè)備都由一個(gè)發(fā)送器和一個(gè)接收器組成,數(shù)據(jù)傳送可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行,如:對(duì)講機(jī)。3.全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,可以同時(shí)發(fā)送和接收,即數(shù)據(jù)可以在兩個(gè)方向上同時(shí)傳送,如:手機(jī)。串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三任務(wù)一STM32的USART串口及相關(guān)函數(shù)目錄具體結(jié)構(gòu)寄存器相關(guān)函數(shù)

通訊設(shè)計(jì)STM32擁有3路USART串口,串口資源豐富、功能強(qiáng)勁,其與傳統(tǒng)的51單片機(jī)串口(UART)、PC的RS232還有一定的區(qū)別。USART(通用同步/異步串行收發(fā)器)是以二進(jìn)制數(shù)據(jù)按位(bit)傳送。一、認(rèn)識(shí)STM32的USART串口STM32的USART串口使用異步串行數(shù)據(jù)格式進(jìn)行外部設(shè)備之間的全雙工數(shù)據(jù)交換。USART串口利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇,并支持局部互連網(wǎng)LAN、智能卡協(xié)議和IrDASIRENDEC規(guī)范,還具有用于多緩沖器配置的DMA方式,可以實(shí)現(xiàn)高速數(shù)據(jù)通信。USART串口硬件連接USART串口是通過(guò)RX(接收數(shù)據(jù)串行輸入)、TX(發(fā)送數(shù)據(jù)輸出)和地3個(gè)引腳與其他設(shè)備連接在一起的。一、認(rèn)識(shí)STM32的USART串口USART1串口的TX和RX引腳使用的是PA9和PA10;USART2串口的TX和RX引腳使用的是PA2和PA3;USART3串口的TX和RX引腳使用的是PB10和PB11;這些引腳默認(rèn)的功能都是GPIO,在作為串口使用時(shí),就要用到這些引腳的復(fù)用功能,在使用其的復(fù)用功能前,必須對(duì)復(fù)用的端口進(jìn)行設(shè)置。二、STM32串口的相關(guān)寄存器波特率寄存器USART_BRR決定串行通信的收發(fā)波特率控制寄存器USART_CR1決定串行通信的收發(fā)控制信號(hào)數(shù)據(jù)寄存器USART_DR決定串行通信的數(shù)據(jù)位和校驗(yàn)位狀態(tài)寄存器USART_SR決定串行通信的收發(fā)狀態(tài)

這四個(gè)寄存器決定串行通信的數(shù)據(jù)傳輸速率、格式,收發(fā)控制、狀態(tài)。實(shí)現(xiàn)和庫(kù)函數(shù)對(duì)應(yīng)關(guān)系。三、STM32串口的相關(guān)函數(shù)通常串口設(shè)置步驟可以有以下幾個(gè)步驟:串口時(shí)鐘使能,GPIO時(shí)鐘使能;串口復(fù)位;GPIO端口模式設(shè)置;串口參數(shù)初始化;開(kāi)啟中斷并且初始化NVIC(如果需要開(kāi)啟中斷才需要這個(gè)步驟);使能串口;編寫(xiě)中斷處理函數(shù)。1.使能USART串口的時(shí)鐘USART1串口是掛載在APB2(高速外設(shè))的外設(shè),USART2和USART3串口是掛載在APB1(低速外設(shè))的外設(shè)。2.設(shè)置GPIO復(fù)用端口使能GPIOx的時(shí)鐘;TX用來(lái)發(fā)送數(shù)據(jù),設(shè)置成復(fù)用功能的推挽輸出(AF_PP);RX用來(lái)接收數(shù)據(jù),設(shè)置成浮空輸入(IN_FLOATING)。USART1串口的TX和RX引腳使用的是PA9和PA10,USART2串口的TX和RX引腳使用的是PA2和PA3,USART3串口的TX和RX引腳使用的是PB10和PB11,這些引腳默認(rèn)的功能都是GPIO。三、STM32串口的相關(guān)函數(shù)3.串口復(fù)位串口復(fù)位是在USART_DeInit()函數(shù)中完成,例如復(fù)位USART2串口的代碼如下:USART_DeInit(USART2);//復(fù)位串口2三、STM32串口的相關(guān)函數(shù)4.初始化和使能串口初始化主要是配置串口的波特率、校驗(yàn)位、停止位和時(shí)鐘等基本功能,是通過(guò)USART_Init()函數(shù)來(lái)實(shí)現(xiàn)的;USART_Cmd(USART2,ENABLE);串口使能是通過(guò)函數(shù)USART_Cmd()來(lái)實(shí)現(xiàn)的。例如USART2串口使能代碼如下:三、STM32串口的相關(guān)函數(shù)5.數(shù)據(jù)發(fā)送和接收USART串口發(fā)送數(shù)據(jù)是通過(guò)USART_SendData()函數(shù),來(lái)操作USART_DR寄存器發(fā)送數(shù)據(jù)的;

例如向串口2發(fā)送數(shù)據(jù)代碼如下:USART_SendData(USART2,USART_TX_BUF[t]);USART串口接收數(shù)據(jù)是通過(guò)USART_ReceiveData()函數(shù),來(lái)操作USART_DR寄存器讀取串口接收到的數(shù)據(jù)。

例如讀取串口2接收到的數(shù)據(jù)代碼如下:Res=USART_ReceiveData(USART2);三、STM32串口的相關(guān)函數(shù)6.完成發(fā)送和接收數(shù)據(jù)的狀態(tài)位通過(guò)讀取串口的USART_SR狀態(tài)寄存器,然后根據(jù)USART_SR的第5位(RXNE)和第6位(TC)的狀態(tài)來(lái)判斷。判斷讀寄存器是否非空(RXNE)。當(dāng)RXNE位被置1時(shí),說(shuō)明串口已有數(shù)據(jù)接收到了,并可以讀出來(lái)。代碼如下:USART_GetFlagStatus(USART1,USART_FLAG_RXNE);判斷發(fā)送是否完成(TC)。當(dāng)該位被置1時(shí),說(shuō)明USART_DR內(nèi)的數(shù)據(jù)已經(jīng)發(fā)送完成了。代碼如下:USART_GetFlagStatus(USART1,USART_FLAG_TC);三、STM32串口的相關(guān)函數(shù)7.開(kāi)啟串口響應(yīng)中斷串口接收到數(shù)據(jù)時(shí)(RXNE讀數(shù)據(jù)寄存器非空),產(chǎn)生中斷。例如開(kāi)啟USART1串口接收到數(shù)據(jù)中斷的代碼是://開(kāi)啟中斷,接收到數(shù)據(jù)中斷USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);USART_ITConfig(USART1,USART_IT_TC,ENABLE);串口在發(fā)送數(shù)據(jù)結(jié)束時(shí)(TC發(fā)送完成),產(chǎn)生中斷。例如開(kāi)啟USART1串口發(fā)送完數(shù)據(jù)中斷的代碼如下:三、STM32串口的相關(guān)函數(shù)8.獲取相應(yīng)中斷狀態(tài)在使能了某個(gè)中斷時(shí),當(dāng)該中斷發(fā)生,就會(huì)設(shè)置狀態(tài)寄存器中的某個(gè)標(biāo)志位。在中斷處理函數(shù)中,要判斷該中斷是哪種中斷。USART_GetITStatus(USART1,USART_IT_TC);例如,使能了USART1串口發(fā)送完成中斷,當(dāng)中斷發(fā)生,便可以在中斷處理函數(shù)中調(diào)用這個(gè)函數(shù),來(lái)判斷到底是否是串口發(fā)送完成中斷,代碼如下:其返回值是SET,說(shuō)明是發(fā)生了串口發(fā)送完成中斷。三、STM32串口的相關(guān)函數(shù)四、STM32的USART1串口通信設(shè)計(jì)根據(jù)任務(wù)要求,STM32的USART1串口通信過(guò)程如下:usart.c文件主要包括支持printf函數(shù)代碼、串口初始化函數(shù)和串口中斷服務(wù)函數(shù)等。計(jì)算機(jī)通過(guò)串口助手發(fā)送數(shù)據(jù)給STM32;STM32接收到數(shù)據(jù),就會(huì)進(jìn)入接收數(shù)據(jù)串口中斷,讀取DR寄存器中接收到的數(shù)據(jù);然后將接收到的數(shù)據(jù),再通過(guò)串口發(fā)回計(jì)算機(jī)。編寫(xiě)usart.h頭文件和usart.c文件。STM32的USART1串口通信代碼,見(jiàn)源程序。串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三任務(wù)二虛擬終端認(rèn)識(shí)虛擬終端認(rèn)識(shí)串行虛擬終端的添加1.CTS

清除發(fā)送2.RTS

請(qǐng)求發(fā)送3.TXD發(fā)送數(shù)據(jù)4.RXD接收數(shù)據(jù)

串行虛擬終端認(rèn)識(shí)串行虛擬終端的參數(shù)設(shè)置1.元件符號(hào)設(shè)置

VT12.波特率設(shè)置96003.數(shù)據(jù)位設(shè)置84.奇偶檢驗(yàn)位無(wú)5.停止位

16.軟件握手

NO串行虛擬終端認(rèn)識(shí)串行虛擬終端仿真線路連接1.VT1的TXD發(fā)送--------VT2的RXD接收2.VT1的RXD接收--------VT1的TXD接收3.VT2與VT1虛擬終端參數(shù)設(shè)置要一樣串行虛擬終端認(rèn)識(shí)串行虛擬終端認(rèn)識(shí)串行虛擬終端仿真運(yùn)行顯示參數(shù)設(shè)置運(yùn)行后,右擊虛擬窗口彈出下圖ClearScreen

Pause

Copy

Paste

EchoTypedCharacters

HexDisplayMode

SetFont

清屏?xí)和?fù)制粘貼字符顯示十六進(jìn)制顯示設(shè)置顯示字體串行虛擬終端認(rèn)識(shí)字符傳輸與顯示設(shè)置EchoTypedCharacters

字符顯示

串行虛擬終端認(rèn)識(shí)VT1字符發(fā)送VT2十六進(jìn)制顯示VT2十六進(jìn)制顯示VT1字符發(fā)送VT1發(fā)送1字符時(shí)VT2接收到1字符的ASCII碼為十六進(jìn)制31八位二進(jìn)制。VT1發(fā)送張字符時(shí)VT2接收到張字符的ASCII碼為十六進(jìn)制D5C5十六位二進(jìn)制。串行虛擬終端認(rèn)識(shí)VT1十六進(jìn)制發(fā)送VT2字符顯示利用:虛擬終端與STM串口相連,控制和監(jiān)視串行通信。

串行虛擬終端認(rèn)識(shí)仿真運(yùn)行時(shí),無(wú)法顯示虛擬串口調(diào)試窗口設(shè)置串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三任務(wù)二STM32與虛擬終端通信STM32與虛擬終端通信通信效果圖STM32與虛擬終端通信硬件繪制、加載軟件虛擬終端TXD做發(fā)送連接32主機(jī)PA10的接收;虛擬終端R(TXD)監(jiān)視虛擬終端TXD發(fā)送信息;虛擬終端RXD接收32主機(jī)PA9發(fā)送的信息。STM32與虛擬終端通信通信參數(shù)設(shè)置虛擬終端顯示參數(shù)設(shè)置STM32與虛擬終端通信軟件文件夾、文件名、修改、添加1.復(fù)制前面任一軟件文件夾,修改工程名為usart32,新建文件夾SYSTEM用于存放串行通信的.c文件和.h文件。2.打開(kāi)USER文件夾下.c文件,修改文件名為Usart32。3.在SYSTEM文件夾下新建usart文件文件夾,新建usart.c文件和usart.h頭文件。STM32與虛擬終端通信軟件包含路徑的設(shè)置:點(diǎn)擊工具欄目標(biāo)選項(xiàng)STM32與虛擬終端通信項(xiàng)目文件夾、文件名、修改、添加

1.工程文件目錄名的修改。2.USER文件目錄下原.c文件的刪除,Usart.c文件的添加。3.新建SYSTEM文件目錄。4.在SYSTEM文件目錄下添加usart.c。STM32與虛擬終端通信軟件文件結(jié)構(gòu)設(shè)計(jì):串行通信完成與外設(shè)備進(jìn)行數(shù)據(jù)交換和信息傳遞功能,需要自行編寫(xiě)的代碼較多,需另建SYSTEM文件夾來(lái)存放usart.c文件和usart.h。1.Usart32.c文件頭文件包含、主函數(shù)、數(shù)據(jù)的接收和發(fā)送。2.usart.c文件串行通信初始化、中斷優(yōu)先控制設(shè)置、串行中斷服務(wù)函數(shù)。3.usart.h文件預(yù)處理(條件編譯、包含、宏定義、全局變量、串行初始函數(shù)申明)。STM32與虛擬終端通信串行通信子函數(shù)的工作流程

串口時(shí)鐘使能,GPIO時(shí)鐘使能;串口復(fù)位;GPIO端口模式設(shè)置;串口參數(shù)初始化;開(kāi)啟中斷并且初始化NVIC使能串口;編寫(xiě)中斷處理函數(shù)。課程小結(jié)串行通信的硬件設(shè)計(jì)和效果展示1串行通信的軟件結(jié)構(gòu)設(shè)計(jì)2串行通信子函數(shù)的工作流程3串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三任務(wù)二串口代碼解讀軟件代碼組成:串口代碼解讀Usart32.c主函數(shù)與usart.c(usart.h)中斷函數(shù)。

Usart32.c文件一頭文件、包含主函數(shù)、數(shù)據(jù)的接收和發(fā)送。

usart.h頭文件二預(yù)處理(條件編譯、包含、宏定義、全局變量、串行初始函數(shù)申明)。

usart.c文件三串行通信初始化、中斷優(yōu)先控制設(shè)置、串行中斷服務(wù)函數(shù)。一、Usart32.c主函數(shù)頭文件聲明串口代碼解讀Usart32.c主函數(shù)

主函數(shù)串口代碼解讀Usart32.c主函數(shù)二、usart.h頭文件extern可以置于變量/函數(shù)之前,表示該變量/函數(shù)已在別的文件中定義過(guò),提示編譯器,在其他的文件中查找。extern可以多次聲明在多個(gè)文件中,但定義這個(gè)變量?jī)H有一次。目的是是該變量可以在多個(gè)文件使用,變量值在某一文件修改后,其他文件中的該變量值也發(fā)生改變,通常說(shuō)的全局變量,一處.c文件定義,其他多處.c文件外部定義。串口代碼解讀usart.h頭文件extern可以置于變量/函數(shù)之前,表示該變量/函數(shù)已在別的文件中定義過(guò),提示編譯器,在其他的文件中查找。extern可以多次聲明在多個(gè)文件中,但定義這個(gè)變量?jī)H有一次。目的是是該變量可以在多個(gè)文件使用,變量值在某一文件修改后,其他文件中的該變量值也發(fā)生改變,通常說(shuō)的全局變量,一處.c文件定義,其他多處.c文件外部定義。三、usart.c文件串口代碼解讀usart.c文件串口代碼解讀usart.c文件串口代碼解讀usart.c文件串口代碼解讀usart.c文件課堂總結(jié)

讀功能第一步注程序串行通信實(shí)現(xiàn)的功能,重點(diǎn)注寫(xiě)與硬件接口相對(duì)應(yīng)功能。

讀流程第二步注程序子函數(shù)、中斷服務(wù)函數(shù)實(shí)現(xiàn)的功能,重點(diǎn)注寫(xiě)主函數(shù)調(diào)用子函數(shù)、中斷服務(wù)函數(shù)的流程及功能。

讀語(yǔ)句第三步注程序本語(yǔ)句或幾條語(yǔ)句組合實(shí)現(xiàn)在函數(shù)中的功能,重點(diǎn)注寫(xiě)該語(yǔ)句在函數(shù)的作用。

理層次讀寫(xiě)思改調(diào)拓達(dá)目的串行通信設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目三

溫馨提示

  • 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)論