《STM32應(yīng)用開發(fā)實(shí)踐》課件第8章 STM32串口USAR及其應(yīng)用_第1頁
《STM32應(yīng)用開發(fā)實(shí)踐》課件第8章 STM32串口USAR及其應(yīng)用_第2頁
《STM32應(yīng)用開發(fā)實(shí)踐》課件第8章 STM32串口USAR及其應(yīng)用_第3頁
《STM32應(yīng)用開發(fā)實(shí)踐》課件第8章 STM32串口USAR及其應(yīng)用_第4頁
《STM32應(yīng)用開發(fā)實(shí)踐》課件第8章 STM32串口USAR及其應(yīng)用_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄ContentsIIIIIIIVSTM32端口重映射·串口通信基礎(chǔ)USART功能描述USART應(yīng)用實(shí)例第8章

STM32串口USART及應(yīng)用目錄Contents知識(shí)點(diǎn)1)STM32端口到USART重映射;2)串口通信基礎(chǔ)及USART功能描述;3)USART應(yīng)用實(shí)踐。能力點(diǎn)了解STM32端口到USART重映射掌握USART功能、寄存器設(shè)置、波特率計(jì)算掌握ASRT應(yīng)用要點(diǎn)和編程課程學(xué)習(xí)知識(shí)點(diǎn)和能力點(diǎn)第8章STM32串口USART及應(yīng)用8.1STM32端口重映射第8章STM32串口USART及應(yīng)用

GPIO端口重映射STM32處理器上有很多的I/O口和片上外設(shè),為了節(jié)省引腳,這些片上外設(shè)和I/O口共用引腳,統(tǒng)稱為I/O引腳復(fù)用。很多復(fù)用還可以通過端口重映射,從不同的引腳引出,即處理器I/O引腳通過一個(gè)復(fù)用器連接到板載外設(shè)/模塊,該復(fù)用器一次僅允許一個(gè)外設(shè)的復(fù)用功能(AF)連接到I/O引腳,以確保共用同一個(gè)I/O引腳的外設(shè)之間不會(huì)發(fā)生沖突。

復(fù)用功能即“端口重映射”——將GPIO端口通過軟件配置,變成復(fù)用功能:最多有16個(gè)復(fù)用功能(AF0—AF15)其中AF0即“系統(tǒng)復(fù)用功能”(復(fù)位后的默認(rèn)功能)各種外圍設(shè)備分別映射到AF1—AF14每個(gè)I/O都可以作為“事件輸出”(EVENTOUT),映射到AF15。但PA15、PA14、PA13和PB4、PB3例外每個(gè)I/O都可以作為外中斷輸入,只需配置成輸入(或復(fù)位默認(rèn)狀態(tài))即可。8.1STM32端口重映射第8章STM32串口USART及應(yīng)用

GPIO端口重映射通過兩個(gè)復(fù)用功能寄存器(GPIOx_AFRL、GPIOx_AFRH)實(shí)現(xiàn)復(fù)用功能的映射圖8.1STM32F407引腳復(fù)用8.1STM32端口重映射第8章STM32串口USART及應(yīng)用

GPIO端口重映射STM32處理器的引腳復(fù)用圖,如上圖8.1所示。其中每個(gè)I/O引腳都有一個(gè)復(fù)用器,該復(fù)用器采用16路復(fù)用功能輸入(AF0到AF15),可通過GPIOx_AFRL(針對(duì)引腳0到7)和GPIOx_AFRH(針對(duì)引腳8到15)寄存器對(duì)這些輸入進(jìn)行配置:完成復(fù)位后,所有I/O都會(huì)連接到系統(tǒng)的復(fù)用功能0(AF0)。外設(shè)的復(fù)用功能映射到AF1至AF13。Cortex-M4EVENTOUT映射到AF15。以USART1為例,圖8.2中使用的引腳為PA9、PA10即可以作為通用IO使用,又可以作為串口1(USART1)的發(fā)送數(shù)據(jù)(TXD)和接收數(shù)據(jù)(RXD)引腳。圖8.2串口1原理圖8.2串行通信基礎(chǔ)單片機(jī)與外設(shè)通信的基本方式1)并行通信:原理:數(shù)據(jù)的各個(gè)位同時(shí)傳輸優(yōu)點(diǎn):效率高,速度快缺點(diǎn):占用引腳資源多多用于芯片內(nèi)部2)串行通信:原理:數(shù)據(jù)一位一位按順序傳輸優(yōu)點(diǎn):占用引腳資源少缺點(diǎn):效率低,速度慢多用于芯片間及數(shù)字設(shè)備之間串行通信的種類的應(yīng)用越來越廣單片機(jī)外部設(shè)備D0D1D2D15…單片機(jī)外部設(shè)備TxRx

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)串行通信種類UART(通用異步收發(fā)器)UniversalAsynchronousReceiverandTransmitterUSART(通用同步/異步收發(fā)器)UniversalSynchronousAsynchronousReceiverandTransmitterSPI(串行外設(shè)接口)SerialPeripheralInterfaceI2C(IIC,集成電路接口總線)Inter-IntegratedCircuitI2S(IIS,集成電路音頻總線)Inter-ICSoundUSB(通用串行總線)UniversalSerialBus其他……傳統(tǒng)串口現(xiàn)代串口8.2串行通信基礎(chǔ)串行通信工作方式1)單工數(shù)據(jù)傳輸只能在一個(gè)方向上實(shí)現(xiàn),即單向傳輸2)半雙工允許數(shù)據(jù)在兩個(gè)方向上傳輸,但是不能同時(shí)實(shí)現(xiàn),即在某一時(shí)刻,只允許一個(gè)方向傳輸實(shí)際上是一種切換方向的單工通信3)全雙工允許數(shù)據(jù)同時(shí)在兩個(gè)方向上傳輸,相當(dāng)于兩個(gè)單工通信方式的結(jié)合要求雙方都有獨(dú)立的接收和發(fā)送能力8.2串行通信基礎(chǔ)異步與同步異步通信雙方按約定速率(頻率)工作,不能保證雙方“步調(diào)一致”節(jié)省引腳資源,簡(jiǎn)單易用易產(chǎn)生時(shí)序誤差,速度較低傳統(tǒng)串口(UART)、單總線等屬于異步通信同步通信工作時(shí),通過時(shí)鐘信號(hào)保證雙方步調(diào)一致(同步)除了數(shù)據(jù)線,多了一根時(shí)鐘線時(shí)序精準(zhǔn),能夠?qū)崿F(xiàn)更高速度SPI、IIC等屬于同步通信8.2串行通信基礎(chǔ)常見串行通信的工作方式通信標(biāo)準(zhǔn)引腳說明通信方式通信方向UARTTXD:數(shù)據(jù)發(fā)送端RXD::數(shù)據(jù)接收端GND:公共地異步全雙工

