99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

小麥大叔
認證:普通會員
作者動態
一款輕量級的開源GUI項目——SimpleGUI,可以完美適配單色屏
02-22 09:47
看到這100多個軟硬件開源項目,真是爽爆了
2024-11-30 14:12
推薦一個高效,可靠,安全的串口通訊開源方案
2024-11-27 11:17
推薦一款開源hack硬件平臺工具
2024-11-26 13:58
新手學STM32的話,先學標準庫還是HAL庫?
2024-10-18 15:09

高效,可靠,安全的串口通訊開源方案

大家好,我是小麥。

在嵌入式開發中,經常會用到串口通訊。面對不同應用場景,需要不同的方案。

今天我們來講一下高效,可靠,安全的方案,記得看到最后,會有收獲。

常見的有串口輪詢模式,串口中斷模式,串口DMA接收傳輸等等;

利用串口的空閑中斷配合DMA的環形緩沖區模式,可以高效接收不固定長度的消息報文

下圖中經過黃色的高電平時間空閑之后,就會產生一個空閑事件,IDLE EVENT

空閑信號

因為DMA功能有HCTC中斷;

  • HC  (Harf Complete)DMA傳輸一半成功標志;
  • TC   (Total Complete)  DMA傳輸完成成功標志;

舉個例子;

如下圖所示,這里分配了一個DMA緩沖區,大小是12字節,如果從地址1開始接收,會出現以下這兩種情況;

  • DMA接收到第6個字節的時候,會觸發HC事件;
  • DMA接收到第12個字節的時候,會觸發TC事件;

HC TC

這個思路其實我之前也有實踐過,但是沒有很好地利用HC和TC事件。

所以無法處理這種情況,即DMA緩沖區處于環形模式(Circular)的時候,數據覆蓋的問題,最近看到了一個非常棒的開源項目,這里的思路非常不錯,下面會詳細介紹。

下面是DMA HC/DMA TC/Idle組合進行串口接收的細節,如下圖所示;

來自原項目

再次簡單介紹一下縮略詞的含義;

  • R 讀取;
  • W 寫入;
  • I 空閑信號;
  • HT Half-Transfer complete DMA緩沖區半傳輸完成;
  • TC Transfer-Complete DMA緩沖區全部接收完成;

這里簡單介紹一下情況E的解決方案,上面圖片最右邊小圖;

  • 緩沖區大小20格,這里假設20字節,情況E需要接收30個字節,也就是說,10字節可能會被覆蓋;
  • 經過前面的四次接收后,串口繼續從字母R處接收數據至DMA緩沖區;
  • 接收4字節時,會觸發TC事件,這時候可以將4字節數據處理;

第一步

  • 因為是環形模式,所以回到第一個字節處,繼續接收10字節,觸發HT事件,這時候可以處理10字節數據;

第二步

  • 第三步,繼續接收10字節,觸發TC事件,其中,已經有4字節被覆蓋(下圖橙色所示),因為之前這部分數據已經處理了,所以,即使覆蓋也不影響;

第三步

  • 第四步,上述已經接收了24個字節,所以還有6個字節沒有接收,后面接收會產生空閑信號,并對之前的數據區域進行覆蓋,如下圖示所示;

所以,不難發現,如果只使用空閑中斷,如果需要接收的數據長度大于緩沖區,就會出現數據覆蓋的情況,而加上DMA的HT和TC中斷,就完美解決了這樣的問題;

當然除了這些,還有很多優秀的方案,這個項目提供大量的例子。

項目地址https://github.com/MaJerle/stm32-usart-uart-dma-rx-tx

項目主頁

目前這個項目主要支持主流的STM32芯片平臺和一些開發板上的測試DEMO,具體如下所示;

支持平臺

相應的例子程序如下所示,除了裸機程序,還有環形緩沖區接收,輪詢接收,DMA+空閑中斷基于RTOS的模式接收,挺豐富的,可以參考一下;

例子程序

作者在 STM32F413-Nucleo 開發板進行程序的測試,發現優化效果很不錯;

115200的串口波特率下,每秒發送1581個字節,大約142ms;

  • 不使用DMA,CPU負載14%;
  • 使用DMA,CPU負載0%;
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 3
關注 145
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 亚洲日本成本人观看 | 国产精品久久久亚洲女人 | 亚洲视频色 | 成人一级片免费看 | 欧美一区自拍 | 7799国产精品久久99 | 夜色阁亚洲一区二区三区 | 日韩中字在线 | 亚洲国产一区二区三区精品 | 牛鞭擦进少妇的下身 | 中文字幕亚洲综合久久菠萝蜜 | 中文字幕日韩高清2024 | 国产精品一区二区福利视频 | 97人人模人人爽人人少妇 | 国产精品久久久久婷婷五月 | 成年站免费网站看V片在线 成人亚洲免费视频 | 91精品综合久久久久m3u8 | 久久人人艹 | 国产电视伦理怡红院在线观看 | 色婷婷av一区二区三区软件 | 日韩精品免费一区二区三区竹菊 | 日韩中文字幕在线观看视频 | 日韩a级毛片免费视频 | 一本一本久久A久久综合精品蜜桃 | 欧美另类激情 | 日韩成人在线免费视频 | 日日碰狠狠添天天爽超碰97久久 | 午夜网站在线观看 | av在线天堂亚洲 | 久久精品a级毛片 | 久久久久人妻一区精品 | 久久中文字幕亚洲 | 9797色| 日韩国产一区二区三区 | 91精品片| 国产6区 | 免费一区二区在线观看 | 高清视频在线观看 | 任你躁国产老女人 | 午夜视频在线看 | 精品久久中文字幕97 |