一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

331062281 ? 來源:先楫半導(dǎo)體HPMicro ? 2023-04-14 16:00 ? 次閱讀

概 述

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

d079ee8c-da93-11ed-bfe3-dac502259ad0.png

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

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

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

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

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

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

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

實(shí)現(xiàn)方案

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

d097880c-da93-11ed-bfe3-dac502259ad0.png

先楫半導(dǎo)體所有產(chǎn)品系列的串口 FIFO都支持閾值觸發(fā)中斷,也就是FIFO存儲(chǔ)到多少個(gè)字節(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ā)一次中斷。

d0b84cc2-da93-11ed-bfe3-dac502259ad0.png

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

d0dd16c4-da93-11ed-bfe3-dac502259ad0.png ? ? ?

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

① 需要使能FIFO;

② RXFIFO里面需要存在至少一個(gè)字符;

③ RXFIFO在四個(gè)字符的時(shí)間再也沒有收到新的字符。

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

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

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

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

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

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

方案驗(yàn)證

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

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

d0f5e05a-da93-11ed-bfe3-dac502259ad0.png

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

d12becb8-da93-11ed-bfe3-dac502259ad0.png

實(shí)驗(yàn)現(xiàn)象

通過本次實(shí)驗(yàn)結(jié)果可見相對(duì)于中斷方式接收,采用本文提到的方案可以顯著減少中斷次數(shù)。本法在進(jìn)行不定長(zhǎng)大數(shù)據(jù)量傳輸?shù)膱?chǎng)景下尤為有利,假設(shè)接收1000個(gè)字節(jié),單個(gè)字節(jié)中斷需要產(chǎn)生1000次中斷,而本文提到的方案在不使用其他額外定時(shí)器的條件下,只需要77次中斷就可完成傳輸。

d1529b24-da93-11ed-bfe3-dac502259ad0.png

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

如果大家在開發(fā)過程中還有其他的思路或建議,歡迎到官方網(wǎng)站的 “先楫社區(qū)”發(fā)貼討論,MCU生態(tài)建設(shè)需要各位的積極參與,感謝您的信任與支持!

審核編輯:湯梓紅

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

    關(guān)注

    23

    文章

    3272

    瀏覽量

    116709
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1580

    瀏覽量

    78334
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1478

    瀏覽量

    51956
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    569

    瀏覽量

    102041
  • 先楫半導(dǎo)體
    +關(guān)注

    關(guān)注

    10

    文章

    241

    瀏覽量

    2510

原文標(biāo)題:再談 HPM6700/6400/6300 產(chǎn)品系列串口接收不定長(zhǎng)數(shù)據(jù)的方式

文章出處:【微信號(hào):HPMicro,微信公眾號(hào):先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN外設(shè)的接收過濾器設(shè)置

    /HPM6300系列產(chǎn)品用的是CAN,而HPM6200系列使用的是MCAN。本文統(tǒng)稱HPM6700/HP
    的頭像 發(fā)表于 08-24 09:03 ?2488次閱讀
    CAN外設(shè)的<b class='flag-5'>接收</b>過濾器設(shè)置

    不定長(zhǎng)數(shù)據(jù)接收的原理是什么?怎么實(shí)現(xiàn)串口數(shù)據(jù)不定長(zhǎng)接收?

    不定長(zhǎng)數(shù)據(jù)接收的原理是什么?怎么實(shí)現(xiàn)串口數(shù)據(jù)不定長(zhǎng)接收
    發(fā)表于 11-16 08:11

    HPM6700/6400產(chǎn)品數(shù)據(jù)手冊(cè)

    HPM6700/6400產(chǎn)品簡(jiǎn)介
    發(fā)表于 05-25 09:47

    HPM6700/6400系列高性能微控制器數(shù)據(jù)手冊(cè)

    HPM6700/6400數(shù)據(jù)手冊(cè)
    發(fā)表于 05-25 08:01

    HPM6700/6400系列高性能微控制器用戶手冊(cè)

    HPM6700/6400用戶手冊(cè)
    發(fā)表于 05-29 09:53

    HPM6700/6400系列高性能微控制器勘誤表

    HPM6700/6400勞動(dòng)手冊(cè)
    發(fā)表于 05-30 06:21

    HPM6300系列HPM6700/6400系列微控制器之間的異同點(diǎn)及遷移指南

    HPM6300_HPM6700/6400遷移指南
    發(fā)表于 06-01 08:02

    HPM6700/6400微控制器硬件設(shè)計(jì)指南

    HPM6700/6400硬件設(shè)計(jì)指南
    發(fā)表于 06-05 09:14

    stm32 串口接收不定長(zhǎng)度數(shù)據(jù)及黏包處理 + 串口DMA接收

    ,那么stm32串口是如何實(shí)現(xiàn)接收不定長(zhǎng)度數(shù)據(jù)的呢? 串口接收數(shù)據(jù)一般會(huì)采用
    發(fā)表于 12-23 19:09 ?27次下載
    stm32 <b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)度數(shù)據(jù)</b>及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>

    STM32 DMA串口接收不定長(zhǎng)數(shù)據(jù)

    STM32 DMA串口接收不定長(zhǎng)數(shù)據(jù)
    發(fā)表于 12-24 18:50 ?41次下載
    STM32  DMA<b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)

    目錄STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)引言DMA簡(jiǎn)介什么是DMA在STM32的DMA資源DMA接收數(shù)據(jù)
    發(fā)表于 12-24 19:03 ?30次下載
    STM32之<b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    先楫HPM6700/6400家族迎來新成員

    鮮花初放的四月,是收獲的季節(jié)。先楫HPM6700/6400家族迎來了新成員—196BGA封裝系列。196BGA封裝尺寸為10mmx10mm是超高性能MCU家族HPM6700/
    的頭像 發(fā)表于 05-10 16:48 ?1318次閱讀
    先楫<b class='flag-5'>HPM6700</b>/<b class='flag-5'>6400</b>家族迎來新成員

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

    HPM6200系列產(chǎn)品,而HPM6750/6400/6300系列的MCU只能使用uart_sof
    的頭像 發(fā)表于 04-19 09:39 ?1242次閱讀
    <b class='flag-5'>再談</b> <b class='flag-5'>HPM6700</b>/<b class='flag-5'>6400</b>/<b class='flag-5'>6300</b> <b class='flag-5'>產(chǎn)品系列</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>的<b class='flag-5'>方式</b>

    HPM USB系列HPM6700雙USB功能介紹

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