1-wire(單總線)DQ:數(shù)據(jù)輸入/輸出端異步半雙工SPISCK:同步時(shí)鐘MISO:主機(jī)輸入,從機(jī)輸出MOSI:主機(jī)輸出,從機(jī)輸入同步全雙工I2CSCL:同步時(shí)鐘SDA:數(shù)據(jù)輸入/輸出端同步半雙工8.2串行通信基礎(chǔ)STM32F401的串口通信STM32系列支持兩種類型的串口:UART:通用異步收發(fā)器USART:通用同步/異步收發(fā)器STM32F4xx系列最多可支持8個(gè)串口,但STM32F401只實(shí)現(xiàn)了3個(gè):USART1、USART2、USART6USART引腳RXD(或RX):數(shù)據(jù)輸入(接收)TXD(或TX):數(shù)據(jù)輸出(發(fā)送)CTS:清除發(fā)送RTS:請(qǐng)求發(fā)送SCLK(或CLK/CK):同步時(shí)鐘信號(hào)USART三種工作模式:硬件控制流模式下使用異步控制流(異步)同步RXD√√√TXD√√√CTS√RTS√SCLK√GND√√√8.2串行通信基礎(chǔ)通用異步收發(fā)器UART引腳連接方法:只需3個(gè)引腳:RXD、TXD、GND信號(hào)線交叉連接交叉連接雙方均為TTL電平,無需電平轉(zhuǎn)換RS232電平TTL電平數(shù)字信號(hào)TTL電平RS232電平00V(低)+3~+15V1VDD(高)-3~-15V8.2串行通信基礎(chǔ)通用異步收發(fā)器RS232連接器PC機(jī)串口與外部連接時(shí)都是RS232電平,采用DB9針式連接器(俗稱DB9公頭)另外,還有一種DB9孔式連接器(俗稱DB9母頭),也可用于RS232串口針式接頭和孔式連接器可以直接對(duì)接,也可以使用直通線連接。而針式與針式、孔式與孔式,則必須使用交叉線連接建議開發(fā)板采用與PC相同的DB9針式接頭,使板與板、板與PC連接方法相同,只需配制一根交叉線即可(兩頭均為孔式)15695196公頭定義:2:RXD3:TXD5:GND母頭定義:2:TXD3:RXD5:GND8.2串行通信基礎(chǔ)通用異步收發(fā)器串口通信過程

第8章STM32串口USART及應(yīng)用MCU內(nèi)核輸入數(shù)據(jù)緩沖器串行輸入移位寄存器輸出數(shù)據(jù)緩沖器串行輸出移位寄存器RXDTXD串行數(shù)據(jù)輸入串行數(shù)據(jù)輸出外部設(shè)備……TXDRXD接收器發(fā)送器

關(guān)鍵技術(shù):移位寄存器輸入移位:串行

并行輸出移位:并行

串行8.2串行通信基礎(chǔ)通用異步收發(fā)器數(shù)據(jù)格式要實(shí)現(xiàn)通信,收發(fā)雙方不僅要約定速率,還要約定具體的數(shù)據(jù)格式,包括:一個(gè)數(shù)據(jù)多少位——字長(zhǎng)誰打頭誰斷后——發(fā)送順序如何表示開始——起始位如何表示結(jié)束——停止位是否需要核對(duì)——校驗(yàn)位

