chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

USART波特率與SPI速率對比

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-01-15 16:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文主要結(jié)合STM32,講述UART和SPI有關(guān)速率相關(guān)的知識。

1.串口和SPI內(nèi)部時鐘 在回答上面問題之前,需要先了解STM32內(nèi)部時鐘的概念,尤其是串口和SPI的內(nèi)部時鐘。

STM32里包含有系統(tǒng)時鐘、AHB時鐘和APB時鐘。APB時鐘來源于AHB,AHB時鐘來源于系統(tǒng)時鐘。

從上圖中可以看出,時鐘就像流水一樣,從時鐘源匯聚到系統(tǒng)時鐘上,再從系統(tǒng)時鐘繼續(xù)分頻或者說是繼續(xù)分發(fā)到AHB、APB。

通常我們談?wù)摰?a target="_blank">MCU能跑到多少M、主頻多少M,其實所指的就是系統(tǒng)時鐘。

這些時鐘在不同的STM32系列中是不一樣的,我們以STM32F401為例,手冊上說它的APB1的最高時鐘是42MHz,APB2的最高時鐘是84MHz,不同的外設(shè)因為掛在不同的總線上,所以速度就不太相同了。比如USART1掛在APB2上,所以它的時鐘最高就是84MHz, USART2是掛在APB1上,它的總線時鐘最快就是42MHz。當我們配置串口的時候會發(fā)現(xiàn),USART2的baudrate最高是2.625Mbit/s,但是同樣配置的USART1卻可以達到5.25Mbit/s,這就是因為所在的總線時鐘的不同而不同。

那我們怎么知道使用的USART1、USART2到底掛在哪條總線上呢?去從數(shù)據(jù)手冊里尋找,直接在手冊里搜索關(guān)鍵詞APB1或者APB2就可以快速找到列表。 2.串口的過采樣技術(shù)規(guī)范

比如說做數(shù)據(jù)的接收,我們可以看到串口是通過過采樣技術(shù)來實現(xiàn)對數(shù)據(jù)的接收,因為它沒有時鐘線,只能通過高于波特率的16倍或者8倍對總線上的數(shù)據(jù)一個一個地進行采集,根據(jù)最后采集到的情況來判斷信號的狀態(tài)。

舉個例子,當我們采集START信號的時候,實際上它要求采集到1110 x0x0x0 000這樣固定的序列的時候才認為是一個起始信號。START信號在串口里是一個bit的低電平信號,我們用16倍的速率進行采樣,首先它在前面會做一個下降沿檢測,這個檢測是要在前面的4個bit能檢測到1110,硬件會對總線上的數(shù)據(jù)根據(jù)采樣點一直進行檢測,這里的采樣點就是APB的時鐘,串口掛在不同的APB上用的時鐘不一樣。采樣的時候采集到1110就知道是一個下降沿,后面的x意思是任意的,后面的幾個位中至少需要檢測到三個0,而最后邊的三個位需要是連續(xù)的三個0,這樣才能被判定是一個起始位。其實只是判斷了3、5、7、8、9、10這六個點,只要是0,就可以確認了。這里我們是以START信號為例,其他信號也是這樣的。

可能有人會有疑問,x是任意的,不去檢測,如果0不滿足要求應(yīng)該怎么辦呢?

如果3、5、7、8、9、10這六個點都是0,那就可以認為這是一個起始信號;如果在3、5、7和8、9、10這兩個階段都滿足至少有兩個bit是0的話,那就可以確認它是起始信號,確認的意思是說它里面的接收緩沖區(qū)非空,標志位就已經(jīng)置上了,承認這個信號,但是還要給一個NE的標志位,因為雖然承認了這個信號,但里面是存在噪聲的。我們看串口的中斷標志位的時候就可以看到,在它的錯誤事件里就有一個NOISE FLAG,這個位就表示當串口在接收的時候,在總線上檢測到的電平并不是一個標準的、完整的高電平或者低電平,會有錯誤但不影響整個數(shù)據(jù)的接收,如果在接收的時候開啟了EIE位,錯誤可以產(chǎn)生一個中斷,讓MCU對總線上的情況有一個了解。

