在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

再談 HPM6700/6400/6300 產(chǎn)品系列串口接收不定長數(shù)據(jù)的方式

先楫半導(dǎo)體HPMicro ? 2023-04-19 09:39 ? 次閱讀

概 述

2023年3月底,先楫半導(dǎo)體官方發(fā)布了新的hpm_sdk版本,相比上一次發(fā)布的版本,串口外設(shè)多了一個uart_hardware_rx_idle的sample。目前,這個硬件的空閑中斷僅適用于HPM6200系列產(chǎn)品,而HPM6750/6400/6300系列的MCU只能使用 uart_software_rx_idle 通過軟件利用額外的定時器實現(xiàn)空閑中斷機(jī)制。

ed855090-da9b-11ed-ad0d-dac502259ad0.png

首先,我們簡單介紹一下以上4個串口相關(guān)的sample:

(1) uart_dma:此demo 的串口均使用DMA掌管進(jìn)行收發(fā),判斷收發(fā)完成只需要一次DMA傳輸完成中斷,但只能定長收發(fā),適用于固定長度的收發(fā)場景。此demo適用于先楫半導(dǎo)體所有MCU系列產(chǎn)品。

(2) uart_hardware_rx_idle:此demo 使用硬件空閑機(jī)制和DMA接收進(jìn)行接收不定長。適合接收不定長數(shù)據(jù)的場景,但此demo僅適用先楫半導(dǎo)體HPM6200系列MCU產(chǎn)品。

(3)uart_irq:此demo 的串口均使用中斷來進(jìn)行收發(fā),可適用于任何應(yīng)用場景。中斷進(jìn)行接收帶來的一個問題就是每接收一個字節(jié)就會進(jìn)入一次中斷,在數(shù)據(jù)量稍大的場景下會比較耗費中斷次數(shù)。此demo適用于先楫半導(dǎo)體所有MCU系列產(chǎn)品。

(4)uart_software_rx_idle:此demo需要定時器的兩個通道,并且互聯(lián)到一個IO,這個IO需要接到串口的RX引腳。一個通道作為捕獲RX引腳下降沿以此判斷開始接收,另一個通道作為同步輸入SYNC(觸發(fā)會重置計數(shù)器)以此來判斷接收完成。利用定時器來實現(xiàn)空閑機(jī)制實現(xiàn)接收不定長數(shù)據(jù)。在資源利用不緊張的情況下可以選擇使用此demo,因為每個串口都需要定時器的兩個通道作為輔助外設(shè)。此demo適用于先楫半導(dǎo)體所有MCU系列產(chǎn)品。

對于某些應(yīng)用場合,比如接收不定長數(shù)據(jù),有硬件空閑中斷的支持,可以再配合DMA,用最小的中斷損耗(只需要一次中斷)以及最少的外設(shè)輔助(不需要定時器查詢)實現(xiàn)接收不定長數(shù)據(jù)。


本文將探討一種利用串口FIFO接收超時機(jī)制而不依賴額外定時器在HPM6700/6400/6300 產(chǎn)品系列上實現(xiàn)串口不定長數(shù)據(jù)接收。

實現(xiàn)方案

先楫半導(dǎo)體 HPM6700/6400/6300 產(chǎn)品系列串口特性如下:

ed989c22-da9b-11ed-ad0d-dac502259ad0.png


先楫半導(dǎo)體所有產(chǎn)品系列的串口 FIFO都支持閾值觸發(fā)中斷,也就是FIFO存儲到多少個字節(jié)認(rèn)為一次有效數(shù)據(jù)進(jìn)而觸發(fā)中斷。這樣可以大大減少觸發(fā)中斷的次數(shù),有了FIFO閾值中斷,就可以在進(jìn)入中斷后,一次性把FIFO的所有數(shù)據(jù)取出來。


開發(fā)者可以在SDK中找到詳細(xì)描述閾值范圍的內(nèi)容:

接收觸發(fā)閾值為 0 (uart_rx_fifo_trg_not_empty):代表RX FIFO不為空就一次觸發(fā)中斷。

接收觸發(fā)閾值為 1 (uart_rx_fifo_trg_gt_one_quarter):代表RX FIFO接收到超過FIFO的四分之一就觸發(fā)一次中斷。

接收觸發(fā)閾值為 2 (uart_rx_fifo_trg_gt_half):代表RX FIFO接收到超過FIFO的一半就觸發(fā)一次中斷。

接收觸發(fā)閾值為 3 (uart_rx_fifo_trg_gt_three_quarters):代表RX FIFO接收到超過FIFO的四分之三就觸發(fā)一次中斷。

edaf6a42-da9b-11ed-ad0d-dac502259ad0.png

有了FIFO閾值設(shè)置,先楫半導(dǎo)體MCU產(chǎn)品的串口還具備了FIFO timeout 的中斷

edca7bf2-da9b-11ed-ad0d-dac502259ad0.png

產(chǎn)生中斷需要同時具備以下條件

① 需要使能FIFO;

② RXFIFO里面需要存在至少一個字符;

③ RXFIFO在四個字符的時間再也沒有收到新的字符。

結(jié)合以上特點可知,當(dāng)接收閾值產(chǎn)生中斷的時候,系統(tǒng)能夠把接收到的數(shù)據(jù)從FIFO提取出來;當(dāng)FIFO timeout中斷觸發(fā)時,系統(tǒng)能夠在最后把接收的數(shù)據(jù)從FIFO提取出來。通過這種方式來實現(xiàn)一幀不定長數(shù)據(jù)的接收。


此外,開發(fā)者可以結(jié)合以下特征以及自己的應(yīng)用開發(fā)需求來決定是否采用此方案:


相比單個字節(jié)接收,接收中斷次數(shù)能減少10倍以上。比如接收1000個字節(jié),單個字節(jié)接收需要進(jìn)入1000次中斷,而使用rx fifo閾值+fifo超時機(jī)制,只需要進(jìn)入77次,相比減少12倍以上中斷次數(shù)。

接收閾值中斷和超時中斷是一起使能觸發(fā)的。

使用這種方式的話,接收無法配合DMA,但是發(fā)送可以使用DMA。

超時條件是四個字符時間。也就是在四個字符時間沒收到新數(shù)據(jù),則判斷超時。

方案驗證

結(jié)合以上的論述,我們開發(fā)一個sample進(jìn)行驗證。接收使用RX FIFO 和 FIFO timeout方式,發(fā)送則使用DMA。使用100到1000字節(jié)隨機(jī)幾組進(jìn)行驗證接收的中斷次數(shù)。

對于RX FIFO 和 FIFO timeout方式,代碼配置如下:

ede397f4-da9b-11ed-ad0d-dac502259ad0.png

中斷進(jìn)行提取FIFO的數(shù)據(jù):

ee029a46-da9b-11ed-ad0d-dac502259ad0.png

實驗現(xiàn)象

通過本次實驗結(jié)果可見相對于中斷方式接收,采用本文提到的方案可以顯著減少中斷次數(shù)。本法在進(jìn)行不定長大數(shù)據(jù)量傳輸?shù)膱鼍跋掠葹橛欣僭O(shè)接收1000個字節(jié),單個字節(jié)中斷需要產(chǎn)生1000次中斷,而本文提到的方案在不使用其他額外定時器的條件下,只需要77次中斷就可完成傳輸。

ee2b5936-da9b-11ed-ad0d-dac502259ad0.png

以上是針對先楫半導(dǎo)體HPM6700/6400/6300這三個系列的MCU產(chǎn)品操作串口外設(shè)的一種方式的介紹。在實際操作過程中,希望能帶給各位開發(fā)者一點啟發(fā)。

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

    關(guān)注

    334

    文章

    27719

    瀏覽量

    222688
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7145

    瀏覽量

    89585