第8章STM32串口USART及應(yīng)用數(shù)據(jù)的基本單位是字節(jié)(8bit),加上可能的校驗(yàn)位,所以串口通信的字長(zhǎng)一般為8位或9位規(guī)定從低位開始發(fā)送,即LSB(bit0)打頭,然后bit1,……最后是MSB(bit7或bit8)起始位為1位,其值默認(rèn)為0(低電平)有0.5位、1位、1.5位、2位四種情況,適用于不同應(yīng)用。停止位默認(rèn)為1(高電平)。①1位:大多數(shù)情況下適用,也是默認(rèn)值②2位:常規(guī)USART,單線模式及調(diào)制解調(diào)器③0.5位和1.5位:多用于智能卡模式校驗(yàn)位為1位(可選),發(fā)送時(shí)排在數(shù)據(jù)后面。有奇校驗(yàn)、偶校驗(yàn)兩種:①奇校驗(yàn):使數(shù)據(jù)+校驗(yàn)位中1的個(gè)數(shù)為奇數(shù)②偶校驗(yàn):使數(shù)據(jù)+校驗(yàn)位中1的個(gè)數(shù)為偶數(shù)8.2串行通信基礎(chǔ)通用異步收發(fā)器數(shù)據(jù)幀的概念:從起始位、數(shù)據(jù)到停止位的整個(gè)傳輸周期稱為一“幀”1幀=起始位+數(shù)據(jù)位(8或9位)+停止位USART傳輸時(shí)是以“幀”為單位的每一位的發(fā)送/接收是由串口的內(nèi)部時(shí)鐘來控制的

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)通用異步收發(fā)器波特率(BaudRate)波特率指單位時(shí)間傳送的二進(jìn)制位數(shù)(即1秒鐘發(fā)送或接收多少位,單位是bit/s或bps),也稱“碼速”波特率是串口通信的重要指標(biāo),代表了數(shù)據(jù)傳輸?shù)乃俣?。接收器和發(fā)送器使用相同的波特率由于歷史的原因,形成了一些特定的波特率(bit/s):1200、2400、48009600、19200、38400、57600115200、……隨著技術(shù)的發(fā)展,波特率早已超出上述特定值,越來越高(如STM32F401最高可達(dá)10.5Mbit/s),但傳統(tǒng)還是要遵守的波特率由系統(tǒng)時(shí)鐘分頻得到,通過配置相關(guān)的寄存器來實(shí)現(xiàn)

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)通用異步收發(fā)器UART使用前需要定義的參數(shù)①起始位(默認(rèn)1位)②數(shù)據(jù)位(8位或9位)③奇偶校驗(yàn)位(第9位)④停止位(0.5、1、1.5、2位)⑤波特率⑥硬件流控制(一般不用)以上參數(shù)只是UART初始化的一部分,還有一些配置取決于具體芯片和應(yīng)用,如:時(shí)鐘使能引腳復(fù)用工作模式中斷設(shè)置……

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)STM32F407串口通信STM32F401實(shí)現(xiàn)了3個(gè)通用同/異步串行口:USART1、USART2、USART6這些串口可以映射到不同的I/O端口上,功能也有所不同:USART1:可以映射到PA、PB口,其中PB上只支持異步(3線)USART2:可以映射到PA、PD口,均為全功能USART6:只能映射到PC口,不支持硬件流控制

第8章STM32串口USART及應(yīng)用串口號(hào)RXDTXDCTSRTSCLK1PA10PA9PA11PA12PA8PB7PB6------2PA3PA2PA0PA1PA4PD6PD5PD3PD4PD76PC7PC6----PC88.2串行通信基礎(chǔ)STM32F407串口通信主要特性①通信模式單線半雙工(僅用TXD,需上拉)異步全雙工同步全雙工(僅可用于主模式)②數(shù)據(jù)幀格式可編程數(shù)據(jù)字長(zhǎng):8位或9位停止位:1、0.5、2、1.5位奇偶校驗(yàn)控制:禁用,或使用(奇校驗(yàn)或偶校驗(yàn))

第8章STM32串口USART及應(yīng)用STM32USART外設(shè)USARTTxDTxDVDDR10KSTM32USART外設(shè)USARTRxDTxDTxDRxDSTM32USART外設(shè)SPIRxDMISOTxDMOSICLKSCLKNSS單線半雙工異步全雙工同步全雙工練習(xí)思考題1、串行通信中,半雙工和全雙工有什么區(qū)別?2、異步串行通信與同步通信有什么相同和不同之處?3、說說UART數(shù)據(jù)幀的組成4、STM32的USART有幾種通信模式?

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)STM32F407串口通信主要特性③容差性可配置16倍過釆樣或8倍過釆樣,實(shí)現(xiàn)速度容差與時(shí)鐘容差的靈活配置④小數(shù)波特率發(fā)生器通常分頻系數(shù)都是整數(shù),STM32支持小數(shù)分頻,可以提供更精確的波特率⑤三種傳輸檢測(cè)標(biāo)志接收緩沖器已滿發(fā)送緩沖器為空傳輸結(jié)束標(biāo)志⑥四個(gè)錯(cuò)誤檢測(cè)標(biāo)志溢出標(biāo)志噪聲檢測(cè)標(biāo)志幀錯(cuò)誤奇偶校驗(yàn)錯(cuò)誤

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)STM32F407串口通信主要特性⑦十個(gè)具有標(biāo)志位的中斷源CTS變化LIN斷開檢測(cè)發(fā)送數(shù)據(jù)寄存器為空發(fā)送完成接收數(shù)據(jù)寄存器已滿檢測(cè)到線路空閑溢出錯(cuò)誤幀錯(cuò)誤噪聲錯(cuò)誤奇偶校驗(yàn)錯(cuò)誤

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)STM32F407串口通信主要特性⑧高級(jí)應(yīng)用特性LIN:局域互聯(lián)網(wǎng)絡(luò)(是CAN的一種補(bǔ)充,一主多從)智能卡(ISO7816),支持智能卡仿真功能IrDA編解碼器:串行紅外線協(xié)議(SIRENDEC)硬件數(shù)據(jù)流控制,用于調(diào)制解調(diào)器操作

第8章STM32串口USART及應(yīng)用8.2串行通信基礎(chǔ)STM32F407串口通信主要特性⑨其它特性DMA支持多機(jī)通信喚醒功能,包括從靜默模式喚醒和接收器喚醒

第8章STM32串口USART及應(yīng)用8.3USART功能描述USART結(jié)構(gòu)功能模塊