如果前三個bit滿足條件,而后三個bit沒有滿足的話,那就說明這個數(shù)據(jù)是錯誤的,就不會置標志位了,只要在3、5、7和8、9、10這兩個階段中有一個階段不滿足條件,就不會置位,并且還會有噪聲的說明。

當然了,這些都是在檢測下降沿沒有問題的情況下來說的,如果說在檢測下降沿1110都不完整或者是錯誤的,直接就會回到ideal狀態(tài),重新等待下一個數(shù)據(jù)發(fā)送過來。

3.SPI的速度為什么這么快?

我們可以看一下SPI的時序圖,圖中上面兩根線是CLOCK線,它根據(jù)配置的不同而不同,在CPHA=0時,即在第一個時鐘沿進行采樣,CPOL表示的是時鐘的默認電平是高電平(CPOL=1)還是低電平(CPOL=0),這里看到的每個時鐘都可以傳輸一個bit。

4.SPI速率是不是應(yīng)該和系統(tǒng)時鐘一樣? 其實不是,因為系統(tǒng)需要時間去獲取采集到的數(shù)據(jù),所以SPI的時鐘分頻系數(shù)最小是二分之一的分頻,那么就是說SPI的速度是系統(tǒng)時鐘的一半了。

有人覺得同步傳輸明顯優(yōu)于異步傳輸,因為有時鐘線,傳輸速率會更高。

