單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶(hù)帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿(mǎn)足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開(kāi)發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。
W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、3個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN以及1個(gè)USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性?xún)r(jià)比優(yōu)勢(shì)顯著,尤其適合網(wǎng)關(guān)模組等對(duì)空間布局要求較高的場(chǎng)景。緊湊的尺寸和精簡(jiǎn)化外設(shè)配置,使其能夠在有限空間內(nèi)實(shí)現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計(jì)算節(jié)點(diǎn)等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴(kuò)展的復(fù)雜工控場(chǎng)景,軟件使用方法一致。更多信息和資料請(qǐng)進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。
此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。
為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。
若您想獲取芯片和開(kāi)發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問(wèn)官方網(wǎng)頁(yè):http://www.w5500.com/,我們期待與您共同探索W55MH32的無(wú)限可能。
第七章 串口通信
本章我們將學(xué)習(xí) W55MH32 的串口,教大家如何使用W55MH32的串口來(lái)發(fā)送和接收數(shù)據(jù)。
本章分為如下幾個(gè)小節(jié):
1 串口簡(jiǎn)介
2 串口通信協(xié)議
3 W55MH32 的串口簡(jiǎn)介
4 DMA簡(jiǎn)介
5 程序設(shè)計(jì)
1 串口簡(jiǎn)介
學(xué)習(xí)串口前,我們先來(lái)了解一下數(shù)據(jù)通信的一些基礎(chǔ)概念。
1.1 數(shù)據(jù)通信的基礎(chǔ)概念
在單片機(jī)的應(yīng)用中,數(shù)據(jù)通信是必不可少的一部分,比如:?jiǎn)纹瑱C(jī)和上位機(jī)、單片機(jī)和外圍器件之間,它們都有數(shù)據(jù)通信的需求。由于設(shè)備之間的電氣特性、傳輸速率、可靠性要求各不相同,于是就有了各種通信類(lèi)型、通信協(xié)議,我們最常用的有:USART、IIC、SPI、CAN、USB 等。下面,我們先來(lái)學(xué)習(xí)數(shù)據(jù)通信的一些基礎(chǔ)概念。
1. 數(shù)據(jù)通信方式
按數(shù)據(jù)通信方式分類(lèi),可分為串行通信和并行通信兩種。串行和并行的對(duì)比如下圖所示:
串行通信的基本特征是數(shù)據(jù)逐位順序依次傳輸,優(yōu)點(diǎn)是傳輸線少、布線成本低、靈活度高等優(yōu)點(diǎn),一般用于近距離人機(jī)交互,特殊處理后也可以用于遠(yuǎn)距離,缺點(diǎn)就是傳輸速率低。
而并行通信是數(shù)據(jù)各位可以通過(guò)多條線同時(shí)傳輸,優(yōu)點(diǎn)是傳輸速率高,缺點(diǎn)就是線多成本就高了,抗干擾能力差因而適用于短距離、高速率的通信。
2. 數(shù)據(jù)傳輸方向
根據(jù)數(shù)據(jù)傳輸方向,通信又可分為全雙工、半雙工和單工通信。全雙工、半雙工和單工通信的比較如下圖所示:
數(shù)據(jù)傳輸方式:
單工是指數(shù)據(jù)傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反方向傳輸。
半雙工是指數(shù)據(jù)傳輸可以沿著兩個(gè)方向,但是需要分時(shí)進(jìn)行。
全雙工是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。
這里注意全雙工和半雙工通信的區(qū)別:半雙工通信是共用一條線路實(shí)現(xiàn)雙向通信,而全雙工是利用兩條線路,一條用于發(fā)送數(shù)據(jù),另一條用于接收數(shù)據(jù)。
3. 數(shù)據(jù)同步方式
根據(jù)數(shù)據(jù)同步方式,通信又可分為同步通信和異步通信。同步通信和異步通信比較如下圖所示:
同步通信要求通信雙方共用同一時(shí)鐘信號(hào),在總線上保持統(tǒng)一的時(shí)序和周期完成信息傳輸。
優(yōu)點(diǎn):可以實(shí)現(xiàn)高速率、大容量的數(shù)據(jù)傳輸,以及點(diǎn)對(duì)多點(diǎn)傳輸。缺點(diǎn):要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格同步,收發(fā)雙方時(shí)鐘允許的誤差較小,同時(shí)硬件復(fù)雜。
異步通信不需要時(shí)鐘信號(hào),而是在數(shù)據(jù)信號(hào)中加入開(kāi)始位和停止位等一些同步信號(hào),以便使接收端能夠正確地將每一個(gè)字符接收下來(lái),某些通信中還需要雙方約定傳輸速率。優(yōu)點(diǎn):沒(méi)有時(shí)鐘信號(hào)硬件簡(jiǎn)單,雙方時(shí)鐘可允許一定誤差。缺點(diǎn):通信速率較低,只適用點(diǎn)對(duì)點(diǎn)傳輸。
4. 通信速率
在數(shù)字通信系統(tǒng)中,通信速率(傳輸速率)指數(shù)據(jù)在信道中傳輸?shù)乃俣龋譃閮煞N:傳信率和傳碼率。
傳信率:每秒鐘傳輸?shù)男畔⒘浚疵棵腌妭鬏數(shù)亩M(jìn)制位數(shù),單位為 bit/s(即比特每秒),因而又稱(chēng)為比特率。
傳碼率:每秒鐘傳輸?shù)拇a元個(gè)數(shù),單位為 Baud(即波特每秒),因而又稱(chēng)為波特率。
比特率和波特率這兩個(gè)概念又常常被人們混淆。比特率很好理解,我們來(lái)看看波特率,波特率被傳輸?shù)氖谴a元,碼元是信號(hào)被調(diào)制后的概念,每個(gè)碼元都可以表示一定bit 的數(shù)據(jù)信息量。舉個(gè)例子,在 TTL 電平標(biāo)準(zhǔn)的通信中,用 0V 表示邏輯 0,5V 表示邏輯 1,這時(shí)候這個(gè)碼元就可以表示兩種狀態(tài)。如果電平信號(hào) 0V、2V、4V 和 6V 分別表示二進(jìn)制數(shù) 00、01、10、11,這時(shí)候每一個(gè)碼元就可以表示四種狀態(tài)。由上述可以看出,碼元攜帶一定的比特信息,所以比特率和波特率也是有一定的關(guān)系的。
比特率和波特率的關(guān)系可以用以下式子表示:比特率 = 波特率 * log2M其中 M 表示碼元承載的信息量。我們也可以理解 M 為碼元的進(jìn)制數(shù)。
舉個(gè)例子:波特率為 100 Baud,即每秒傳輸 100 個(gè)碼元,如果碼元采用十六進(jìn)制編碼(即 M=2,代入上述式子),那么這時(shí)候的比特率就是 400 bit/s。如果碼元采用二進(jìn)制編碼(即 M=2,代入上述式子),那么這時(shí)候的比特率就是 100 bit/s
可以看出采用二進(jìn)制的時(shí)候,波特率和比特率數(shù)值上相等。但是這里要注意,它們的相等只是數(shù)值相等,其意義上不同,看波特率和波特率單位就知道。由于我們的所用的數(shù)字系統(tǒng)都是二進(jìn)制的,所以有部分人久而久之就直接把波特率和比特率混淆了。
2 串口通信協(xié)議
2 .1 串口通信協(xié)議簡(jiǎn)介
串口通信是一種設(shè)備間常用的串行通信方式,串口按位(bit)發(fā)送和接收字節(jié)。盡管比特字節(jié)(byte)的串行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。串口通信協(xié)議是指規(guī)定了數(shù)據(jù)包的內(nèi)容,內(nèi)容包含了起始位、主體數(shù)據(jù)、校驗(yàn)位及停止位,雙方需要約定一致的數(shù)據(jù)包格式才能正常收發(fā)數(shù)據(jù)的有關(guān)規(guī)范。在串口通信中,常用的協(xié)議包括 UART、RS-232、RS-422 和 RS-485 等。
隨著科技的發(fā)展,RS-232 在工業(yè)上還有廣泛的使用,但是在商業(yè)技術(shù)上,已經(jīng)逐漸的使用 USB 轉(zhuǎn)串口取代了RS-232 串口。我們只需要在電路中添加一個(gè) USB 轉(zhuǎn)串口芯片,就可以實(shí)現(xiàn) USB 通信協(xié)議和標(biāo)準(zhǔn) UART 串行通信協(xié)議的轉(zhuǎn)換,而我們開(kāi)發(fā)板上的 USB 轉(zhuǎn)串口芯片是CH340C 這個(gè)芯片。
下面我們來(lái)學(xué)習(xí)串口通信協(xié)議,這里主要學(xué)習(xí)串口通信的協(xié)議層。
UART串口通信的數(shù)據(jù)包由發(fā)送設(shè)備的 TXD 接口傳輸?shù)浇邮赵O(shè)備的 RXD 接口。在串口通信的協(xié)議層中,規(guī)定了數(shù)據(jù)包的內(nèi)容,它由起始位、主體數(shù)據(jù)、校驗(yàn)位以及停止位組成,通訊雙方的數(shù)據(jù)包格式要約定一致才能正常收發(fā)數(shù)據(jù)。串口通信協(xié)議數(shù)據(jù)幀格式如下圖所示:
串口通信協(xié)議數(shù)據(jù)包組成可以分為波特率和數(shù)據(jù)幀格式兩部分。
1. 波特率
本章主要講解的是串口異步通信,異步通信是不需要時(shí)鐘信號(hào)的,但是這里需要我們約定好兩個(gè)設(shè)備的波特率。波特率表示每秒鐘傳送的碼元符號(hào)的個(gè)數(shù),所以它決定了數(shù)據(jù)幀里面每一個(gè)位的時(shí)間長(zhǎng)度。兩個(gè)要通信的設(shè)備的波特率一定要設(shè)置相同,我們常見(jiàn)的波特率是 4800、9600、115200 等。
2. 數(shù)據(jù)幀格式
數(shù)據(jù)幀格式需要我們提前約定好,串口通信的數(shù)據(jù)幀包括起始位、停止位、有效數(shù)據(jù)位以及校驗(yàn)位。
起始位和停止位
串口通信的一個(gè)數(shù)據(jù)幀是從起始位開(kāi)始,直到停止位。數(shù)據(jù)幀中的起始位是由一個(gè)邏輯 0 的數(shù)據(jù)位表示,而數(shù)據(jù)幀的停止位可以是 0.5、1、1.5 或 2 個(gè)邏輯 1 的數(shù)據(jù)位表示,只要雙方約定一致即可。
有效數(shù)據(jù)位
數(shù)據(jù)幀的起始位之后,就接著是數(shù)據(jù)位,也稱(chēng)有效數(shù)據(jù)位,這就是我們真正需要的數(shù)據(jù),有效數(shù)據(jù)位通常會(huì)被約定為 5、6、7 或者 8 個(gè)位長(zhǎng)。有效數(shù)據(jù)位是低位(LSB)在前,高位(MSB)在后。
校驗(yàn)位
校驗(yàn)位可以認(rèn)為是一個(gè)特殊的數(shù)據(jù)位。校驗(yàn)位一般用來(lái)判斷接收的數(shù)據(jù)位有無(wú)錯(cuò)誤,檢驗(yàn)方法有:奇檢驗(yàn)、偶檢驗(yàn)、0 檢驗(yàn)、1 檢驗(yàn)以及無(wú)檢驗(yàn)。下面分別介紹一下:
奇校驗(yàn)是指有效數(shù)據(jù)位和校驗(yàn)位中“1”的個(gè)數(shù)為奇數(shù),比如一個(gè) 8 位長(zhǎng)的有效數(shù)據(jù)為:10101001,總共有 4 個(gè)“1”,為達(dá)到奇校驗(yàn)效果,校驗(yàn)位設(shè)置為“1”,最后傳輸?shù)臄?shù)據(jù)是 8 位的有效數(shù)據(jù)加上 1 位的校驗(yàn)位總共 9 位。
偶校驗(yàn)與奇校驗(yàn)要求剛好相反,要求幀數(shù)據(jù)和校驗(yàn)位中“1”的個(gè)數(shù)為偶數(shù),比如數(shù)據(jù)幀:11001010,此時(shí)數(shù)據(jù)幀“1”的個(gè)數(shù)為 4 個(gè),所以偶校驗(yàn)位為“0”。
0 校驗(yàn)是指不管有效數(shù)據(jù)中的內(nèi)容是什么,校驗(yàn)位總為“0”,1 校驗(yàn)是校驗(yàn)位總為“1”。
無(wú)校驗(yàn)是指數(shù)據(jù)幀中不包含校驗(yàn)位。我們一般是使用無(wú)檢驗(yàn)的情況。
3 W55MH32 的串口簡(jiǎn)介
3.1 USART 介紹
通用同步異步收發(fā)器(USART)提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn) NRZ 異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART 利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。
它支持同步單向通信和半雙工單線通信,也支持 LIN(局部互連網(wǎng)),智能卡協(xié)議和 IrDA(紅外數(shù)據(jù)組織)SIRENDEC 規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的 DMA 方式,可以實(shí)現(xiàn)高速數(shù)據(jù)通信。
3.2 USART 主要特性
?全雙工,支持同步和異步通信
?NRZ 標(biāo)準(zhǔn)格式
?分?jǐn)?shù)波特率發(fā)生器系統(tǒng)
······發(fā)送和接收共用的可編程波特率,最高達(dá) 4.5Mbits/s
?可編程數(shù)據(jù)字長(zhǎng)度(8 位或 9 位)
?可配置的停止位-支持 1 或 2 個(gè)停止位
?LIN 主發(fā)送同步斷開(kāi)符的能力以及 LIN 從檢測(cè)斷開(kāi)符的能力
······當(dāng) USART 硬件配置成 LIN 時(shí),生成 13 位斷開(kāi)符;檢測(cè) 10/11 位斷開(kāi)符
?發(fā)送方為同步傳輸提供時(shí)鐘
?IRDASIR 編碼器解碼器
······在正常模式下支持 3/16 位的持續(xù)時(shí)間
?智能卡模擬功能
······智能卡接口支持 ISO7816-3 標(biāo)準(zhǔn)里定義的異步智能卡協(xié)議
······智能卡用到的 0.5 和 1.5 個(gè)停止位
?單線半雙工通信
?可配置的使用 DMA 的多緩沖器通信
······在 SRAM 里利用集中式 DMA 緩沖接收/發(fā)送字節(jié)
?單獨(dú)的發(fā)送器和接收器使能位
?檢測(cè)標(biāo)志
······接收緩沖器滿(mǎn)
······發(fā)送緩沖器空
······傳輸結(jié)束標(biāo)志
?校驗(yàn)控制
······發(fā)送校驗(yàn)位
······對(duì)接收數(shù)據(jù)進(jìn)行校驗(yàn)
?四個(gè)錯(cuò)誤檢測(cè)標(biāo)志
······溢出錯(cuò)誤
······噪音錯(cuò)誤
······幀錯(cuò)誤
?校驗(yàn)錯(cuò)誤
?10 個(gè)帶標(biāo)志的中斷源
······CTS 改變
······LIN 斷開(kāi)符檢測(cè)
······發(fā)送數(shù)據(jù)寄存器空
······發(fā)送完成
······接收數(shù)據(jù)寄存器滿(mǎn)
······檢測(cè)到總線為空閑
······溢出錯(cuò)誤
······幀錯(cuò)誤
······噪音錯(cuò)誤
······校驗(yàn)錯(cuò)誤
?多處理器通信
······如果地址不匹配,則進(jìn)入靜默模式
?從靜默模式中喚醒(通過(guò)空閑總線檢測(cè)或地址標(biāo)志檢測(cè))
?兩種喚醒接收器的方式:地址位(MSB,第 9 位),總線空閑
3.3 USART 功能概述
接口通過(guò)三個(gè)引腳與其他設(shè)備連接在一起。任何 USART 雙向通信至少需要兩個(gè)腳:接收數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX)。
RX:接收數(shù)據(jù)串行輸。通過(guò)過(guò)采樣技術(shù)來(lái)區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。
TX:發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時(shí),輸出引腳恢復(fù)到它的 I/O 端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時(shí),TX 引腳處于高電平。在單線和智能卡模式里,此 I/O 口被同時(shí)用于數(shù)據(jù)的發(fā)送和接收。
?總線在發(fā)送或接收前應(yīng)處于空閑狀態(tài)
?一個(gè)起始位
?一個(gè)數(shù)據(jù)字(8 或 9 位),最低有效位在前
?0.5,1.5,2 個(gè)的停止位,由此表明數(shù)據(jù)幀的結(jié)束
?使用分?jǐn)?shù)波特率發(fā)生器——12 位整數(shù)和 4 位小數(shù)的表示方法。
?一個(gè)狀態(tài)寄存器(USART_SR)
?數(shù)據(jù)寄存器(USART_DR)
?一個(gè)波特率寄存器(USART_BRR),12 位的整數(shù)和 4 位小數(shù)
?一個(gè)智能卡模式下的保護(hù)時(shí)間寄存器(USART_GTPR)
?在同步模式中需要下列引腳:
?CK:發(fā)送器時(shí)鐘輸出。此引腳輸出用于同步傳輸?shù)臅r(shí)鐘,(在 Start 位和 Stop 位上沒(méi)有時(shí)鐘脈沖,軟件可選地,可以在最后一個(gè)數(shù)據(jù)位送出一個(gè)時(shí)鐘脈沖)。數(shù)據(jù)可以在 RX 上同步被接收。這可以用來(lái)控制帶有移位寄存器的外部設(shè)備(例如 LCD 驅(qū)動(dòng)器)。時(shí)鐘相位和極性都是軟件可編程的。在智能卡模式里,CK 可以為智能卡提供時(shí)鐘。在 IrDA 模式里需要下列引腳:
?IrDA_RDI:IrDA 模式下的數(shù)據(jù)輸入。
?IrDA_TDO:IrDA 模式下的數(shù)據(jù)輸出。下列引腳在硬件流控模式中需要:
······CTS:清除發(fā)送,若是高電平,在當(dāng)前數(shù)據(jù)傳輸結(jié)束時(shí)阻斷下一次的數(shù)據(jù)發(fā)送。
······nRTS:發(fā)送請(qǐng)求,若是低電平,表明 USART 準(zhǔn)備好接收數(shù)據(jù)。
USART 框圖如下:
4 DMA簡(jiǎn)介
直接存儲(chǔ)器存取(DMA)用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無(wú)須 CPU 干預(yù),數(shù)據(jù)可以通過(guò) DMA 快速地移動(dòng),這就節(jié)省了 CPU 的資源來(lái)做其他操作。兩個(gè) DMA 控制器有 12 個(gè)通道(DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道),每個(gè)通道專(zhuān)門(mén)用來(lái)管理來(lái)自于一個(gè)或多個(gè)外設(shè)對(duì)存儲(chǔ)器訪問(wèn)的請(qǐng)求。還有一個(gè)仲裁器來(lái)協(xié)調(diào)各個(gè) DMA 請(qǐng)求的優(yōu)先權(quán)。
4.1 DMA 主要特性
DMA的主要特性如下:
?12 個(gè)獨(dú)立的可配置的通道(請(qǐng)求):DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道。
?每個(gè)通道都直接連接專(zhuān)用的硬件 DMA 請(qǐng)求,每個(gè)通道都同樣支持軟件觸發(fā)。這些功能通過(guò)軟件來(lái)配置。
?在同一個(gè) DMA 模塊上,多個(gè)請(qǐng)求間的優(yōu)先權(quán)可以通過(guò)軟件編程設(shè)置(共有四級(jí):很高、高、中等和低),優(yōu)先權(quán)設(shè)置相等時(shí)由硬件決定(請(qǐng)求 0 優(yōu)先于請(qǐng)求 1,依此類(lèi)推)。
?獨(dú)立數(shù)據(jù)源和目標(biāo)數(shù)據(jù)區(qū)的傳輸寬度(字節(jié)、半字、全字),模擬打包和拆包的過(guò)程。源目標(biāo)地址必須按數(shù)據(jù)傳輸寬度對(duì)齊。
?支持循環(huán)的緩沖器管理。
?每個(gè)通道都有 3 個(gè)事件標(biāo)志(DMA 半傳輸、DMA 傳輸完成和 DMA 傳輸出錯(cuò)),這 3 個(gè)事件標(biāo)志邏輯或成為一個(gè)單獨(dú)的中斷請(qǐng)求。
?存儲(chǔ)器和存儲(chǔ)器間的傳輸。
?外設(shè)和存儲(chǔ)器、存儲(chǔ)器和外設(shè)之間的傳輸。
?閃存、SRAM、外設(shè)的 SRAM、APB1、APB2 和 AHB 外設(shè)均可作為訪問(wèn)的源和目標(biāo)。
?可編程的數(shù)據(jù)傳輸數(shù)目:最大為 65535。
4.2 DMA功能框圖解析
DMA的功能框圖如下:
① DMA 請(qǐng)求
如果外設(shè)想要通過(guò) DMA 來(lái)傳輸數(shù)據(jù),必須先給 DMA 控制器發(fā)送 DMA 請(qǐng)求,DMA 收到請(qǐng)求信號(hào)之后,控制器會(huì)給外設(shè)一個(gè)應(yīng)答信號(hào),當(dāng)外設(shè)應(yīng)答后且 DMA 控制器收到應(yīng)答信號(hào)之后,就會(huì)啟動(dòng) DMA 的傳輸,直到傳輸完畢。
② 通道
DMA 具有 12 個(gè)獨(dú)立可編程的通道,其中 DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道,每個(gè)通道對(duì)應(yīng)不同的外設(shè)的 DMA 請(qǐng)求。雖然每個(gè)通道可以接收多個(gè)外設(shè)的請(qǐng)求,但是同一時(shí)間只能接收一個(gè),不能同時(shí)接收多個(gè)。
③ 仲裁器
當(dāng)發(fā)生多個(gè) DMA 通道請(qǐng)求時(shí),就意味著有先后響應(yīng)處理的順序問(wèn)題,這個(gè)就由仲裁器管理。仲裁器管理 DMA 通道請(qǐng)求分為兩個(gè)階段。第一階段屬于軟件階段,可以在 DMA_CCRx寄存器中設(shè)置,有 4 個(gè)等級(jí):非常高,高,中和低四個(gè)優(yōu)先級(jí)。第二階段屬于硬件階段,如果兩個(gè)或以上的 DMA 通道請(qǐng)求設(shè)置的優(yōu)先級(jí)一樣,則他們優(yōu)先級(jí)取決于通道編號(hào),編號(hào)越低優(yōu)先權(quán)越高,比如通道 0 高于通道 1。在大容量產(chǎn)品和互聯(lián)型產(chǎn)品中,DMA1 控制器擁有高于DMA2 控制器的優(yōu)先級(jí)。
5 程序設(shè)計(jì)
5.1 USART_Asyn
程序啟動(dòng)后,會(huì)通過(guò)串口打印系統(tǒng)時(shí)鐘頻率信息和 "USART Asyn DMA Test."。
當(dāng)有 8 個(gè)字節(jié)的數(shù)據(jù)通過(guò)串口發(fā)送到開(kāi)發(fā)板的 USART1 時(shí),程序會(huì)自動(dòng)接收這些數(shù)據(jù),接收完成后打印 "USART Asyn DMA Recv Complete" 以及接收到的 8 個(gè)字節(jié)數(shù)據(jù)。
接著,程序會(huì)將接收到的數(shù)據(jù)通過(guò) USART1 發(fā)送出去,發(fā)送完成后打印 "USART Asyn DMA Send Complete"。
程序會(huì)不斷循環(huán)進(jìn)行上述接收和發(fā)送操作,只要有新的 8 個(gè)字節(jié)數(shù)據(jù)發(fā)送到 USART1,就會(huì)重復(fù)執(zhí)行接收和發(fā)送流程。
5.1.1 下載驗(yàn)證
5.2 USART_Irda
串口輸出調(diào)試信息:程序啟動(dòng)后,通過(guò) USART1 輸出系統(tǒng)時(shí)鐘頻率信息、紅外測(cè)試信息、USART2 的發(fā)送和接收引腳信息。
數(shù)據(jù)發(fā)送:程序會(huì)將填充好的 256 字節(jié)數(shù)據(jù)(從 0x5A 開(kāi)始遞增)通過(guò) USART2 紅發(fā)送出去。
發(fā)送完成提示:數(shù)據(jù)發(fā)送完成后,通過(guò) USART1 輸出 "USART Irda Data Send Complete" 信息。之后程序進(jìn)入無(wú)限循環(huán),不再有其他操作。
5.2.1 下載驗(yàn)證
5.3 USART_LIN
此例程主要實(shí)現(xiàn)了基于 LIN(Local Interconnect Network)總線協(xié)議的通信測(cè)試,使用 USART2 作為 LIN 總線通信接口,USART1 用于輸出調(diào)試信息。LIN 總線是一種低成本的串行通信協(xié)議,常用于汽車(chē)電子等領(lǐng)域的分布式控制。
例程的核心功能是當(dāng)檢測(cè)到 LIN 總線的中斷幀(Break)時(shí),發(fā)送一個(gè)中斷幀和一個(gè)字節(jié)的數(shù)據(jù) 0xA5。
串口輸出調(diào)試信息:程序啟動(dòng)后,通過(guò) USART1 輸出系統(tǒng)時(shí)鐘頻率信息、LIN 測(cè)試信息和 USART2 的發(fā)送、接收引腳信息。
等待 LIN 中斷幀:程序進(jìn)入主循環(huán),等待 USART2 接收到 LIN 中斷幀。
檢測(cè)到中斷幀后的響應(yīng):當(dāng) USART2 接收到 LIN 中斷幀時(shí),觸發(fā)USART2_IRQHandler 中斷處理函數(shù),將 TestFlag 置為 1。主循環(huán)檢測(cè)到 TestFlag 為 1 后,發(fā)送一個(gè) LIN 中斷幀和一個(gè)字節(jié)的數(shù)據(jù) 0xA5。
持續(xù)監(jiān)測(cè):程序繼續(xù)在主循環(huán)中運(yùn)行,持續(xù)監(jiān)測(cè) LIN 中斷幀的到來(lái),重復(fù)上述響應(yīng)過(guò)程。
如果連接到 USART2 的 LIN 總線有其他設(shè)備發(fā)送 LIN 中斷幀,此例程會(huì)不斷響應(yīng)并發(fā)送數(shù)據(jù) 0xA5。如果沒(méi)有其他設(shè)備發(fā)送中斷幀,程序會(huì)一直等待,不會(huì)有進(jìn)一步的動(dòng)作。
5.3.1 下載驗(yàn)證
5.4 USART_Rs485
這個(gè)例程主要實(shí)現(xiàn)了基于 RS-485 通信協(xié)議的串口數(shù)據(jù)收發(fā)測(cè)試,同時(shí)使用 USART1 作為調(diào)試串口輸出信息。RS-485 是一種常用的工業(yè)串行通信標(biāo)準(zhǔn),具有抗干擾能力強(qiáng)、傳輸距離遠(yuǎn)等特點(diǎn)。
例程的核心功能包括:
初始化 USART1 用于調(diào)試信息輸出和命令接收。
初始化 RS-485 通信接口,設(shè)置波特率為 9600。
通過(guò) USART1 接收用戶(hù)輸入的命令,當(dāng)接收到字符 's' 時(shí),向 RS-485 總線發(fā)送 5 個(gè)字節(jié)的數(shù)據(jù)(從 0x5A 開(kāi)始遞增)。
持續(xù)監(jiān)聽(tīng) RS-485 總線,若接收到數(shù)據(jù)則將其打印到 USART1 上。
5.4.1 下載驗(yàn)證
5.5 USART_SmartCard
此例程主要實(shí)現(xiàn)了基于串口通信的智能卡(Smart Card)測(cè)試功能,采用 T=0 協(xié)議與智能卡進(jìn)行通信。程序會(huì)實(shí)時(shí)監(jiān)測(cè)智能卡的插入和拔出狀態(tài),當(dāng)檢測(cè)到智能卡插入時(shí),會(huì)對(duì)智能卡進(jìn)行冷復(fù)位操作,獲取其 ATR(Answer To Reset)信息,接著發(fā)送選擇主文件(Select MF)的命令,根據(jù)響應(yīng)情況可能會(huì)進(jìn)一步發(fā)送獲取數(shù)據(jù)的命令,最終完成智能卡的測(cè)試流程。當(dāng)檢測(cè)到智能卡拔出時(shí),會(huì)停止對(duì)智能卡的供電和時(shí)鐘信號(hào)。
程序啟動(dòng)信息:程序啟動(dòng)后,通過(guò) USART1 輸出系統(tǒng)時(shí)鐘頻率信息和 "USART Smart Card(T=0) Test." 提示信息。
智能卡插入:當(dāng)插入智能卡時(shí),程序檢測(cè)到引腳狀態(tài)變化,打印 "Card inserted" 信息,然后進(jìn)行冷復(fù)位操作,打印 ATR 信息(若有效),接著發(fā)送選擇主文件的命令并打印發(fā)送和響應(yīng)數(shù)據(jù),根據(jù)響應(yīng)情況可能會(huì)進(jìn)一步發(fā)送獲取數(shù)據(jù)的命令并打印相關(guān)信息。若整個(gè)測(cè)試流程成功,會(huì)輸出 "Smartcard test OK!" 信息,最后關(guān)閉智能卡的供電和時(shí)鐘信號(hào)。
智能卡拔出:當(dāng)拔出智能卡時(shí),程序檢測(cè)到引腳狀態(tài)變化,打印 "Card out" 信息,并關(guān)閉智能卡的供電和時(shí)鐘信號(hào)。
5.5.1 下載驗(yàn)證
審核編輯 黃宇
-
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44934瀏覽量
647581 -
數(shù)據(jù)通信
+關(guān)注
關(guān)注
2文章
468瀏覽量
34320 -
串口通信
+關(guān)注
關(guān)注
34文章
1636瀏覽量
56596
發(fā)布評(píng)論請(qǐng)先 登錄
通信原理教程全集,新手專(zhuān)欄
《我和 LabVIEW》示例程序(2010.04.02)光盤(pán)第一至第七章
第七章MMU例子代碼交叉編譯后下載到mini2440后,LED燈一直亮著并沒(méi)有閃
CDMA蜂窩移動(dòng)通信(第一、二章)
電力系統(tǒng)繼電保護(hù)第七章-微機(jī)保護(hù)概述(課件)下載.ppt

第七章 開(kāi)關(guān)電源PCB排版解析

STM32第八章-TIM輸入捕獲

評(píng)論