第8章STM32串口USART及應(yīng)用USARTIrDAModemLINSmartCard波特率發(fā)生器CTSRTSRXTX中斷(10個(gè))DMASCLK8.3USART功能描述USART結(jié)構(gòu)1)收發(fā)部分?jǐn)?shù)據(jù)寄存器移位寄存器2)波特率產(chǎn)生3)控制部分?jǐn)?shù)據(jù)幀參數(shù)時(shí)鐘控制收發(fā)控制運(yùn)行控制狀態(tài)標(biāo)志中斷控制喚醒控制過采樣4)引腳驅(qū)動(dòng)

第8章STM32串口USART及應(yīng)用收發(fā)部分波特率產(chǎn)生控制部分引腳驅(qū)動(dòng)8.3USART功能描述USART字符描述串口傳輸以幀為單位,除了普通的數(shù)據(jù)幀,還有代表特定含義的幀結(jié)構(gòu)①空閑字符(空閑幀)全部由1組成(包括起始位和停止位)代表數(shù)據(jù)線處于空閑狀態(tài)可以導(dǎo)致“檢測(cè)到線路空閑”中斷②停止字符(斷開幀/中斷幀)全部由0組成(包括起始位和停止位)表示發(fā)送中止(break)或發(fā)送完成,需要重新開始(插入一個(gè)停止位后)

第8章STM32串口USART及應(yīng)用空閑字符停止字符8.3USART功能描述發(fā)送器發(fā)送數(shù)據(jù)寄存器(TDR)存放要發(fā)送的數(shù)據(jù)發(fā)送移位寄存器負(fù)責(zé)一位一位發(fā)送涉及控制寄存器CR1/CR2/CR3、狀態(tài)寄存器SR、波特率寄存器BRR等選擇字長(zhǎng)(8位還是9位):——CR1中M位奇偶校驗(yàn)控制使能:——CR1中PCE位奇偶校驗(yàn)選擇位:——CR1中

PS位選擇停止位:——CR2中STOP[1:0]位USART使能:——CR1中UE位DMA使能(如果需要):——CR3中DMAT位波特率設(shè)置:——BRR寄存器發(fā)送空閑幀(啟動(dòng)發(fā)送):——CR2中TE位幀發(fā)送完成:——SR中TC位

第8章STM32串口USART及應(yīng)用注意:發(fā)送數(shù)據(jù)寄存器(TDR)和接受數(shù)據(jù)寄存器(RDR)共用一個(gè)名稱DR,但物理上是分開的8.3USART功能描述發(fā)送器發(fā)送配置步驟①使能USART②定義字長(zhǎng),及奇偶校驗(yàn)位③選擇停止位④如果需要,使能DMA,并按照多緩沖區(qū)通信中的解釋說明配置DMA寄存器⑤波特率設(shè)置⑥發(fā)送一個(gè)空閑幀(啟動(dòng)發(fā)送)⑦發(fā)送一個(gè)字(將要發(fā)送的數(shù)據(jù)寫入數(shù)據(jù)寄存器DR)⑧查詢狀態(tài),等待發(fā)送完成

第8章STM32串口USART及應(yīng)用8.3USART功能描述接收器接收數(shù)據(jù)寄存器(RDR)存放移位輸入的數(shù)據(jù)接收移位寄存器負(fù)責(zé)移位接收接收器可以接收8位或9位數(shù)據(jù),但要先解決一個(gè)問題:如何偵測(cè)起始位?

第8章STM32串口USART及應(yīng)用8.3USART功能描述接收器起始位偵測(cè)在USART中,識(shí)別出特定序列的釆樣,可認(rèn)為檢測(cè)到了起始位。該序列為:1110X0X0X0000過采樣率設(shè)成16或8,不影響起始位偵測(cè)的順序

第8章STM32串口USART及應(yīng)用8.3USART功能描述接收器接收器同樣有許多控制、狀態(tài)和設(shè)置,涉及控制寄存器CR1/CR2/CR3、狀態(tài)寄存器SR、波特率寄存器BRR等選擇字長(zhǎng)(8位還是9位):——CR1中M位奇偶校驗(yàn)控制使能:——CR1中PCE位奇偶校驗(yàn)選擇位:——CR1中

PS位選擇停止位:——CR2中STOP[1:0]位USART使能:——CR1中UE位DMA使能(如果需要):——CR3中DMAR位波特率設(shè)置:——BRR寄存器選擇適當(dāng)?shù)倪^采樣率:——CR1中OVER8位偵測(cè)起始位(啟動(dòng)接收):——CR2中RE位幀接收完成:——SR中RXNE位

第8章STM32串口USART及應(yīng)用同發(fā)送器8.3USART功能描述接收器接收配置步驟①使能USART②定義字長(zhǎng),及奇偶校驗(yàn)位③選擇停止位④如果需要,使能DMA,并按照多緩沖區(qū)通信中的解釋說明配置DMA寄存器⑤波特率設(shè)置⑥偵測(cè)起始位(啟動(dòng)接收)⑦查詢RDR非空標(biāo)志(為1時(shí)表示一幀數(shù)據(jù)接收完成)如果接收到了數(shù)據(jù),有可能:⑧產(chǎn)生中斷⑨錯(cuò)誤標(biāo)志(幀錯(cuò)誤、噪聲、上溢)