但其實這種說法并不是完全正確的,因為每一種傳輸方式都有自己的優(yōu)勢。比如串口有自動波特率的功能,就是說在接收的時候并不知道主機是按照什么樣的波特率進行傳輸?shù)?,那就只能等主機發(fā)一個特定字節(jié)的數(shù)據(jù)過來并且檢測數(shù)據(jù)的狀態(tài),然后自己硬件去設(shè)置波特率的寄存器,這樣就可以在下一次傳輸?shù)臅r候和主機使用相同的波特率。其次,在不同的溫度范圍內(nèi),內(nèi)部的RC振蕩器是有溫漂的并且很大,最標準的校準方法是給它一個時鐘沿,但是很多時候并沒有這個時鐘沿,那我們就可以用自動波特率。每次通訊的時候都采用自動波特率,就是每次都先接收,接收之后BRR寄存器里面的值就會隨著溫度的變化發(fā)生改變,MCU就可以根據(jù)BRR的值來調(diào)節(jié)HSITRIM。這個方法的好處是不需要提供一個非常標準的時鐘,通過串口通訊這種異步的方式就可以把時鐘信息傳給單片機內(nèi)部。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2307

    文章

    11150

    瀏覽量

    372393
  • 波特率
    +關(guān)注

    關(guān)注

    2

    文章

    319

    瀏覽量

    35496
  • spi模式、spi速率
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2381
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    請問使用串口ISP波特率可以自己設(shè)定嗎?

    請問使用串口ISP,波特率可以自己設(shè)定嗎?
    發(fā)表于 01-14 08:27

    FDCAN 數(shù)據(jù)段波特率增加后發(fā)送失敗的問題分析

    客戶在使用 FDCAN 協(xié)議,仲裁段波特率配置位 1Mbit/s,數(shù)據(jù)段波特率配置為 5Mbit/s時,發(fā)現(xiàn) FDCAN 發(fā)送功能異常。首先建議客戶使用 IC 內(nèi)部回環(huán)模式進行測試發(fā)現(xiàn) 5M
    發(fā)表于 01-04 11:16 ?0次下載

    請問波特率參數(shù)如何設(shè)置?

    波特率參數(shù)如何設(shè)置?
    發(fā)表于 12-24 08:05

    支持小數(shù)波特率的意義是什么

    我看芯源有一款MCU是支持小數(shù)波特率,支持小數(shù)波特率的意義是什么?是為了數(shù)據(jù)傳輸更穩(wěn)定?
    發(fā)表于 12-11 07:15

    請問支持小數(shù)波特率接收數(shù)據(jù)的意義在哪兒?

    我看芯源支持小數(shù)波特率,話說,支持小數(shù)波特率接收數(shù)據(jù)的意義在哪兒?是通訊更有精度嗎?
    發(fā)表于 12-02 07:17

    UART波特率計算及UART收發(fā)回顯實驗

    決定串口波特率的寄存器有BRR(Bite Rate Rigister),SEMR(Serial Extended Mode Rigister)和MDDR(Modulation Duty
    的頭像 發(fā)表于 10-17 09:51 ?2755次閱讀
    UART<b class='flag-5'>波特率</b>計算及UART收發(fā)回顯實驗

    串口波特率設(shè)置1200用不了是怎么回事?

    mcu:stm32f407zg 調(diào)試時,設(shè)置波特率為1200,而串口輸出為亂碼,電腦設(shè)置波特率19200來接收mcu的數(shù)據(jù),卻能接收正確; (我以前沒有用RTT時,用stm32f103rct6
    發(fā)表于 09-23 07:19

    115200的波特率,為啥實際速度只有11KB/s?

    波特率≠真實速度! 這幾個概念確實容易混淆,但它們描述的是通信過程中不同層面的速率指標。讓我們一起來理清楚它們的區(qū)別和聯(lián)系↓ 主要區(qū)別解析 比特 (Bit Rate): 指每秒傳輸?shù)亩M制比特數(shù)量
    的頭像 發(fā)表于 09-10 11:18 ?608次閱讀

    請問如何使用低功耗 UART (LP UART) 波特率補償?

    如何使用低功耗 UART (LP UART) 波特率補償?
    發(fā)表于 08-21 07:05

    波特率是什么

    波特率是串行通信中的一個核心參數(shù),用于描述數(shù)據(jù)在傳輸線路上的傳輸速率。以下從定義、單位、與比特的關(guān)系、實際應(yīng)用及設(shè)置注意事項等方面進行詳細說明: 一、定義與本質(zhì) 波特率(Baud R
    的頭像 發(fā)表于 07-22 11:11 ?7327次閱讀

    可編程電源的通信波特率應(yīng)如何設(shè)置?

    可編程電源的通信波特率設(shè)置需綜合考慮設(shè)備兼容性、通信穩(wěn)定性、實時性需求及抗干擾能力,推薦根據(jù)設(shè)備支持的最高波特率、通信距離、環(huán)境干擾等因素,優(yōu)先選擇標準波特率(如9600、19200、38400
    發(fā)表于 07-07 15:01

    基于瑞薩64位MPU RZ/G2L的uboot串口多波特率支持介紹

    本文主要介紹基于瑞薩64位MPU RZ/G2L,討論uboot下非常規(guī)波特率115200的支持方法,用于解決客戶對uboot下特殊波特率的需求,供客戶參考。
    的頭像 發(fā)表于 07-04 15:54 ?2927次閱讀
    基于瑞薩64位MPU RZ/G2L的uboot串口多<b class='flag-5'>波特率</b>支持介紹

    第十四章 USART——串口通訊

    本章介紹了USART串口通訊,含物理層(RS-232、TTL電平)、協(xié)議層(波特率、數(shù)據(jù)幀),及W55MH32的USART功能與應(yīng)用。
    的頭像 發(fā)表于 06-14 16:30 ?1664次閱讀
    第十四章 <b class='flag-5'>USART</b>——串口通訊

    MAX3107SPI/I2C UART,具有128字FIFO技術(shù)手冊

    速率。鎖相環(huán)(PLL)、預分頻器以及分數(shù)波特率發(fā)生器能夠?qū)崿F(xiàn)高分辨波特率編程,并最大程度地降低波特率對參考時鐘的依賴。
    的頭像 發(fā)表于 05-22 11:24 ?923次閱讀
    MAX3107<b class='flag-5'>SPI</b>/I2C UART,具有128字FIFO技術(shù)手冊

    CAN總線十萬個為什么 | CAN自定義波特率有什么用?

    導讀CAN總線通信中,波特率一致并不總能保證通信順暢。本文將揭秘自定義波特率的原理和應(yīng)用,探討如何通過優(yōu)化采樣點和提高容忍度解決通信問題,助力工程師提升通信穩(wěn)定性。通常情況下,CAN總線通信只需確保
    的頭像 發(fā)表于 02-07 11:36 ?1205次閱讀
    CAN總線十萬個為什么 | CAN自定義<b class='flag-5'>波特率</b>有什么用?