收藏 人收藏

    評論

    相關(guān)推薦

    【代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法

    【代碼分享】基于樂鑫ESP32的串口不定長數(shù)據(jù)接收方法
    的頭像 發(fā)表于 11-15 01:02 ?813次閱讀
    【代碼分享】基于樂鑫ESP32的<b class='flag-5'>串口</b><b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>方法

    【AG32開發(fā)板免費試用】+串口不定長收超時設(shè)置閾值多少合適?

    串口不定長收發(fā)超時設(shè)置閾值多少合適?這個和波特率有關(guān)系嗎? 考慮最大接收長度嗎?
    發(fā)表于 10-31 18:26

    HPM6750evkmini如何實現(xiàn)可信的執(zhí)行環(huán)境?

    HPM6700的datasheet中的1.2.15 信息安全系統(tǒng)有提到“基于BOOT ROM 的安全啟動機(jī)制,支持加密啟動,支持可信的執(zhí)行環(huán)境”,請問可信的執(zhí)行環(huán)境如何實現(xiàn)的?有相關(guān)的Demo或者資料嗎?是類似于TFM這樣的嗎?
    發(fā)表于 09-25 09:27

    STM32CUBEMX(8)--USART通過定時器中斷方式接收不定長數(shù)據(jù)

    概述 本文利用中斷實現(xiàn)串口不定長接收(非DMA),使用HAL庫,將接收數(shù)據(jù)打印出去。 DMA接收
    發(fā)表于 09-06 16:48

    STM32CUBEMX(2)--USART通過DMA方式接收不定長數(shù)據(jù)

    (\"數(shù)據(jù)內(nèi)容:\"); for(int i=0;i<Rx_len;i++) { printf(\"%c\",ReceiveBuff);//向串口打印接收
    發(fā)表于 09-04 11:48

    國產(chǎn)高性能MCU又一力作,集成授權(quán)EtherCAT,助力工業(yè)伺服走向海內(nèi)外

    電子發(fā)燒友網(wǎng)報道(文/黃晶晶)成立不到4年的先楫半導(dǎo)體HPMicro陸續(xù)推出并量產(chǎn)6款高性能MCU,包含HPM6700/6400HPM6300HPM6200、
    的頭像 發(fā)表于 07-02 08:17 ?1432次閱讀
    國產(chǎn)高性能MCU又一力作,集成授權(quán)EtherCAT,助力工業(yè)伺服走向海內(nèi)外

    HPM USB系列HPM6700雙USB功能介紹

    HPM6700系列MCU提供了2個USB外設(shè)端口。這些端口內(nèi)置高速PHY,支持OTG模式,主機(jī)模式支持高速、全速和低速模式,設(shè)備模式支持高速和全速模式,完全兼容USB2.0協(xié)議。這使得HPM6700
    的頭像 發(fā)表于 05-31 08:17 ?629次閱讀
    <b class='flag-5'>HPM</b> USB<b class='flag-5'>系列</b>:<b class='flag-5'>HPM6700</b>雙USB功能介紹

    HPM USB系列HPM6700雙USB功能介紹

    HPM6700系列MCU提供了2個USB外設(shè)端口。這些端口內(nèi)置高速PHY,支持OTG模式,主機(jī)模式支持高速、全速和低速模式,設(shè)備模式支持高速和全速模式,完全兼容USB 2.0協(xié)議。
    的頭像 發(fā)表于 05-30 11:40 ?698次閱讀
    <b class='flag-5'>HPM</b> USB<b class='flag-5'>系列</b>:<b class='flag-5'>HPM6700</b>雙USB功能介紹

    求助,關(guān)于串口數(shù)據(jù)解析疑問求解

    現(xiàn)在手上有一個串口模塊要開發(fā),比較復(fù)雜, 功能:接收各種類型不定長度的 字符串,然后解析做出反饋 字符串基本規(guī)格: 單條命令 : CMD(X,Y,\'ABC或者中文字符不定長\'
    發(fā)表于 04-29 06:34

    stm32f103通過UART_RX空閑中斷服務(wù)函數(shù)接收不定長數(shù)據(jù),運行一段時間后會進(jìn)入HardFault_Handler的原因?

    UART_RX_DMA接收。 問題:當(dāng)不使用串口調(diào)試助手發(fā)送時,系統(tǒng)正常運行(長時間),通過串口調(diào)試助手發(fā)送不定長數(shù)據(jù),剛開始正常運行,運
    發(fā)表于 04-26 06:43

    STM32 DMA雙緩沖發(fā)送不定長數(shù)據(jù)怎么解決?

    STM32 DMA雙緩沖發(fā)送不定長數(shù)據(jù),假如我需要發(fā)送100010個數(shù)據(jù),開辟了2塊1000數(shù)據(jù)區(qū),數(shù)據(jù)長度設(shè)置為1000,循環(huán)發(fā)送,最后一
    發(fā)表于 04-11 06:58

    用STM32F030F4串口空閑中斷接收不定長數(shù)據(jù),發(fā)生中斷后不知道如何計算接收到的字節(jié)數(shù)?

    我用STM32F030F4串口空閑中斷接收不定長數(shù)據(jù),發(fā)生中斷后不知道怎樣計算接收到的字節(jié)數(shù)。
    發(fā)表于 04-03 07:12

    stm32f103如何實現(xiàn)spi從機(jī)接收不定長數(shù)據(jù)

    stm32f103 如何實現(xiàn)spi從機(jī)接收不定長數(shù)據(jù)數(shù)據(jù)首字節(jié)說明了數(shù)據(jù)長度) 求個思路或例程 用的HAL 庫
    發(fā)表于 03-28 07:47

    求助,關(guān)于stm32l053串口通訊的疑問求解

    請問用L0系列mcu進(jìn)行串口通訊,接收數(shù)據(jù)不定長,只能一個一個字節(jié)接收,再判斷是否停止
    發(fā)表于 03-25 06:57

    Slavefifo模式下的bulk傳輸會有不定長度的亂碼數(shù)據(jù)是怎么回事?

    Slavefifo模式下的bulk傳輸時候,F(xiàn)PGA向電腦端發(fā)送數(shù)據(jù)的時候,在我的數(shù)據(jù)前面一直會有不定長度的亂碼數(shù)據(jù),很多時候都是0,請問我應(yīng)該如何對固件操作,在發(fā)送我的
    發(fā)表于 02-28 08:31
    主站蜘蛛池模板: 国产精品秒播无毒不卡 | 色妇网| 午夜短视频 | 加勒比啪啪| 性欧美xxxx视频在线观看 | 色135综合网 | 日韩在线免费看网站 | 天天干干干 | 色偷偷91久久综合噜噜噜噜 | 欧美专区在线播放 | 免费观看视频在线观看 | 五月天激情丁香 | 看全色黄大色大片免费久久怂 | 国产网红主播chinese | 夜干夜夜| 午夜手机看片 | 午夜影院三级 | 亚洲另类激情综合偷自拍 | 六月婷婷在线观看 | 久久精品国产精品亚洲红杏 | 免费特黄视频 | 天天干天天日天天射天天操毛片 | 欧美一区二区不卡视频 | 久久精品国产亚洲片 | 久久永久免费视频 | 成人xxxxx | 在线播放91灌醉迷j高跟美女 | 最新亚洲人成网站在线影院 | 男人的天堂色偷偷 | www日本高清 | 色噜噜亚洲男人的天堂 | 久久天天躁狠狠躁夜夜爽 | 欧美黄色片免费 | 国产传媒在线观看视频免费观看 | 操香蕉| 日本番囗 | 视频午夜| 午夜肉伦伦影院在线观看 | 国产精品高清久久久久久久 | free性欧美高清另类 | 天天操天天擦 |