第8章STM32串口USART及應(yīng)用同發(fā)送器8.3USART功能描述波特率計(jì)算STM32支持所謂的“小數(shù)分頻”,生成更精確的波特率接收器和發(fā)送器采用相同的波特率,所以一個(gè)串口波特率只需設(shè)置一次波特率一經(jīng)設(shè)置立即生效,因此不允許在通信過程中更改波特率1)標(biāo)準(zhǔn)USART(包括SPI模式下)波特率計(jì)算公式如下:

公式①式中:fCK為串口外設(shè)的總線時(shí)鐘頻率(USART1/6是APB2總線,USART2是APB1總線)USARTDIV為分頻系數(shù),其值為小數(shù),轉(zhuǎn)換后就是波特率寄存器BRR的值。USARTDIV轉(zhuǎn)換方法:BRR高16位不用。將低16位分成2部分:其中高12位([15:4])保存UASRTDIV的整數(shù)部分,低4位([3:0])保存小數(shù)部分如果設(shè)置8倍過采樣(OVER8=1),則小數(shù)部分只取3位(保持bit3=0),整數(shù)部分仍為12位

第8章STM32串口USART及應(yīng)用8.3USART功能描述波特率計(jì)算STM32支持所謂的“小數(shù)分頻”,生成更精確的波特率2)智能卡、LIN、IrDA模式下,必須采用16倍過采樣(即OVER8=0),其波特率按下式計(jì)算:

公式②同樣,計(jì)算出的USARTDIV要經(jīng)轉(zhuǎn)換后寫入BRR:BRR高16位不用。將低16位分成2部分:其中高12位([15:4])保存UASRTDIV的整數(shù)部分,低4位([3:0])保存小數(shù)部分注意:最后的轉(zhuǎn)換結(jié)果是二進(jìn)制數(shù)(16進(jìn)制數(shù))!

第8章STM32串口USART及應(yīng)用8.3USART功能描述波特率計(jì)算舉例1欲設(shè)USART1的波特率為115200,已知APB2總線時(shí)鐘頻率為84MHz,采用8倍過采樣(OVER8=1)。求波特率寄存器的設(shè)置值根據(jù)公式①,有:那么得到:小數(shù)部分DIV_Fraction=8*0.146≈1=0x1(小數(shù)保留3位,取整)整數(shù)部分DIV_Mantissa=91=0x5B(整數(shù)部分占12位)所以BRR寄存器的設(shè)置值為:0x5B<<4|0x1=0x5B1

第8章STM32串口USART及應(yīng)用OVER8=1時(shí),小數(shù)保留3位8.3USART功能描述波特率計(jì)算舉例2USART1用于智能卡,波特率為115200,已知APB2總線時(shí)鐘頻率為84MHz,求波特率寄存器的設(shè)置值根據(jù)公式②,有:那么得到:小數(shù)部分DIV_Fraction=16*0.573≈9=0x9(小數(shù)保留4位,取整)整數(shù)部分DIV_Mantissa=45=0x2D(整數(shù)部分占12位)所以BRR寄存器的設(shè)置值為:0x2D<<4|0x9=0x2D9

第8章STM32串口USART及應(yīng)用OVER8=0時(shí),小數(shù)保留4位8.3USART功能描述波特率計(jì)算舉例3如何從波特率寄存器的值得到分頻系數(shù)。設(shè)BRR=0x1BC,OVER8=0,求USARTDIV=?整數(shù)部分DIV_Mantissa

=0x1BC>>4=0x1B=27(整數(shù)部分為高12位)小數(shù)部分DIV_Fraction=(0xC)/16=12/16=0.75(此時(shí)小數(shù)部分取低4位)

所以,USARTDIV=27.75舉例4設(shè)USARTDIV=50.99,OVER8=1,問BRR應(yīng)如何設(shè)置?整數(shù)部分DIV_Mantissa=50=0x32(整數(shù)部分為高12位)小數(shù)部分DIV_Fraction=8*0.99=7.92≈8,超出了低3位([2:0])的范圍,此時(shí)應(yīng)向整數(shù)部分進(jìn)位故:DIV_Mantissa=50+進(jìn)位=51=0x33 DIV_Fraction=0x0所以:BRR=0x33<<4=0x330

第8章STM32串口USART及應(yīng)用練習(xí)思考題5、STM32F401支持幾個(gè)USART?它們可映射到哪些I/O端口?6、STM32的USART有多少種錯(cuò)誤檢測(cè)標(biāo)志?多少個(gè)中斷源?7、已知STM32F401外設(shè)總線運(yùn)行在最高時(shí)鐘頻率,現(xiàn)欲將USART2波特率設(shè)為9600,采用16倍過采樣,問波特率寄存器的設(shè)置值是多少?

第8章STM32串口USART及應(yīng)用8.3USART功能描述USART寄存器每個(gè)USART,都有如下一組寄存器:

第8章STM32串口USART及應(yīng)用寄存器功能說明狀態(tài)寄存器(USART_SR)反應(yīng)USART的狀態(tài)數(shù)據(jù)寄存器(USART_DR)保存接收或發(fā)送的數(shù)據(jù)波特率寄存器(USART_BRR)用于設(shè)置USART波特率控制寄存器1(USART_CR1)對(duì)USART進(jìn)行控制控制寄存器2(USART_CR2)隊(duì)USART進(jìn)行控制控制寄存器3(USART_CR3)對(duì)USART進(jìn)行控制保護(hù)時(shí)間和預(yù)分頻寄存器(USART_GTPR)設(shè)置保護(hù)時(shí)間和預(yù)分頻系數(shù)(僅用于智能卡和IrDA模式)8.3USART功能描述USART寄存器USART寄存器結(jié)構(gòu)體

