




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、*23 串行外設(shè)接口 (SPI)小容量產(chǎn)品 是指閃存存儲器容量在16K 至 32K 字節(jié)之間的 STM32F101xx 、 STM32F102xx 和STM32F103xx 微控制器。中容量產(chǎn)品 是指閃存存儲器容量在64K 至 128K 字節(jié)之間的 STM32F101xx 、 STM32F102xx和 STM32F103xx 微控制器。大容量產(chǎn)品 是指閃存存儲器容量在 256K 至 512K 字節(jié)之間的 STM32F101xx 和 STM32F103xx 微 控制器?;ヂ?lián)型產(chǎn)品 是指 STM32F105xx 和 STM32F107xx 微控制器。 除非特別說明,本章描述的模塊適用于整個 STM
2、32F10xxx 微控制器系列。23.1 SPI 簡介在大容量產(chǎn)品和互聯(lián)型產(chǎn)品上, SPI 接口可以配置為支持 SPI 協(xié)議或者支持I2S 音頻協(xié)議。SPI接 口默認(rèn)工作在 SPI 方式,可以通過軟件把功能從 SPI 模式切換到I2S 模式。在小容量和中容量產(chǎn)品上,不支持I2S 音頻協(xié)議。串行外設(shè)接口 (SPI) 允許芯片與外部設(shè)備以半/全雙工、同步、串行方式通信。此接口可以被配置成主模式,并為外部從設(shè)備提供通信時鐘 (SCK) 。接口還能以多主配置方式工作。它可用于多種用途,包括使用一條雙向數(shù)據(jù)線的雙線單工同步傳輸,還可使用 CRC 校驗(yàn)的可靠 通信。I 2S 也是一種3 引腳的同步串行接口
3、通訊協(xié)議。它支持四種音頻標(biāo)準(zhǔn),包括飛利浦I2S 標(biāo)準(zhǔn),MSB 和 LSB 對齊標(biāo)準(zhǔn),以及PCM 標(biāo)準(zhǔn)。它在半雙工通訊中,可以工作在主和從2 種模式下。當(dāng)它作為 主設(shè)備時,通過接口向外部的從設(shè)備提供時鐘信號。警告: 由 于 SPI3/I2S3 的 部 分 引 腳 與 JTAG 引 腳 共 享 (SPI3_NSS/I2S3_WS 與 JTDI ,SPI3_SCK/I2S3_CK 與 JTDO) ,因此這些引腳不受 IO 控制器控制,他們(在每次復(fù)位后) 被默認(rèn)保留為 JTAG 用途。如果用戶想把引腳配置給SPI3/I2S3 ,必須 (在調(diào)試時 )關(guān)閉 JTAG 并切換至 SWD 接口,或者 (在標(biāo)
4、準(zhǔn)應(yīng)用時)同時關(guān)閉JTAG 和 SWD 接口。詳見第 8.3.5 節(jié): JTAG/SWD 復(fù)用功能重映射。23.2 SPI 和 I2S 主要特征23.2.1 SPI 特征 3 線全雙工同步傳輸 帶或不帶第三根雙向數(shù)據(jù)線的雙線單工同步傳輸 8 或 16 位傳輸幀格式選擇 主或從操作 支持多主模式 8 個主模式波特率預(yù)分頻系數(shù)(最大為fPCLK/2) 從模式頻率(最大為fPCLK/2) 主模式和從模式的快速通信 主模式和從模式下均可以由軟件或硬件進(jìn)行NSS 管理:主/從操作模式的動態(tài)改變 可編程的時鐘極性和相位 可編程的數(shù)據(jù)順序, MSB 在前或 LSB 在前 可觸發(fā)中斷的專用發(fā)送和接收標(biāo)志 SP
5、I 總線忙狀態(tài)標(biāo)志 支持可靠通信的硬件CRC在發(fā)送模式下,CRC值可以被作為最后一個字節(jié)發(fā)送在全雙工模式中對接收到的最后一個字節(jié)自動進(jìn)行CRC 校驗(yàn) 可觸發(fā)中斷的主模式故障、過載以及CRC 錯誤標(biāo)志 支持 DMA 功能的 1 字節(jié)發(fā)送和接收緩沖器:產(chǎn)生發(fā)送和接受請求23.2.2 I2S 功能 單工通信(僅發(fā)送或接收) 主或者從操作 8 位線性可編程預(yù)分頻器,獲得精確的音頻采樣頻率(8KHz 到 96kHz) 數(shù)據(jù)格式可以是16 位, 24 位或者 32 位 音頻信道固定數(shù)據(jù)包幀為 16 位(16 位數(shù)據(jù)幀)或 32 位(16、 24 或 32 位數(shù)據(jù)幀 ) 可編程的時鐘極性(穩(wěn)定態(tài) ) 從發(fā)送
6、模式下的下溢標(biāo)志位和主/從接收模式下的溢出標(biāo)志位 16 位數(shù)據(jù)寄存器用來發(fā)送和接收,在通道兩端各有一個寄存器 支持的I 2S 協(xié)議:I2S飛利浦標(biāo)準(zhǔn)MSB對齊標(biāo)準(zhǔn)(左對齊)LSB對齊標(biāo)準(zhǔn)(右對齊)PCM標(biāo)準(zhǔn)(16位通道幀上帶長或短幀同步或者16位數(shù)據(jù)幀擴(kuò)展為 32位通道幀) 數(shù)據(jù)方向總是MSB 在先 發(fā)送和接收都具有DMA 能力 主時鐘可以輸出到外部音頻設(shè)備,比率固定為 256xFs(Fs 為音頻采樣頻率) 在互聯(lián)型產(chǎn)品中,兩個I2S 模塊(I2S2 和 I2S3) 有一個專用的 PLL(PLL3) ,產(chǎn)生更加精準(zhǔn)得時鐘23.323.3.1SPI功能描述概述spi的方框圖見下圖。圖209 SP
7、I框圖地址和數(shù)據(jù)總線MOSIOMISO。SCK>讀出接收緩沖區(qū)JIJ移位寄存群W TVLS6FIRSTII控制位發(fā)送緩沖K波特率發(fā)生器主控制電路SPLCR2nxr 卜 tIEBSYPXDM AEWr<r IEr/r-'iAEN'.rn ,:-F ERA*通信電路BA2:0BIDI CRC CRC0EENNertRX ONLYLSB f-lhSPI CR13114744通常SPI通過4個引腳與外部器件相連: MISO :主設(shè)備輸入/從設(shè)備輸出弓I腳。該引腳在從模式下發(fā)送數(shù)據(jù),在主模式下接收數(shù)據(jù)。 MOSI :主設(shè)備輸出/從設(shè)備輸入引腳。該引腳在主模式下發(fā)送數(shù)據(jù),在從模
8、式下接收數(shù)據(jù)。 SCK:串口時鐘,作為主設(shè)備的輸出,從設(shè)備的輸入 NSS :從設(shè)備選擇。這是一個可選的引腳,用來選擇主/從設(shè)備。它的功能是用來作為“片選引腳”,讓主設(shè)備可以單獨(dú)地與特定從設(shè)備通訊,避免數(shù)據(jù)線上的沖突。從設(shè)備的NSS引腳可以由主設(shè)備的一個標(biāo)準(zhǔn)I/O引腳來驅(qū)動。一旦被使能 (SSOE位),NSS引腳也可以作為輸出引腳,并在 SPI處于主模式時拉低;此時,所有的 SPI設(shè)備,如果它們的 NSS引腳連 接 到主設(shè)備的NSS弓I腳,則會檢測到低電平,如果它們被設(shè)置為NSS硬件模式,就會自動進(jìn)入從設(shè)備狀態(tài)。當(dāng)配置為主設(shè)備、NSS配置為輸入引腳(MSTR=1 , SSOE=0)時,如果NSS
9、被拉低,則這個 SPI設(shè)備進(jìn)入主模式失敗狀態(tài):即MSTR位被自動清除,此設(shè)備進(jìn)入從模式(參見)下圖是一個單主和單從設(shè)備互連的例子。圖210單主和單從應(yīng)用u 1147451 .這里NSS引腳設(shè)置為輸入MOSI腳相互連接,MISO腳相互連接。這樣,數(shù)據(jù)在主和從之間串行地傳輸(MSB位在前)。通信總是由主設(shè)備發(fā)起。主設(shè)備通過MOSI腳把數(shù)據(jù)發(fā)送給從設(shè)備,從設(shè)備通過MISO引腳回傳 數(shù)據(jù)。這意味全雙工通信的數(shù)據(jù)輸出和數(shù)據(jù)輸入是用同一個時鐘信號同步的;時鐘信號由主 設(shè)備通過SCK腳提供。從選擇(NSS)腳管理)有2種NSS模式:t _ J L/ ) I軟彳NSS模式:可以通過設(shè)置 SPI_CR1寄存器的
10、SSM位來使能這種模式(見圖211)。在 這種模式下NSS引腳可以用作它用,而內(nèi)部 NSS信號電平可以通過寫 SPI_CR1的SSI 位來驅(qū)動.硬件 NSS 模式,分兩種情況:|NSS輸出被使能:當(dāng) STM32F10xxx 工作為主 SPI ,并且NSS輸出已經(jīng)通過 SPI_CR2 3 |寄存 器的SSOE位使能,這時NSS引腳被拉低,所有 NSS引腳與這個主SPI田NSS 引腳相連并 配置為硬件NSS的SPI設(shè)備,將自動變成從 SPI設(shè)備。 當(dāng)一個SPI設(shè)備需 要發(fā)送廣播數(shù)據(jù),它必須拉低NSS信號,以通知所有其它的設(shè)備它是主設(shè)備;如果它不能拉低NSS ,這意味著總線上有另外一個主設(shè)備在通信,
11、這時將產(chǎn)生一個硬件失敗錯誤圖211硬件/軟件的從選擇管理NSSd碗犍濱閉:允許操作于多主環(huán)境。1112016-08-09 09:13:27SSI位NSS外都引腳SSM也在理解下啊時鐘信號的相位和極性SPI_CR寄存器的CPOL和CPHA位,能夠組合成四種可能的時序關(guān)系。CPOL(時鐘極性)位控制沒有數(shù)據(jù)傳輸時時鐘的空閑狀態(tài)電平,此位對主模式和從模式下的設(shè)備都有效。如果CPOL被清'0'SCK引腳在空閑狀態(tài)保持低電平;如果 CPOL被置'1'SCK引腳在空閑狀態(tài)保 持高電平。如果CPHA(時鐘相位)位被置1' SCK時鐘的第二個邊沿(CPOL位為0時就是下
12、降沿,CPOL 位為對就是上升沿)進(jìn)行數(shù)據(jù)位的采樣,數(shù)據(jù)在第二個時鐘邊沿被鎖存。如果CPHA位被清0' SCK時鐘的第一邊沿(CPOL位為0寸就是下降沿,CPOL位為用就是上升沿)進(jìn)行 *數(shù)據(jù)位采 樣,數(shù)據(jù)在第一個時鐘邊沿被鎖存。CPOL時鐘極性和CPHA時鐘相位的組合選擇數(shù)據(jù)捕捉的時鐘邊沿。圖212顯示了 SPI傳輸?shù)?種CPHA和CPOL位組合。此圖可以解釋為主設(shè)備和從設(shè)備的SCK腳、MISO腳、MOSI腳直接連接的主或從時序圖。注意:1.在改變CPOL/CPHA位之前,必須清除SPE位將SPI禁止。2 .主和從必須配置成相同的時序模式。3 . SCK的空閑狀態(tài)必須和SPI_CR1
13、寄存器指定的極性一致CPOL為時,空閑日t應(yīng)上拉SCK為 高電平;CPOL為時,空而日t應(yīng)下拉SCK為低電平)。4 .數(shù)據(jù)幀格式(8位或16位)由SPI_CR1寄存器的DFF位選擇,并且決定發(fā)送接收的數(shù)據(jù)長度。數(shù)據(jù)幀格式 根據(jù)SPI_CR1寄存器中的LSBFIRST位,輸出數(shù)據(jù)位時可以 MSB在先也可以LSB在先。 根據(jù)SPI_CR1寄存器的DFF位,每個數(shù)據(jù)幀可以是 8位或是16位。所選擇的數(shù)據(jù) 幀格式對發(fā)送和 /或接收都有效。23.3.2 配置 SPI 為從模式在從模式下, SCK 引腳用于接收從主設(shè)備來的串行時鐘。 SPI_CR1 寄存器中 BR2:0 的設(shè)置不影 響數(shù)據(jù)傳輸速率。注:
14、建議在主設(shè)備發(fā)送時鐘之前使能SPI 從設(shè)備,否則可能會發(fā)生意外的數(shù)據(jù)傳輸。在通信時鐘的第 一個邊沿到來之前或正在進(jìn)行的通信結(jié)束之前,從設(shè)備的數(shù)據(jù)寄存器必須就緒。在使能從設(shè)備 和主設(shè)備之前,通信時鐘的極性必須處于穩(wěn)定的數(shù)值。請按照以下步驟配置SPI 為從模式:配置步驟1. 設(shè)置 DFF 位以定義數(shù)據(jù)幀格式為 8 位或 16 位。2. 選擇 CPOL 和 CPHA 位來定義數(shù)據(jù)傳輸和串行時鐘之間的相位關(guān)系(見圖 212) 。為保證正確的數(shù)據(jù)傳輸,從設(shè)備和主設(shè)備的 CPOL 和 CPHA 位必須配置成相同的方式。3. 幀格式(SPI_CR1寄存器中的LSBFIRST位定義的" MSB前”還
15、是“ LS既前”必須與主設(shè) 備 相同。4. 硬件模式下(參考從選擇(NSS) 腳管理部分),在完整的數(shù)據(jù)幀(8 位或 16 位)傳輸過程中,NSS 引腳必須為低電平。在 NSS 軟件模式下,設(shè)置 SPI_CR1 寄存器中的 SSM 位并清除 SSI 位。5. 清除 MSTR 位、設(shè)置 SPE 位 (SPI_CR1 寄存器),使相應(yīng)引腳工作于SPI 模式下。 在這個配置中, MOSI 引腳是數(shù)據(jù)輸入, MISO 引腳是數(shù)據(jù)輸出。數(shù)據(jù)發(fā)送過程在寫操作中,數(shù)據(jù)字被并行地寫入發(fā)送緩沖器。當(dāng)從設(shè)備收到時鐘信號,并且在MOSI 引腳上出現(xiàn)第一個數(shù)據(jù)位時,發(fā)送過程開始 (譯注:此時 第一個位被發(fā)送出去)。余
16、下的位(對于8 位數(shù)據(jù)幀格式,還有7 位;對于 16 位數(shù)據(jù)幀格式,還有 15 位 )被裝進(jìn)移位寄存器。當(dāng)發(fā)送緩沖器中的數(shù)據(jù)傳輸?shù)揭莆患拇嫫鲿r, SPI_SP 寄存器的 TXE 標(biāo)志被設(shè)置,如果設(shè)置了 SPI_CR2 寄存器的 TXEIE 位,將會產(chǎn)生中斷。數(shù)據(jù)接收過程對于接收器,當(dāng)數(shù)據(jù)接收完成時: 移位寄存器中的數(shù)據(jù)傳送到接收緩沖器, SPI_SR 寄存器中的 RXNE 標(biāo)志被設(shè)置。 如果設(shè)置了 SPI_CR2 寄存器中的 RXNEIE 位,則產(chǎn)生中斷。在最后一個采樣時鐘邊沿后, RXNE 位被置 1,移位寄存器中接收到的數(shù)據(jù)字節(jié)被傳送到接收緩沖器。當(dāng)讀SPI_DR 寄存器時, SPI 設(shè)備
17、返回這個接收緩沖器的數(shù)值。讀 SPI_DR 寄存器時, RXNE 位被清除。23.3.3 配置 SPI 為主模式在主配置時,在SCK 腳產(chǎn)生串行時鐘。配置步驟1. 通過SPI_CR1寄存器的BR2:0 位定義串行時鐘波特率。2. 選擇CPOL 和CPHA 位,定義數(shù)據(jù)傳輸和串行時鐘間的相位關(guān)系 (見圖212) 。3. 設(shè)置DFF 位來定義 8 位或16 位數(shù)據(jù)幀格式。4. 配置SPI_CR1寄存器的LSBFIRST位定義幀格式。5. 如果需要 NSS 引腳工作在輸入模式,硬件模式下,在整個數(shù)據(jù)幀傳輸期間應(yīng)把NSS 腳連接 到高電平;在軟件模式下,需設(shè)置SPI_CR1 寄存器的 SSM 位和 S
18、SI 位。如果 NSS引腳工作 在輸出模式,則只需設(shè)置SSOE 位。6. 必須設(shè)置 MSTR 位和 SPE 位(只當(dāng)NSS 腳被連到高電平,這些位才能保持置位)。 在這個配置中, MOSI 引腳是數(shù)據(jù)輸出,而 MISO 引腳是數(shù)據(jù)輸入。數(shù)據(jù)發(fā)送過程當(dāng)寫入數(shù)據(jù)至發(fā)送緩沖器時,發(fā)送過程開始。 在發(fā)送第一個數(shù)據(jù)位時,數(shù)據(jù)字被并行地(通過內(nèi)部總線 )傳入移位寄存器,而后串行地移出到MOSI 腳上; MSB 在先還是 LSB 在先,取決于 SPI_CR1 寄存器中的 LSBFIRST 位的設(shè)置。數(shù) 據(jù)從 發(fā)送緩沖器傳輸?shù)揭莆患拇嫫鲿rTXE 標(biāo)志將被置位,如果設(shè)置了 SPI_CR1 寄存器中的TXEIE
19、位 ,將產(chǎn)生中斷。數(shù)據(jù)接收過程對于接收器來說,當(dāng)數(shù)據(jù)傳輸完成時: 傳送移位寄存器里的數(shù)據(jù)到接收緩沖器,并且 RXNE 標(biāo)志被置位。 如果設(shè)置了 SPI_CR2 寄存器中的 RXNEIE 位,則產(chǎn)生中斷。 在最后采樣時鐘沿, RXNE 位 被設(shè)置,在移位寄存器中接收到的數(shù)據(jù)字被傳送到接收緩沖器。讀 SPI_DR 寄存器時, SPI 設(shè)備返回接收緩沖器中的數(shù)據(jù)。讀 SPI_DR 寄存器將清除RXNE 位。 一旦傳輸開始,如果下一個將發(fā)送的數(shù)據(jù)被放進(jìn)了發(fā)送緩沖器,就可以維持一個連續(xù)的傳輸流。在試圖寫發(fā)送緩沖器之前,需確認(rèn) TXE 標(biāo)志應(yīng)該為 1。 注: 在 NSS 硬件模式下,從設(shè)備的 NSS 輸入
20、由 NSS 引腳控制或另一個由軟件驅(qū)動的 GPIO 引腳控制。23.3.4 配置 SPI 為單工通信SPI 模塊能夠以兩種配置工作于單工方式: 1 條時鐘線和1 條雙向數(shù)據(jù)線; 1 條時鐘線和1 條數(shù)據(jù)線(只接收或只發(fā)送) ;1 條時鐘線和 1 條雙向數(shù)據(jù)線(BIDIMODE=1) 設(shè)置 SPI_CR1 寄存器中的 BIDIMODE 位而啟用此模式。在這個模式下, SCK 引腳作為時鐘,主設(shè)備使用 MOSI 引腳而從設(shè)備使用 MISO引腳作為數(shù)據(jù)通信。傳輸?shù)姆较蛴?SPI_CR1 寄存器里的BIDIOE 控制,當(dāng)這個位是 的時候,數(shù)據(jù)線是輸出,否則是輸入。1 1 條時鐘和 1 條單向數(shù)據(jù)線(B
21、IDIMODE=0)在這個模式下, SPI 模塊可以或者作為只發(fā)送,或者作為只接收。 只發(fā)送模式類似于全雙工模式(BIDIMODE=0 , RXONLY=0) :數(shù)據(jù)在發(fā)送引腳(主模式時是MOSI 、從模式時是MISO) 上傳輸,而接收引腳 (主模式時是MISO 、從模式時是MOSI) 可以 作為通用的 I/O 使用。此時,軟件不必理會接收緩沖器中的數(shù)據(jù)(如果讀出數(shù)據(jù)寄存器,它不 包含任何接收數(shù)據(jù))。 在只接收模式,可以通過設(shè)置 SPI_CR2 寄存器的 RXONLY 位而關(guān)閉 SPI 的輸出功能;此時, 發(fā)送引腳(主模式時是MOSI 、從模式時是MISO) 被釋放,可以作為其它功能使用。配置
22、并使能SPI 模塊為只接收模式的方式是: 在主模式時,一旦使能SPI ,通信立即啟動,當(dāng)清除SPE 位時立即停止當(dāng)前的接收。在此模式下,不必讀取 BSY 標(biāo)志,在 SPI 通信期間這個標(biāo)志始終為 。1 在從模式時,只要 NSS 被拉低(或在NSS 軟件模式時, SSI 位為 0同時)SCK 有時鐘脈沖,SPI 就一直在接收。23.3.5 數(shù)據(jù)發(fā)送與接收過程接收與發(fā)送緩沖器在接收時,接收到的數(shù)據(jù)被存放在一個內(nèi)部的接收緩沖器中;在發(fā)送時,在被發(fā)送之前,數(shù)據(jù) 將首先被存放在一個內(nèi)部的發(fā)送緩沖器中。對 SPI_DR 寄存器的讀操作,將返回接收緩沖器的內(nèi)容;寫入 SPI_DR 寄存器的數(shù)據(jù)將被寫入 發(fā)
23、送 緩沖器中。主模式下開始傳輸 全雙工模式(BIDIMODE=0 并且 RXONLY=0)當(dāng)寫入數(shù)據(jù)到SPI_DR寄存器(發(fā)送緩沖器)后,傳輸開始;一在傳送第一位數(shù)據(jù)的同時,數(shù)據(jù)被并行地從發(fā)送緩沖器傳送到8位的移位寄存器中,然后按順序被串行地移位送到 MOSI 引腳上;與此同時,在 MISO引腳上接收到的數(shù)據(jù),按順序被串行地移位進(jìn)入8位的移位寄存器 中,然后被并行地傳送到 SPI_DR 寄存器(接收緩沖器) 中。 單向的只接收模式 (BIDIMODE=0 并且 RXONLY=1)SPE=1時,傳輸開始;只有接收器被激活,在MISO引腳上接收到的數(shù)據(jù),按順序被串行地移位進(jìn)入8位的移 位寄存器中,
24、然后被并行地傳送到 SPI_DR 寄存器(接收緩沖器)中。 雙向模式,發(fā)送時(BIDIMODE=1 并且 BIDIOE=1)當(dāng)寫入數(shù)據(jù)到SPI_DR寄存器(發(fā)送緩沖器)后,傳輸開始;一在傳送第一位數(shù)據(jù)的同時,數(shù)據(jù)被并行地從發(fā)送緩沖器傳送到8位的移位寄存器中,然后按順序被串行地移位送到 MOSI 引腳上; 一不接收數(shù)據(jù)。 雙向模式,接收時(BIDIMODE=1 并且 BIDIOE=0)SPE=1并且BIDIOE=0時,傳輸開始;在MOSI引腳上接收到的數(shù)據(jù),按順序被串行地移位進(jìn)入8位的移位寄存器中,然后被 并行地傳送到 SPI_DR 寄存器(接收緩沖器)中。不激活發(fā)送器,沒有數(shù)據(jù)被串行地送到MO
25、SI引腳上。從模式下開始傳輸 全雙工模式(BIDIMODE=0 并且 RXONLY=0)當(dāng)從設(shè)備接收到時鐘信號并且第一個數(shù)據(jù)位出現(xiàn)在它的MOSI時,數(shù)據(jù)傳輸開始,隨 后的數(shù)據(jù)位依次移動進(jìn)入移位寄存器;與此同時,在傳輸?shù)谝粋€數(shù)據(jù)位時,發(fā)送緩沖器中的數(shù)據(jù)被并行地傳送到8位的移位 寄存器,隨后被串行地發(fā)送到 MISO 引腳上。軟件必須保證在SPI 主設(shè)備開始數(shù)據(jù)傳 輸之前在發(fā)送寄存器中寫入要發(fā)送的數(shù)據(jù)。 單向的只接收模式 (BIDIMODE=0 并且 RXONLY=1)當(dāng)從設(shè)備接收到時鐘信號并且第一個數(shù)據(jù)位出現(xiàn)在它的MOSI時,數(shù)據(jù)傳輸開始,隨 后數(shù)據(jù)位依次移動進(jìn)入移位寄存器;不啟動發(fā)送器,沒有數(shù)據(jù)
26、被串行地傳送到MISO引腳上。 雙向模式,發(fā)送時(BIDIMODE=1 并且 BIDIOE=1)當(dāng)從設(shè)備接收到時鐘信號并且發(fā)送緩沖器中的第一個數(shù)據(jù)位被傳送到MISO引腳上的 時候,數(shù)據(jù)傳輸開始; 一在第一個數(shù)據(jù)位被傳送到MISO引腳上的同時,發(fā)送緩沖器中要發(fā)送的數(shù)據(jù)被平行地傳送到 8 位的移位寄存器中,隨后被串行地發(fā)送到 MISO 引腳上。軟件必須保證在SPI 主設(shè)備開始數(shù)據(jù)傳輸之前在發(fā)送寄存器中寫入要發(fā)送的數(shù)據(jù);一不接收數(shù)據(jù)。 雙向模式,接收時(BIDIMODE=1 并且 BIDIOE=0)當(dāng)從設(shè)備接收到時鐘信號并且第一個數(shù)據(jù)位出現(xiàn)在它的MOSI時,數(shù)據(jù)傳輸開始;從MISO引腳上接收到的數(shù)據(jù)
27、被串行地傳送到8位的移位寄存器中,然后被平行地傳送 到 SPI_DR 寄存器(接收緩沖器);不啟動發(fā)送器,沒有數(shù)據(jù)被串行地傳送到MISO引腳上。*處理數(shù)據(jù)的發(fā)送與接收當(dāng)數(shù)據(jù)從發(fā)送緩沖器傳送到移位寄存器時,設(shè)置TXE標(biāo)志(發(fā)送緩沖器空),它表示內(nèi)部的發(fā)送緩沖器可以接收下一個數(shù)據(jù);如果在 SPI_CR2寄存器中設(shè)置了 TXEIE位,則此時會產(chǎn)生一 個中 斷;寫入SPI_DR寄存器即可清除 TXE位。注:在寫入發(fā)送緩沖器之前,軟件必須確認(rèn)TXE標(biāo)志為1,否則新的數(shù)據(jù)會覆蓋已經(jīng)在發(fā)送緩沖器 中的數(shù)據(jù)。Txe為0時發(fā)送新數(shù)據(jù)在采樣時鐘的最后一個邊沿,當(dāng)數(shù)據(jù)被從移位寄存器傳送到接收緩沖器時,設(shè)置RXNE標(biāo)
28、志(接收緩沖器非空);它表示數(shù)據(jù)已經(jīng)就緒,可以從 SPI_DR寄存器讀出;如果在 SPI_CR2寄 存器中設(shè)置了 RXNEIE位,則此時會產(chǎn)生一個中斷;讀出 SPI_DR寄存器即可清除 RXNIE標(biāo) 志位。在一些配置中,傳輸最后一個數(shù)據(jù)時,可以使用BSY標(biāo)志等待數(shù)據(jù)傳輸?shù)慕Y(jié)束。主或從模式下(BIDIMODE=0并且RXONLY=0)全雙工發(fā)送和接收過程模式 軟件必須遵循下述過程, 發(fā)送和接收數(shù)據(jù)(見圖213和圖214):1 .設(shè)置SPE位為1'使能SPI模塊;2 .在SPI_DR寄存器中寫入第一個要發(fā)送的數(shù)據(jù),這個操作會清除TXE標(biāo)志;3 .等待TXE=1 ,然后寫入第二個要發(fā)送的數(shù)據(jù)
29、。等待 RXNE=1 ,然后讀出SPI_DR寄存器 并 獲得第一個接收到的數(shù)據(jù),讀 SPI_DR的同時清除了 RXNE位。重復(fù)這些操作,發(fā) 送后續(xù) 的數(shù)據(jù)同時接收n-1個數(shù)據(jù);4 .等待RXNE=1 ,然后接收最后一個數(shù)據(jù);5 .等待TXE=1 ,在BSY=0之后關(guān)閉SPI模塊。 也可以在響應(yīng) RXNE或TXE標(biāo)志的上升沿 產(chǎn)生的中斷的處理程序中實(shí)現(xiàn)這個過程。圖213 主模式、全雙工模式下 (BIDIMODE=0 并且RXONLY=0)連續(xù)傳輸時, TXE/RXNE/BSY 的變化示意圖卜檜式的例 f CF,C1L=I. CPHA=1SCKuuumiumjUuuinnmuuumjuuiniT
30、t ?慨:=。由1針削Z = 士 a飆9=。不工 tl Ib2|b3:ti4St t>7J山吐什也置I XL體志林志th til; fl ft IEr?靠13的r4lSO'MOSlnRXNEtcJ;發(fā)送彼卻! ASFLDR)炫 ff H ih 我怦扁除FVNE=1 羯4從片PLClR件等楮RKNE=1 筠臉從SPI_陰 Ut 附 OxA3軟件雷恃 FiXNE=lDR遍出3A2裁 fl TXX1奉SPI 口國山林竹過支Y曲崎忤港除_由片件世月由XJL氧件請好軾件節(jié)朽 txt-iAftMFS設(shè)件 寫ADxFl * SPLCR圖214 從模式、全雙工模式下 (BIDIMODE=0 并且
31、RXONLY=0)連續(xù)傳輸時,TXE/RXNE/BSY 的變化示意圖從柜式附例r CP0L=1 CPHW-14一innmumniummum皿nmmnmirfiv. r h Chh ,ttIKg .0«F;MISO/50卻加)TXE t+XJBSY杯清瞪n由WB設(shè)AK fl 昨由我冷*算1 d nfr廿運(yùn)膻沖HP; A KPI DR:j illttft ia'帆M運(yùn)RHNEh之ni1,W注:仃設(shè)1門j -CitFMisowsiwihi八DCE標(biāo)君Hi 臥NBSY MJ就MX甫料 TXE=1不 I: BSY 0 I r:i|h4 h-窗妗也沖at:T 人 SPI PR J軟件譚.
32、flWhrJr JJ Itl 依件清跺TXE-1*k; 入 ¥S(*L0Rtt林節(jié)得 txe-i照 SPLM只發(fā)送過程(BIDIMODE=0 并且RXONLY=0)在此模式下,傳輸過程可以簡要說明如下,使用 BSY位等待傳車的結(jié)束(見圖215和圖216):1 .設(shè)置SPE位為1'使能SPI模塊;2 .在SPI_DR寄存器中寫入第一個要發(fā)送的數(shù)據(jù),這個操作會清除TXE標(biāo)志;3 .等待TXE=1 ,然后寫入第二個要發(fā)送的數(shù)據(jù)。重復(fù)這個操作,發(fā)送后續(xù)的數(shù)據(jù);4 .寫入最后一個數(shù)據(jù)到 SPI_DR寄存器之后,等待 TXE=1 ;然后等待BSY=0 ,這表示最后 個數(shù)據(jù)的傳輸已經(jīng)完成。
33、也可以在響應(yīng)TXE標(biāo)志的上升沿產(chǎn)生的中斷的處理程序中實(shí)現(xiàn)這個過程。1 .對于不連續(xù)的傳輸,在寫入SPI_DR寄存器的操作與設(shè)置BSY位之間有2個APB時鐘周期的延遲, 因此在只發(fā)送模式下,寫入最后一個數(shù)據(jù)后,最好先等待TXE=1,然后再等待BSY=0。2 .只發(fā)送模式下,在傳輸2個數(shù)據(jù)之后,由于不會讀出接收到的數(shù)據(jù),SPI_SR寄存器中的OVR位 會變?yōu)?,獷(譯注:軟件不必理會這個OVR標(biāo)志位)圖215 主設(shè)備只發(fā)送模式(BIDIMODE=0 并且RXONLY=0)下連續(xù)傳輸時, TXE/BSY變化示意圖1 fiJAtfr 11T CPOL-1. CPHA=1一imumjuumnmimmnjm
34、mumm軟件 9A0xF1 V SPI OHrtl*73*5圖216 從設(shè)備只發(fā)送模式(BIDIMODE=0 并且RXONLY=0)下連續(xù)傳輸時,TXE/BSY變化示 意圖SCKmjmnjmniuuumruuumjmjmjuuEk IK 5 - r-r-?MISOMOSI雷 巾四國/醫(yī).陶蜀 國因國ES胴 雷 霞區(qū) 因崗園因AiLir也止;擊,件滿跺.工送墟沖片,匕 SP1 DR)oeR?ESY HI ilifU'l- f軟界等帶 TXE-1 新乂寫入6日 蜃詢DR一花舞梢TXE-1地扁寫A 3滬3T8PI DR地件:;勺下北二i批件與竹B5Y-O胞岐忡謫碎nil 7-1«雙
35、向發(fā)送過程(BIDIMODE=1并且BIDIOE=1)SPI模塊之前,需要在 SPI_CR2在此模式下,操作過程類似于只發(fā)送模式,不同的是:在使能寄存器中同時設(shè)置BIDIMODE和BIDIOE位為,1'單向只接收模式(BIDIMODE=0并且 RXONLY=1)在此模式下,傳輸過程可以簡要說明如下(見):1 .在SPI_CR2寄存器中,設(shè)置 RXONLY=1 ;2 .設(shè)置SPE=1 ,使能SPI模塊:a)主模式下,立刻產(chǎn)生 SCK時鐘信號,在關(guān)閉 SPI(SPE=0)之前,不斷地接收串行數(shù)據(jù);b)從模式下,當(dāng)SPI主設(shè)備拉低NSS信號并產(chǎn)生SCK時鐘時,接收串行數(shù)據(jù)。3 .等待RXNE
36、=1 ,然后讀出SPI_DR寄存器以獲得收到的數(shù)據(jù)(同時會清除RXNE位)。重復(fù) 這個操作接收所有數(shù)據(jù)。也可以在響應(yīng) RXNE標(biāo)志的上升沿產(chǎn)生的中斷的處理程序中實(shí)現(xiàn)這個過程。注:如果在最后一個數(shù)據(jù)傳輸結(jié)束后關(guān)閉SPI模塊,請按照第23.3.8節(jié)的建議操作。圖217 只接收模式(BIDIMODE=0并且RXONLY=1)下連續(xù)傳輸時,RXNE變化示意圖但干配置CPOL-1 CPHA-1 RXONLY-1刈u(yù)mnnnnfuumnfinnnnfuummuij _ 段._ / _ _1tA2 一1 _ _ 尊虢中.0.3_ _ 1MISC/MOSHttA) bobi 同工山匚卜同 11Tt.卜 1r,
37、y1卜;底hrjb邛i |二7;啟 卜可卜日卜了RXNE標(biāo)志一推收想和器|: it uspi m八由小府清除0 HAiA特 RXNEM 烝6整3FI 口科點(diǎn)出OxAl單向接收過程(BIDIMODE=1 并且BIDIOE=0)在此模式下,操作過程類似于只接U模式,不同的是:在使能 SPI模塊之前,需要在 SPI_CR2寄存器中設(shè)置BIDIMODE為弁清除BIDIOE位為0'連續(xù)和非連續(xù)傳輸當(dāng)在主模式下發(fā)送數(shù)據(jù)時,如果軟件足夠快,能夠在檢測到每次TXE的上升沿(或TXE中斷),并立即在正在進(jìn)行的傳輸結(jié)束之前寫入SPI_DR寄存器,則能夠?qū)崿F(xiàn)連續(xù)的通信;此時,在每個數(shù)據(jù)項(xiàng)的傳輸之間的 SPI
38、時鐘保持連續(xù),同時 BSY位不會被清除。如果軟件不夠快,則會導(dǎo)致不連續(xù)的通信;這時,在每個數(shù)據(jù)傳輸之間會被清除 模式的只接收模式下(RXONLY=1),通信總是連續(xù)的,而且BSY標(biāo)志始終為在從模式下,通彳t的連續(xù)性由SPI主設(shè)備決定。不管怎樣,即使通信是連續(xù)的,個數(shù)據(jù)項(xiàng)之間至少有一個SPI時鐘周期為低(見圖216)。(見下圖)。在主 rBSY標(biāo)志會在每23.3.6ummuimuumjumnnj-inniurnnTUI Iwdh -4£SS¥ 去依件苜怙日:iY C軟伸號At厄i ,但林刑跖。A . jlF j ¥ Sf _>fiTXE-1軾昨年付TJCEE
39、. 但止 力映A )*f3 9Pl DR發(fā)送盤沖器人SH DR)軟件耳丸¥SPI DFt乎受1.嚴(yán)門t£ Ili3ll>:|b5 IliC lb;CRC計(jì)算圖218 非連續(xù)傳輸發(fā)送(BIDIMODE=0 并且RXONLY=0)時,TXE/BSY變化示意圖CRC校驗(yàn)用于保證全雙工通信的可靠性。數(shù)據(jù)發(fā)送和數(shù)據(jù)接收分別使用單獨(dú)的CRC計(jì)算器。通過對每一個接收位進(jìn)行可編程的多項(xiàng)式運(yùn)算來計(jì)算CRC。CRC的計(jì)算是在由SPI_CR1寄存器中CPHA和CPOL位定義的采樣時鐘邊沿進(jìn)行的。該SPI接口提供了兩種CRC計(jì)算方法,取決于所選的發(fā)送和或接收的數(shù)據(jù)幀格式:8位數(shù)據(jù)幀 采用CR
40、8 ; 16位數(shù)據(jù)幀采用CRC16。CRC計(jì)算是通過設(shè)置 SPI_CR1寄存器中的 CRCEN位啟用的。設(shè)置 CRCEN位時同時復(fù)位CRC 寄存器(SPI_RXCRCR 和 SPI_TXCRCR)。當(dāng)設(shè)置了 SPI_CR1 的 CRCNEXT 位, SPI_TXCRCR 的內(nèi)容癡容當(dāng)前字節(jié)發(fā)送之后發(fā)出。在傳輸SPI_TXCRCR 的內(nèi)容時,如果在移位寄存器中收到的數(shù)值與SPI_RXCRCR 的內(nèi)容不匹配,則SPI_SR寄存器的CRCERR標(biāo)志位被置1。如果在TX緩沖器中還有數(shù)據(jù),CRC的數(shù)值僅在數(shù)據(jù)字節(jié)傳輸結(jié)束后傳送。在傳輸 CRC期間,CRC計(jì)算器關(guān)閉,寄存器的數(shù)值保持不變。請參考產(chǎn)品說明書
41、,以確認(rèn)有此功能(不是所有型號都有此功能)。SPI通信可以通過以下步驟使用 CRC : 設(shè)置 CPOL、CPHA、LSBFirst、BR、SSM、SSI 和 MSTR 的值; 在SPI_CRCPR 寄存器輸入多項(xiàng)式; 通過設(shè)置SPI_CR1寄存器CRCEN位使能CRC計(jì)算,該操作也會清除寄存器 SPI_RXCRCR 和 SPI_TXCRC ; 設(shè)置SPI_CR1寄存器的SPE位啟動SPI功能; 啟動通信并且維持通信,直到只剩最后一個字節(jié)或者半字; 在把最后一個字節(jié)或半字寫進(jìn)發(fā)送緩沖器時,設(shè)置 SPI_CR1的CRCNext位,指示硬件在發(fā) 送完成最后一個數(shù)據(jù)之后,發(fā)送CRC的數(shù)值。在發(fā)送 CR
42、C數(shù)值期間,停止 CRC計(jì)算; 當(dāng)最后一個字節(jié)或半字被發(fā)送后,SPI發(fā)送CRC數(shù)值,CRCNext位被清除。同樣,接收到的CRC與SPI_RXCRCR 值進(jìn)行比較,如果比較不相配,則設(shè)置 SPI_SR 上的CRCERR 標(biāo) 志位,當(dāng)設(shè)置了 SPI_CR2寄存器的ERRIE時,則產(chǎn)生中斷。*注意: 當(dāng) SPI 模塊處于從設(shè)備模式時,請注意在時鐘穩(wěn)定之后再使能 CRC 計(jì)算,否則可能會得到錯誤的 CRC 計(jì)算結(jié)果。事實(shí)上,只要設(shè)置了 CRCEN 位,只要在SCK 引腳上有輸入時鐘,不管SPE位的 狀態(tài),都會進(jìn)行CRC 的計(jì)算。當(dāng) SPI 時鐘頻率較高時,用戶在發(fā)送CRC 時必須小心。在CRC 傳輸
43、期間,使用 CPU 的時間應(yīng)盡 可能少;為了避免在接收最后的數(shù)據(jù)和 CRC 時出錯,在發(fā)送CRC 過程中應(yīng)禁止函數(shù)調(diào)用。必須 在發(fā)送/接收最后一個數(shù)據(jù)之前完成設(shè)置CRCNEXT 位的操作。當(dāng) SPI 時鐘頻率較高時,因?yàn)?CPU 的操作會影響 SPI 的帶寬,建議采用 DMA 模式以避免 SPI 降 低 的速度。當(dāng) STM32F10xxx 配置為從模式并且使用了 NSS 硬件模式, NSS 引腳應(yīng)該在數(shù)據(jù)傳輸和CRC 傳輸期間保持為低。當(dāng)配置 SPI 為從模式并且使用 CRC 的功能,即使NSS 引腳為高時仍然會執(zhí)行CRC 的計(jì)算(譯注: 當(dāng) NSS 信號為高時,如果SCK 引腳上有時鐘脈沖,
44、則 CRC 計(jì)算會繼續(xù)執(zhí)行) 。例如:當(dāng)主設(shè)備交 替地與多個從設(shè)備進(jìn)行通信時,將會出現(xiàn)這種情況(譯注:此時要想辦法避免CRC 的誤操作 )。在不選中一個從設(shè)備(NSS 信號為高)轉(zhuǎn)換到選中一個新的從設(shè)備(NSS 信號為低)的時候,為了保持主從設(shè)備端下次CRC計(jì)算結(jié)果的同步,應(yīng)該清除主從兩端的 CRC 數(shù)值。按照下述步驟清除CRC數(shù)值:1. 關(guān)閉 SPI 模塊 (SPE=0);2. 清除CRCEN位為0;3. 設(shè)置CRCEN位為1; 4. 使能 SPI 模塊 (SPE=1) 。23.3.7 狀態(tài)標(biāo)志應(yīng)用程序通過3 個狀態(tài)標(biāo)志可以完全監(jiān)控SPI 總線的狀態(tài)。發(fā)送緩沖器空閑標(biāo)志(TXE) 此標(biāo)志為
45、1時表明發(fā)送緩沖器為空,可以寫下一個待發(fā)送的數(shù)據(jù)進(jìn)入緩沖器中。當(dāng)寫入 SPI_DR 時, TXE 標(biāo)志被清除。接收緩沖器非空 (RXNE) 此標(biāo)志為 1時表明在接收緩沖器中包含有效的接收數(shù)據(jù)。讀SPI數(shù)據(jù)寄存器可以清除此標(biāo)志。 忙 (Busy) 標(biāo)志 BSY 標(biāo)志由硬件設(shè)置與清除(寫入此位無效果) ,此標(biāo)志表明 SPI 通信層的狀態(tài)。當(dāng)它被設(shè)置為 1時,表明 SPI 正忙于通信,但有一個例外:在主模式的雙向接收模式下(MSTR=1 、 BDM=1 并且 BDOE=0) ,在接收期間 BSY 標(biāo)志保持為低。在軟件要關(guān)閉 SPI 模塊并進(jìn)入停機(jī)模式(或關(guān)閉設(shè)備時鐘)之前,可以使用BSY 標(biāo)志檢測傳
46、輸是否 結(jié) 束,這樣可以避免破壞最后一次傳輸,因此需要嚴(yán)格按照下述過程執(zhí)行。BSY 標(biāo)志還可以用于在多主系統(tǒng)中避免寫沖突。除了主模式的雙向接收模式(MSTR=1 、 BDM=1 并且 BDOE=0) ,當(dāng)傳輸開始時, BSY 標(biāo)志被 置 1。 以下情況時此標(biāo)志將被清除為 0: 當(dāng)傳輸結(jié)束( 主模式下,如果是連續(xù)通信的情況例外); 當(dāng)關(guān)閉 SPI 模塊; 當(dāng)產(chǎn)生主模式失效(MODF=1) 。 如果通信不是連續(xù)的,則在每個數(shù)據(jù)項(xiàng)的傳輸之間, BSY 標(biāo)志為低。 當(dāng)通信是連續(xù)時: 主模式下:在整個傳輸過程中, BSY 標(biāo)志保持為高; 從模式下:在每個數(shù)據(jù)項(xiàng)的傳輸之間, BSY 標(biāo)志在一個SPI 時鐘
47、周期中為低。*注 不要使用 BSY 標(biāo)志處理每一個數(shù)據(jù)項(xiàng)的發(fā)送和接收,最好使用 TXE 和 RXNE 標(biāo)志。23.3.8 關(guān)閉 SPI當(dāng)通訊結(jié)束,可以通過關(guān)閉 SPI 模塊來終止通訊。清除SPE 位即可關(guān)閉 SPI 。在某些配置下,如果再傳輸還未完成時,就關(guān)閉 SPI 模塊并進(jìn)入停機(jī)模式,則可能導(dǎo)致當(dāng)前的傳輸被破壞,而且BSY 標(biāo)志也變得不可信。為了避免發(fā)生這種情況,關(guān)閉 SPI 模塊時,建議按照下述步驟操作在主或從模式下的全雙工模式(BIDIMODE=0 , RXONLY=0)1. 等待RXNE=1并接收最后一個數(shù)據(jù);2. 等待TXE=1 ;3. 等待BSY=0 ;4. 關(guān)閉SPI(SPE=
48、0) ,最后進(jìn)入停機(jī)模式(或關(guān)閉該模塊的時鐘)。 在主或從模式下的單向只發(fā)送模式(BIDIMODE=0 , RXONLY=0) 或雙向的發(fā)送模式(BIDIMODE=1 ,BIDIOE=1)在 SPI_DR 寄存器中寫入最后一個數(shù)據(jù)后1. 等待 TXE=1 ;2. 等待 BSY=0 ;3. 關(guān)閉 SPI(SPE=0) ,最后進(jìn)入停機(jī)模式(或關(guān)閉該模塊的時鐘)。 在主或從模式下的單向只接收模式 (MSTR=1 , BIDIMODE=0 , RXONLY=1) 或雙向 的接收模式(MSTR=1 ,BIDIMODE=1 , BIDIOE=0)這種情況需要特別地處理,以保證SPI 不會開始一次新的傳輸1
49、. 等待倒數(shù)第二個(第 n-1 個 )RXNE=1 ;2. 在關(guān)閉SPI(SPE=0) 之前等待一個SPI 時鐘周期 (使用軟件延遲) ;3. 在進(jìn)入停機(jī)模式(或關(guān)閉該模塊的時鐘)之前等待最后一個RXNE=1 。注 在主模式下的單向只發(fā)送模式(MSTR=1 , BDM=1 , BDOE=0) 時,傳輸過程中 BSY 標(biāo)志始終為低。在從模式下的只接收模式 ( MSTR=0 , BIDIMODE=0 , RXONLY=1 )或雙向的接收模式 (MSTR=0 , BIDIMODE=1 , BIDIOE=0)1. 可以在任何時候關(guān)閉 SPI(SPE=0) , SPI 會在當(dāng)前的傳輸結(jié)束后被關(guān)閉;2.
50、如果希望進(jìn)入停機(jī)模式,在進(jìn)入停機(jī)模式(或關(guān)閉該模塊的時鐘)之前必須首先等待BSY=0 。23.3.9 利用 DMA 的 SPI 通信為了達(dá)到最大通信速度,需要及時往SPI 發(fā)送緩沖器填數(shù)據(jù),同樣接收緩沖器中的數(shù)據(jù)也必須及 時讀走以防止溢出。為了方便高速率的數(shù)據(jù)傳輸, SPI 實(shí)現(xiàn)了一種采用簡單的請求/應(yīng)答的DMA 機(jī)制。當(dāng) SPI_CR2 寄存器上的對應(yīng)使能位被設(shè)置時, SPI 模塊可以發(fā)出 DMA 傳輸請求。發(fā)送緩沖器和 接收緩沖器亦有各自的 DMA 請求 (見)。 發(fā)送時,在每次TXE 被設(shè)置為 1時發(fā)出DMA 請求, DMA 控制器則寫數(shù)據(jù)至SPI_DR 寄存器, TXE 標(biāo)志因此而被清
51、除。 接收時,在每次RXNE 被設(shè)置為 1時發(fā)出DMA 請求, DMA 控制器則從SPI_DR 寄存器讀出數(shù) 據(jù), RXNE 標(biāo)志因此而被清除。當(dāng)只使用 SPI 發(fā)送數(shù)據(jù)時,只需使能SPI 的發(fā)送 DMA 通道。此時,因?yàn)闆]有讀取收到的數(shù)據(jù),OVR 被置為 1譯注軟件不必理會這個標(biāo)志()。 當(dāng)只使用 SPI 接收數(shù)據(jù)時,只需使能SPI 的接收 DMA 通道。jumnnfuuiniuumjuujuummuir毗忡it置CM”休修上檜釉山* * '甲史H t'講拿由便,憚遣前妙件沒a得MQhi*n惟任消除圖220 使用DMA接收州配置;CP0L=JT.CPHA=1-muuumnnj
52、umjmjmmumnjmmuI 亞事1 力31 I防一2。|& n-3 * Qg帶CRC的DMA功能 當(dāng)使能SPI使用CRC檢驗(yàn)并且啟用 DMA模式時,在通信結(jié)束時, CRC字節(jié)的發(fā)送和接收是自動 完成的。數(shù)據(jù)和CRC傳輸結(jié)束時,SPI_SR寄存器的CRCERR標(biāo)志為襲示在傳輸期間發(fā)生錯誤。在發(fā)送模式下,當(dāng) DMA已經(jīng)傳輸了所有要發(fā)送的數(shù)據(jù) (DMA_ISR寄存器的TCIF標(biāo)志變?yōu)?后) 可以通過監(jiān)視 BSY標(biāo)志以確認(rèn) SPI通信結(jié)束,這樣可以避免在關(guān)閉SPI或進(jìn)入停止模式時,破壞最后一個數(shù)據(jù)的傳輸。因此軟件需要先等待TXE=1 ,然后等待BSY=0。在不連續(xù)的通信中,在寫數(shù)據(jù)到SPI
53、_DR的操作與BSY位被置為之間,有2個APB時鐘周期 的 延遲,因此,在寫完最后一個癡據(jù)后需要先等待TXE=1再等待BSY=0 o圖219 使用DMA發(fā)送MISONOSI (喻人回忖收小口國說忖 詞。巨加|可M卜F.間呵nck1巨附附M注:RXNI-5工ihten ranDMA謝電南取HSPLDFnDMA 近電 3Pl DRDMA TCIF 寸16.衲/結(jié)靖中)/轉(zhuǎn)忤打 UMAX 收iftillr1總收3+忖祖 X.然國能能導(dǎo)Ptmm 汕 DK 試地抬RM-n就什& ft/八由K柞1:i 1350DMAMlSDR 苒星看掰2UMAJSPi Lm * Hit *3DM嘉帽柏岫* tMJ
54、A_ISR 中 TCIF 力MfnCZi' CROL l.CPHA 1SCKuisoirjoiiul!山境fl電置枚忖等柞BSV-Qek17349ttft"也立SF陰PHA名 律城道以密送3個勒修 然后便能酊I桃件等檔 TXE-1鼠溫壯而囂寫入 SPLDR:口幅無得看增1k0«<iSR 中 TCIF = 1tDMA 耳 ASPi DRMAn人 熟1干 SPI DHDMA,人SPI DFlIDMA片入 O干 SPI CM?/八由晚件徜除DMA TCIF 除志/ fDUA 傳修二23.3.10錯誤標(biāo)志主模式失效專昔誤(MODF)主模式失效僅發(fā)生在: NSS引腳硬件模式管理下,主設(shè)備的 NSS 腳被拉低;或者在 NSS引腳軟 件模式管理下,SSI位被置為時;MODF位被自動置位。主模 式失效對SPI設(shè)備有以下影響: MODF位被置為1'如果設(shè)置了 ERRIE位,則產(chǎn)生SPI中斷; SPE位被清為0'這將停止
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語言、文化與交際知到課后答案智慧樹章節(jié)測試答案2025年春湖南大學(xué)
- 江蘇省徐州市2024-2025學(xué)年高一上學(xué)期1月期末信息技術(shù)試題 含解析
- 2024年自然資源部第一海洋研究所招聘真題
- 2025汽車零部件供應(yīng)商合同管理咨詢協(xié)議
- 高一英語學(xué)案:預(yù)習(xí)導(dǎo)航SectionⅡ
- 深圳施工總價合同范本
- 2024年山東濟(jì)南福和數(shù)控機(jī)床有限公司招聘真題
- 2024年梅河口市市屬事業(yè)單位考試真題
- 2024年廉江市市屬事業(yè)單位考試真題
- 光纜顆粒采購合同范本
- ICH-Q9:風(fēng)險管理分享課件
- 整流變壓器試驗(yàn)報告
- 施工進(jìn)場通知書
- 步進(jìn)電機(jī)控制系統(tǒng)課件
- 幼兒園小班科學(xué)藝術(shù):《歡樂的小芽兒》 課件
- 子宮肌瘤課件PPT(共38張PPT)
- 漢字的五行屬性與三才五格計(jì)算方法
- 唐山高科總部大廈幕墻工程幕墻招標(biāo)技術(shù)評估總結(jié)
- 蘇教版三年級下冊數(shù)學(xué) 第三單元 解決問題的策略 測試卷
- 《學(xué)前教育科學(xué)研究方法》全套課件(完整版)
- 機(jī)電經(jīng)典安裝工程相冊圖解PPT86頁
評論
0/150
提交評論