第8章STM32串口USART及應(yīng)用typedefstruct{

__IOuint16_t SR; //狀態(tài)寄存器,偏移0x0

uint16_t RESERVED0; //保留,不可用

__IOuint16_t DR; //數(shù)據(jù)寄存器,偏移0x4

uint16_t RSERVED1;__IOuint16_t BRR; //波特率寄存器,偏移0x8

uint16_t RESERVED2;__IOuint16_t CR1; //控制寄存器1,偏移0xC

uint16_t RESERVED3;__IOuint16_t CR2; //控制寄存器2,偏移0x10

uint16_t RESERVED4;

__IOuint16_t CR3; //控制寄存器3,偏移0x14

uint16_t RESERVED5;

__Ouint16_t GTPR; //保護(hù)時(shí)間和預(yù)分頻寄存器,偏移0x18

uint16_t RESERVED6;}USART_TypeDef;高16位不用,保留每個(gè)寄存器都是32位,但只用了低16位編程時(shí),用此類型名定義相關(guān)的結(jié)構(gòu)體變量或指針!編程的重點(diǎn)和難點(diǎn)在這里!8.3USART功能描述USART寄存器USART結(jié)構(gòu)體基地址和指針(在stm32f4xx.h中):成員訪問方法(成員運(yùn)算、指向運(yùn)算)①用USART_TypeDef聲明結(jié)構(gòu)體變量或結(jié)構(gòu)體指針,然后用.

或->

尋址②直接用以下定義好的結(jié)構(gòu)體指針,如:USART1->DR

第8章STM32串口USART及應(yīng)用//0x40000000即外設(shè)塊首地址8.3USART功能描述USART寄存器狀態(tài)寄存器(SR)英文名:StatusRegister作用:實(shí)時(shí)反映USART當(dāng)前的各種狀態(tài)(設(shè)置標(biāo)志),均可產(chǎn)生中斷(得到允許時(shí))。標(biāo)志由硬件自動(dòng)置位,但清除方法有所不同:rc_w0:可讀,通過軟件寫0清除標(biāo)志r:只讀,清除需特別的讀寫操作

第8章STM32串口USART及應(yīng)用偏移:0x0高16位不用,保留復(fù)位值:0x000000C0CTS-CTS標(biāo)志:0:CTS線無變化1:CTS線有變化LBD-LIN斷路檢測(cè)標(biāo)志:0:LIN未斷路1:檢測(cè)到LIN斷路TXE-發(fā)送數(shù)據(jù)寄存器(TDR)為空標(biāo)志:0:TDR數(shù)據(jù)未動(dòng)(非空)1:TDR數(shù)據(jù)已轉(zhuǎn)移到移位寄存器清除方法:寫DR寄存器TC-發(fā)送完成標(biāo)志:0:未完成1:移位寄存器傳完了清除方法:先讀SR再寫DR(也可以寫0)RXNE-接收數(shù)據(jù)寄存器(RDR)非空標(biāo)志:0:RDR未收到數(shù)據(jù)1:RDR已收到來自移位寄存器的數(shù)據(jù)清除方法:讀DR寄存器(也可以寫0)118.3USART功能描述USART寄存器狀態(tài)寄存器(SR)共有10個(gè)標(biāo)志,對(duì)應(yīng)10個(gè)中斷源

第8章STM32串口USART及應(yīng)用IDLE-線路空閑標(biāo)志:0:未檢測(cè)到空閑1:檢測(cè)到空閑清除方法:先讀SR再讀DRORE-上溢錯(cuò)誤標(biāo)志:0:無上溢錯(cuò)誤1:RDR非空時(shí),移位寄存器又送來新數(shù)據(jù)清除方法:先讀SR再讀DRNF-檢測(cè)到噪聲標(biāo)志:0:接收幀沒有檢測(cè)到噪聲1:檢測(cè)到噪聲(采樣不一致,但仍能識(shí)別)清除方法:先讀SR再讀DRFE-幀錯(cuò)誤標(biāo)志:0:未檢測(cè)到幀錯(cuò)誤1:檢測(cè)到幀錯(cuò)誤或中斷字符清除方法:先讀SR再讀DRPE-奇偶校驗(yàn)錯(cuò)誤標(biāo)志:0:沒有奇偶校驗(yàn)錯(cuò)誤1:發(fā)生了奇偶校驗(yàn)錯(cuò)誤清除方法:先讀SR再讀/寫DR(需等待RXNE置位)8.3USART功能描述USART寄存器數(shù)據(jù)寄存器(DR)英文名:DataRegister作用:數(shù)據(jù)緩存,用于保存收到的數(shù)據(jù),以及保存待發(fā)送的數(shù)據(jù)由輸入數(shù)據(jù)寄存器(RDR)和輸入數(shù)據(jù)寄存器(TDR)組成編程時(shí)統(tǒng)稱DR,“一塊牌子,兩個(gè)房間”

第8章STM32串口USART及應(yīng)用偏移:0x4高23位[31:9]不用,只用[8:0]復(fù)位值:不確定(xxxxxxxx)RDR輸入移位寄存器輸出移位寄存器RXDTXD……TDRDRDR[8:0]-收到或待發(fā)的數(shù)據(jù):其中bit8和bit7為可能的奇偶校驗(yàn)位(取決于幀設(shè)置),輸出校驗(yàn)位無需配置,系統(tǒng)自動(dòng)生成8.3USART功能描述USART寄存器波特率寄存器(BRR)英文名:BaudRateRegister作用:存放分頻系數(shù)(USARTDIV),生成波特率時(shí)鐘分頻系數(shù)為帶小數(shù)的定點(diǎn)數(shù),有利于生成精確地波特率

第8章STM32串口USART及應(yīng)用偏移:0x8高16位不用,保留復(fù)位值:0x00000000DIV_Mantissa[11:0]:USARTDIV的整數(shù)部分(尾數(shù))DIV_Fraction[3:0]:USARTDIV的小數(shù)部分。OVER8=0,小數(shù)部分取4位OVER8=1,小數(shù)部分取3位8.3USART功能描述USART寄存器控制寄存器1(CR1)英文名:ControlRegister1作用:用于運(yùn)行控制、中斷控制及幀格式設(shè)置等,均由軟件置位或復(fù)位

第8章STM32串口USART及應(yīng)用偏移:0xC高16位不用,保留復(fù)位值:0x00000000OVER8-過采樣模式:0:16倍過采樣1:8倍過采樣(在智能卡/IrDA/LIN模式下不可用)UE-USART使能:0:禁止1:使能M-字長(zhǎng)選擇:0:8位字長(zhǎng)1:9位字長(zhǎng)WAKE-喚醒方法:0:空閑線路1:地址標(biāo)記PCE-奇偶校驗(yàn)使能:0:禁用奇偶校驗(yàn)1:使能奇偶校驗(yàn)PS-奇偶校驗(yàn)選擇:0:偶校驗(yàn)1:奇校驗(yàn)PEIE-奇偶校驗(yàn)錯(cuò)誤(PE)中斷使能:0:禁止1:允許8.3USART功能描述USART寄存器控制寄存器1(CR1)英文名:ControlRegister1作用:用于運(yùn)行控制、中斷控制及幀格式設(shè)置等,均由軟件置位或復(fù)位

第8章STM32串口USART及應(yīng)用TXEIE-發(fā)送數(shù)據(jù)為空(TXE)中斷使能:0:禁止1:允許TCIE-發(fā)送完成(TC)中斷使能:0:禁止1:允許RXNEIE-接收數(shù)據(jù)非空(RXNE)中斷使能:0:禁止1:允許IDLEIE-線路空閑(IDLE)中斷使能:0:禁止1:允許TE-發(fā)送器使能:0:禁用1:使能RE-接收器使能:0:禁用1:使能RWU-接收器喚醒(是否靜音):0:活動(dòng)模式1:靜音模式SBK-發(fā)送斷路字符:0:不發(fā)送1:發(fā)送8.3USART功能描述USART寄存器CR1與SR的關(guān)系SR中有多個(gè)事件標(biāo)志,可以作為中斷源,但是否得到允許,在CR1中設(shè)置所有的中斷使能默認(rèn)都是:禁止

第8章STM32串口USART及應(yīng)用SR中:標(biāo)志CR1中:使能8.3USART功能描述USART寄存器控制寄存器2(CR2)英文名:ControlRegister2用于停止位、同步時(shí)鐘、LIN控制及節(jié)點(diǎn)地址的設(shè)置等,均由軟件置位或復(fù)位

第8章STM32串口USART及應(yīng)用偏移:0x10高16位不用,保留復(fù)位值:0x00000000LINEN-LIN模式使能:0:禁止LIN模式1:使能LIN模式STIP[1:0]-停止位設(shè)置:00:1個(gè)停止位01:0.5個(gè)停止位10:2個(gè)停止位11:1.5個(gè)停止位CLKEN-時(shí)鐘使能:0:禁止SCLK引腳1:使能SCLK引腳CPOL-時(shí)鐘(SCLK)極性:0:空閑時(shí)為低1:空閑時(shí)為高CPHA-時(shí)鐘(SCLK)相位:0:在時(shí)鐘第一邊沿捕獲數(shù)據(jù)1:在時(shí)鐘第二邊沿捕獲數(shù)據(jù)LBCL-最后一個(gè)位的時(shí)鐘:0:最后一個(gè)數(shù)據(jù)位時(shí),SCLK不輸出1:最后一個(gè)數(shù)據(jù)位時(shí),SCLK輸出8.3USART功能描述USART寄存器控制寄存器2(CR2)英文名:ControlRegister2用于停止位、同步時(shí)鐘、LIN控制及節(jié)點(diǎn)地址的設(shè)置等,均由軟件置位或復(fù)位

第8章STM32串口USART及應(yīng)用LBDIE-LIN斷路中斷使能:0:禁止中斷1:允許中斷LBDL-LIN斷路檢測(cè)長(zhǎng)度:0:10位1:11位ADD[3:0]-USART節(jié)點(diǎn)地址。用于通過地址標(biāo)記從靜音模式下喚醒(多處理器通信時(shí))8.3USART功能描述USART寄存器控制寄存器3(CR3)英文名:ControlRegister3用于硬件流、DMA、智能卡、IrDA、錯(cuò)誤中斷控制等的設(shè)置,均由軟件置位或復(fù)位

第8章STM32串口USART及應(yīng)用偏移:0x14高16位不用,保留復(fù)位值:0x00000000ONEBIT-采樣方式選擇:0:3個(gè)采樣位(3中取2)1:1個(gè)采樣位(禁用噪聲)CTSIE-CTS中斷使能:0:禁止CTS中斷1:允許CTS中斷CTSE-CTS使能:0:禁止CTS1:使能CTSRTSE-RTS使能:0:禁止RTS1:使能RTSDMAT-DMA發(fā)送使能:0:禁止DMA模式1:使能DMA模式,用于發(fā)送DMAR-DMA接收使能:0:禁止DMA模式1:使能DMA模式,用于接收8.3USART功能描述USART寄存器控制寄存器3(CR3)英文名:ControlRegister3其中第0位的“錯(cuò)誤”包括:幀檢測(cè)錯(cuò)誤(EF)、噪聲檢測(cè)標(biāo)志(NF)和DMA接收時(shí)上溢(ORE)使用中斷時(shí),需查詢SR以確定中斷源

第8章STM32串口USART及應(yīng)用SCEN-智能卡模式使能:0:禁止智能卡模式1:使能智能卡模式NACK-智能卡應(yīng)答信號(hào):0:禁止發(fā)送NACK信號(hào)1:允許奇偶校驗(yàn)錯(cuò)誤時(shí)發(fā)送NACK信號(hào)HDSEL-半雙工選擇:0:不用半雙工模式1:選擇半雙工模式IRLP-IrDA低功耗選擇:0:正常模式1:低功耗模式IREN-IrDA使能:0:禁止IrDA模式1:使能IrDA模式EIE-錯(cuò)誤中斷使能:0:禁止錯(cuò)誤中斷1:使能錯(cuò)誤中斷8.3USART功能描述USART寄存器CR2、CR3與SR的關(guān)系SR中另3個(gè)事件標(biāo)志,也可以作為中斷源,在CR2、CR3中使能所有的中斷使能默認(rèn)都是:禁止

第8章STM32串口USART及應(yīng)用SR中:標(biāo)志CR1中:使能CR2CR3練習(xí)思考題1、USART相關(guān)的寄存器有哪些?對(duì)于全雙工3線異步應(yīng)用來說,需要用到哪些寄存器?2、一個(gè)USART只占用1個(gè)中斷通道,卻有多達(dá)10個(gè)來源。那么應(yīng)如何控制允許哪些中斷發(fā)生,以及如何確定是哪個(gè)中斷發(fā)生了?3、不同的USART可以使用不同的波特率嗎?為什么?同一個(gè)USART的接收器和發(fā)送器可以使用不同的波特率嗎?為什么?

第8章STM32串口USART及應(yīng)用8.3USART功能描述USART寄存器保護(hù)時(shí)間和預(yù)分頻寄存器(GTPR)英文名:GaudTimeandPrescalerRegister用于智能卡和IrDA模式下的特別設(shè)置

第8章STM32串口USART及應(yīng)用偏移:0x18高16位不用,保留復(fù)位值:0x00000000GT[7:0]-保護(hù)時(shí)間設(shè)置值。僅用于智能卡模式。該值以波特率時(shí)鐘為單位,經(jīng)過此保護(hù)時(shí)間后,發(fā)送完成標(biāo)志置1PSC[7:0]-預(yù)分頻器設(shè)置值。用于IrDA和智能卡模式下對(duì)系統(tǒng)時(shí)鐘預(yù)分頻。①IrDA模式:--正常模式下,必須設(shè)置為0x1--低功耗模式下,為預(yù)分頻系數(shù)(0—0xFF)②智能卡模式:--為預(yù)分頻系數(shù),但僅低5位有效(0—0x1F)8.3USART功能描述USART寄存器總結(jié)共7個(gè)寄存器,對(duì)于常規(guī)應(yīng)用,只用前面5個(gè)就夠了3線全雙工、異步、1起始+8數(shù)據(jù)+無校驗(yàn)+1停止

第8章STM32串口USART及應(yīng)用寄存器功能說明狀態(tài)寄存器(USART_SR)反應(yīng)USART的狀態(tài)數(shù)據(jù)寄存器(USART_DR)保存接收或發(fā)送的數(shù)據(jù)波特率寄存器(USART_BRR)用于設(shè)置USART波特率控制寄存器1(USART_CR1)對(duì)USART進(jìn)行控制控制寄存器2(USART_CR2)隊(duì)USART進(jìn)行控制控制寄存器3(USART_CR3)對(duì)USART進(jìn)行控制保護(hù)時(shí)間和預(yù)分頻寄存器(USART_GTPR)設(shè)置保護(hù)時(shí)間和預(yù)分頻系數(shù)(僅用于智能卡和IrDA模式)8.4USART應(yīng)用實(shí)例USART編程方法1)查詢法先將串口配置好(初始化),再用程序循環(huán)查詢有關(guān)狀態(tài)(標(biāo)志位),看有沒有數(shù)據(jù)要接收或發(fā)送:查詢發(fā)送數(shù)據(jù)為空標(biāo)志(TXE),若TXE=1,表示可以發(fā)送下一個(gè)數(shù)據(jù):寫數(shù)據(jù)寄存器(DR)查詢接受數(shù)據(jù)非空標(biāo)志(RXNE),若RXNE=1,表示收到了一個(gè)數(shù)據(jù),可以取走:讀數(shù)據(jù)寄存器(DR)注意:查詢法應(yīng)禁止中斷2)中斷法先將串口配置好(初始化),再配置中斷控制器,在中斷服務(wù)函數(shù)中完成數(shù)據(jù)發(fā)送或接收:通常我們?cè)试S2個(gè)中斷:接收數(shù)據(jù)非空、發(fā)送數(shù)據(jù)為空中斷服務(wù)函數(shù)中,先要判別是哪一個(gè)中斷,再分頭處理:取走數(shù)據(jù)或發(fā)送新數(shù)據(jù)

第8章STM32串口USART及應(yīng)用8.4USART應(yīng)用實(shí)例USART查詢法編程1)初始化

第8章STM32串口USART及應(yīng)用結(jié)束3、接收器/發(fā)送器使能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論