色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

模塊化代碼的設計思路,開發思想和獨立模塊開發模型

5CTi_cirmall ? 來源:電路設計技能 ? 作者:電路設計技能 ? 2021-03-05 14:40 ? 次閱讀

嵌入式軟件這個行業涉及甚廣,從我們身邊的電視、冰箱、洗衣機,到我們的手機,再到交通、到醫療、軍事無處不在。

在項目的開發過程中,使用調試工具是必不可少的。

串口簡單靈活的特性常被工程師用作代碼的調試工具,它的另一個名字叫uart

說到uart,相信很多工程師都熟透了,掌握一個uart,可以說是已經邁進了嵌入式軟件的殿堂,所以uart也常被用作嵌入式入門的必備功課。

那既然都熟了,那為什么還拿出來說呢,帶著這樣的一個問題,跟著我一起深入的了解我們的這個項目,一起探討uart背后那些不為人知的故事。

目的意義在我們的開發測試中,uart通常扮演者信息輸出,人機交互和下載程序的功能,有些場景下可能有線的串口不是很方便或者不能實現信息的輸出,比如調平衡車,有線串口對這種遠距離的調試顯得有些力不足。有些場景或者我們根本不可以把數據直接讀出來,比如車廠,整車的CAN數據是汽車的血液,一些ECU的出廠前身體狀況,全靠采集can數據來診斷,即使整車有can數據的存儲功能,一些測試調試不一定能很方便的拿到,所以這個無線的數據采集儀就能派上用場,這就是我本次項目的主要意義。

本期內容可以了解到以下幾個方面:

1、模塊化代碼的設計思路,開發思想和獨立模塊開發模型;

2、uart等串行板級通信的設計原理及其注意事項;

3、項目中常用的測試方法和測試手段;

4、通信協議的制定和協議棧的開發;

項目簡介:項目采用雙mcu-STM32F030C8T6和RF24L01無線模塊實現主從設備的上下行數據傳輸,在此基礎上增加與pc的通信和數據記錄功能,實現離線數據同步功能;

基礎功能:

實現雙mcu數據的上下行無線傳輸,波特率為115200;

實現主設備與pc機的通信,并實現uart調試功能;

擴展功能:1、can數據、spi 、iic的數據的采集傳輸;2、離線存儲功能;

開發準備及其環境硬件環境:具備RF24L01模塊接口的STM32開發板2塊、RF20L01無線模塊2塊;開發工具:STM32J-link仿真器、串口TTL轉換小板各1;軟件環境 :KIEL-MDK 、串口助手 ;

開發計劃節點1:完成技術指標的確定,開發板、硬件模塊及其調試器采購到位,完成軟硬件的架構設計;

節點2:調試接口與pc的交互程序的開發;

初建工程,完成uart1調試接口程序的開發;

完成uart2與pc機的交互程序的設計;

節點3:定制NRF24L01的傳輸協議,并完成開發

驅動的開發與BSP的開發;

協議的開發;

節點4:整體調試、測試;

節點5:編寫項目總結。

項目設計

Part 01

項目概述及其環境的搭建

項目簡介:

項目采用雙mcu-STM32F030C8T6和RF24L01無線模塊實現主從設備的上下行數據傳輸,在此基礎上增加與pc的通信和數據記錄功能,實現離線數據同步功能;功能指標

基礎功能:

1、為了盡快上手軟件,硬件系統采用現成模塊, RF24L01模塊接口的STM32開發板2塊和RF20L01無線模塊2塊,STM32系統板2塊分為主板和從板,從板信息通過24l01無線模塊發送到主板,主板通過uart與pc交互;硬件部分后續獨立部分說明分享。

2、軟件方面是重點研究對象,軟件主要分為driver、hal、bsp、service、app五個部分。Driver層是和硬件直接相關,hal層是隔離層,bsp是驅動相關芯片的板級支持層、服務層主要是一些任務相關,App為應用層。

擴展功能:1、can數據、spi 、iic的數據的采集傳輸;2、離線存儲功能;

開發準備及其環境:1、硬件環境 :具備RF24L01模塊接口的STM32開發板2塊、RF20L01無線模塊2塊;2、開發工具 :STM32J-link仿真器、串口TTL轉換小板各1;3、軟件環境 KIEL-MDK 、串口助手 ;

Part 02

軟件設計-外設uart

導言uart外設是開發調試的重要手段,也是板級通信常用的通信方式。

對于耳熟能詳的uart,你了解多少呢?

它的用法的注意事項和難點又有哪些呢?

本期內容讓我帶著大家重點探討一下uart的軟件設計。

內容提要1、uart的基本概述和STM32中uart驅動HAL層的配置;2、調試打印中,uart的數據發送策略;3、通信中,uart的策略與架構。

軟件實戰1、外設與系統

與傳統寫驅動程序相比,STM32CubeMX代碼生成器讓驅動變得更簡單、快速,大大提高了開發效率。

STM32CubeMX不僅支持外設配置,還支持freeRTOS,不過很可惜,考慮到片子的成本,8KRAM的片子僅能跑2個靜態的線程,而且從板有集成到項目中的需求,所以從設備不使用freeRTOS。

從設備主頻48MHZ,uart外設需要對GPIO/NVIC/DMA/UART進行配置,主設備還需要配置freeRTOS。

2、調試神器-uart不管哪個項目,printf的輸出是必不可少的!

實現的關鍵點是數據通過printf函數收集到debug_pool后如何發送。

下面內容圍繞這個問題展開討論。

無os的情況下,若是需要實時性要求較高的情況下,發送需要直接調用uart驅動發送接口拋出,這種方式,效率低,cpu占用高。

一般情況下是要開一片空間,當數據收集滿后通過DMA送到uart硬件然后發出去。不過這種方式是需要一個Task,周期的拋數據。

有os的系統,這里需要加消息隊列或者內存池,還需要一個獨立的線程進行處理。

比較復雜,這里不展開討論。

對上圖思想進行解釋:1、接收部分首先考慮如何接收數據,是采用run_buf的形式還是一個字節中斷的方式;

2、數據接收后,要思考幀識別,確定一幀數據后進入CRC校驗;

3、校驗通過后再進行協議的解析和處理;

5、數據發送部分先對數據進行打包。記住多線程的處理要對數據進行保護,防止tx_buf里的數據被刷寫;

6、通過打包后的數據要CRC加碼校驗,然后再發出去;

值得注意的是:要將這些公共的CRC和收發任務單獨提出來,與協議相關的內容獨立出來,這樣協議層的變得不會引起程序大的改動;

Part 03

軟件設計-外設uart

引言:相信很多工程師們都曉得:調試串口不僅扮演打印信息的角色,還得有配置設備、設備參數輸入等功能。如果開發window上位機界軟件是成本上和時間上都不劃算;要是在Linux這種跨平臺下還得開發一套軟件。所以做一個類似Linux命令這樣的串口軟件就顯得很有必要!

直接用像SecureCRT這類軟件連接串口即可調試,與設備進行交互,把這個軟件命名為mshel。

另外,直接與pc進行這樣的數據流存在亂碼和丟數據的現象,這里使用了為二者制定的私有協議。

本期內容:1、mshell的原理與結構;2、pc交互的通信協議;

軟件實戰:mshell的設計原理和思路:mshell是設備開發人員與設備進行配置管理的交互接口,主要功能如下:1)設備log打印顯示功能;

2)可對設備進行配置和控制;

3)具有Linux的終端控制臺類似的功能,可以顯示功能菜單和參數輸入等功能,給出功能菜單示例;

SecureCRT軟件的串口數據交互特點:

1)對與窗口輸入的字母和數字,是以ASCII的形式通過串口下發到設備;

2)窗口輸入一個字符,串口會下發一個字符,回車、退格和空格都是一個字節,左右上下鍵是2字節;

3)軟件接收到字符后回顯到窗口,回車0x0D回顯沒有反應, 行跳轉;

4)給出用到的一些雙字節按鍵:

KEY_UP = 0x5B410000,

KEY_DOWN = 0x5B420000,

KEY_LEFT = 0x5B440000,

KEY_RIGHT = 0x5B430000,

根據以上特點可知,實現mshell進行需要回顯功能,就是收到啥發啥,提示程序員設備收到所下發的字符。

需要對收到的字符進行存儲和解析,需要設計命令解析器

命令解析器處理完指令及其數據后,交給執行單元。

執行單元的設計包括一級指令執行,即選擇功能模塊,比如uart相關指令,之后進入到子模塊處理程序。

核心模塊的功能如下:

1)echo回顯模塊是將pc發來的字符實時的發回到pc的終端,提示輸入有效;

2)cmd_analysis命令解析器是將收到的字符進行處理,要知道輸入參數的個數,指令以及數據;

3)cmd_dispatch命令調度器是對注冊的命令塊進行回調處理;

1)物理層主要是硬件線路數據,軟件驅動的收發;采用標準3線制 Uart 物理接口、波特率待定、 8個數據位,無校驗,1個停止位。

2)數據鏈路層是對接收一包數據的完整性已經正確的保證,這里使用crc校驗;

3)傳輸層是實現數據包的順序傳輸,和穩定性,具體的協議幀定義如下:

aef57c86-7b95-11eb-8b86-12bb97331649.png

應答幀在應用層payload中進行,counter計數避免幀重復,對于協議的實現,僅mcu部分,上位機部分使用Linux,將數據存到文件中即可。

本次更新內容如下:

Part 04

無線通信模塊的協議

引言: 前面的uart相關的開發主要的功能是連接采集設備和上位機的接口功能,設備想要實現無線數據傳輸,離不開NRF24L01,這個模塊的傳輸方式是半雙工模式,也就是同一時刻僅能單側傳輸數據,所以如何準確的實現數據雙向的收發,本期的通信協議就非常關鍵了。

本期內容:

1、NRF24L01模塊的重要理解;

2、數據收發原理;

項目實戰:

一、模塊的重要理解

1、關于頻率:

2.4GWiFi頻段和和nrf24l01有很大一塊重疊,如果出現嚴重的丟包,很有可能受到了WiFi的的干擾,將nrf2401的頻段設置為高于2490MHz可以顯著降低丟包率。nrf2401做了3種固定的波特率,分別是 250Kbps/1Mbps/2Mbps,在使用時指定一個即可。需要注意的是,當nrf2401正處于接收數據或發送數據的工作狀態時,不要修改波特率,否則會數據包會出錯。

2、關于功耗:

掉電模式,nrf2401消耗的電流為900nA,比全火力狀態低了4個數量級,所以為了省電,大多數情況下是可以讓模塊處于此模式,當有數據收發的時候再開機。就這樣讓模塊關機也有個缺點,就是當對數據實時性要求很高的情況下,nrf24l01啟動時要一次開啟各個關閉的模塊,相對來說有點耗時,容易丟數或者延遲發送。

熱待機模式(Standby),相對掉電模式相比,熱待機模式下僅僅是將射頻相關電路停掉來達到省電的目的,這樣的話,這個模塊即達到節點的目的又加快的啟動時間,但它的功耗交完全掉電相比還是要高,大約在30-300uA這個范圍,但是也算很省電了。

射頻功耗控制,全火力模式下(也就是模塊處于正常收發數據的狀態下),模塊也有對射頻功耗控制的手段,達到省電的目的。nrf2401模塊的射頻功耗被劃分為4個檔次,分別為0/1/2/3,分別對應的-18/-12/-6/0dBm。其他方面同等條件下,功率越小傳輸距離越小,可以根據實際情況自行選擇使用什么功率配置。值得注意的是,射頻功率控制只能控制對外發送數據,接收數據的功率是沒辦法控制的。

nfr24l01的通信類型屬于半雙工,就是說再同一時刻,一個模塊僅能收數或者發數,無法做到同時收發。為了保證數據的準確穩定的傳輸,雙方做了一個約定,即通信流程。

二、數據收發原理

1、設備地址:

與mac地址一樣,每一個nrf2401設備有一個唯一的地址(可理解為設備ID)來充當設備的身份證,地址長度可以設3/4/5的任選一。設備發送時,先發對端的設備地址,然后再發數據。若配置了硬件ack應答,則每次收到數據后,會像對端回復ack應答。

Nrf2401有6個地址通道,也就是說模塊有6個數據通道,同時可和6個設備進行交互也可以是6個通道的多路數據轉發等設計。6個通道的地址寬度配置是要保持一致,不支持6個同通道下的不同地址寬度的配置。

* channel0和channel1地址寬帶可隨意配置,最大寬度為5,低字節兼容3/4寬度的地址;

* channel2-channel5,最低字節可隨意配置其他字節與channel共享;

* 向同一設備發送數據,即使信道(地址)不同,也會存在干擾可能接收數據失敗;

2、數據校驗:

nrf2401支持CRC8/CRC16,通過配置寄存器的方式,二選一。發送設備將要發送的數據(包括地址)進行CRC計算后,添加到發送包中發出去。接收設備收到數據將數據計數后,和數據中的CRC值進行校驗,如果不匹配就丟棄;

3、長幀數據:

模塊發送最大長度為32字節,要想發送長幀,就需要分包發送,發送的數據除了周期的數據還有事件數據。周期數據一般采用單包數據,比如心跳信號。長幀數據的用來做事件發送,而且需要一包數據發送的單幀計數器來防止數據發亂發錯。設備本身替我們做了CRC校驗和地址自動匹配,如果需要一對多的收發,可以在設備的數據域再加一個地址,把硬件地址當作信道使用。

af4c7978-7b95-11eb-8b86-12bb97331649.png

說明:

*短幀的數據可以直接使用,最大長度32byte,可以周期,也可以事件;

*長幀數據不建議周期發送,一般用作事件發送類型使用;

幀格式解析:

*長幀數據為了提高數據的安全性,需要對長幀數據再次進行CRC校驗;

*count計數器是避免數據包不丟失;

*flag標識

bit 0 ,0=非ACK幀, 1=ACK幀, 若是接收幀,則是表示ACK數據或者正常數據;

bit 1, 0=非ACK幀, 1=ACK幀, 若是發送幀,這位表示告訴接收方是否需要回復ACK應答,

bit 2, 0=短幀, 1=長幀, 標識是否為長幀或者單幀;

bit3-bit4,0=第一幀,1=流控幀,2=結束幀;

4、單幀的數據

單幀比較簡單,沒有再次CRC校驗和count計數,幀格式如下:

af6c662a-7b95-11eb-8b86-12bb97331649.png

*flag標識

bit 0 ,0=非ACK幀, 1=ACK幀, 若是接收幀,則是表示ACK數據或者正常數據;

bit 1, 0=非ACK幀, 1=ACK幀, 若是發送幀,這位表示告訴接收方是否需要回復ACK應答,

bit 2, 0=短幀, 1=長幀, 標識是否為長幀或者單幀;

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2718

    瀏覽量

    47555
  • 無線通信
    +關注

    關注

    58

    文章

    4585

    瀏覽量

    143631
  • 串口
    +關注

    關注

    14

    文章

    1555

    瀏覽量

    76647

原文標題:來實戰之《嵌入式UART項目開發》步驟四:無線通信模塊的協議

文章出處:【微信號:cirmall,微信公眾號:電路設計技能】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    全球第四 科華數據蟬聯全球模塊化UPS榜單

    近日,第三方權威機構Omdia發布《2024全球模塊化UPS市場報告》,對全球模塊化UPS市場動向、市場份額及發展趨勢等進行了分析與洞察。報告顯示,作為模塊化UPS的創新引領者,科華數據在2023年
    的頭像 發表于 12-13 14:51 ?358次閱讀
    全球第四 科華數據蟬聯全球<b class='flag-5'>模塊化</b>UPS榜單

    模塊化示波器的技術原理和應用

    模塊化示波器是一種用于信息科學與系統科學領域的電子測量儀器,以下是對其技術原理及應用的詳細闡述:一、技術原理 信號轉換與顯示: 模塊化示波器利用電子示波管的特性,將肉眼無法直接觀測的交變電
    發表于 12-11 14:20

    模塊化儀器的技術原理和應用場景

    模塊化儀器是插拔式的計算機板卡,功能類似于傳統的臺式儀器,其技術原理和應用場景可以歸納如下:一、技術原理 模塊化設計:模塊化儀器使用一個框架,可以將不同類型或不同數量的功能卡插入其中,從而適應一系列
    發表于 11-28 15:09

    模塊化插座接線方法有哪些

    模塊化插座,也稱為模塊化電源插座或模塊化PDU(Power Distribution Unit),是一種可以根據需要靈活配置電源插座和接口的設備。這種設計允許用戶根據具體的用電需求,選擇不同的
    的頭像 發表于 10-18 09:50 ?626次閱讀

    aim模塊的功能是什么

    。AIM模塊的功能可以概括為以下幾個方面: 標準描述 :AIM模塊提供了一套標準的標記語言,使得開發者能夠以一種統一的方式描述人工智能應
    的頭像 發表于 10-17 10:37 ?379次閱讀

    耐世特推出全新mPEPS系統,為所有EPS架構提供模塊化選項

    小齒輪式電動助力轉向系統。 經濟高效、靈活、可擴展 依托耐世特現有的行業領先的電動助力轉向系統構建模塊模塊化小齒輪式電動助力轉向系統能夠提供可擴展性,進而為整車廠帶來成本效益和時間效益,包括更短的開發周期以及車輛平臺上更高的零
    的頭像 發表于 08-12 21:35 ?322次閱讀

    模塊化不間斷電源和傳統差距,安裝位置方面

    模塊化UPS(不間斷電源)和傳統UPS是指不間斷電源系統的不同架構和設計。UPS系統具有多種優勢,使其成為某些應用的首選。模塊化UPS和傳統UPS有什么區別?可擴展性模塊化UPS:得益于其
    的頭像 發表于 06-25 09:34 ?338次閱讀
    <b class='flag-5'>模塊化</b>不間斷電源和傳統差距,安裝位置方面

    鋰電池是模塊化好還是成組好?

    鋰電池的模塊化和成組是兩種不同的設計理念,它們各自有著不同的優勢和應用場景。
    的頭像 發表于 04-29 15:17 ?895次閱讀

    為什么模塊化配線架越來越受歡迎?

    供解決方案,實現布線系統的可持續性、美觀性等。 模塊化配線架概述 眾所周知,配線架也是整個網絡布線系統的關鍵組成部分。光纖配線架是布線系統永久鏈路的閉環端,也是多個獨立鏈路的集合點,特別是當您的網絡需要二層交換連接
    的頭像 發表于 04-07 10:33 ?399次閱讀

    機房升級必備神器:模塊化精密空調的五大超能力!

    模塊化機房精密空調是一種專門為現代數據中心和機房設計的空調系統,具有以下特點和優勢: 靈活性:模塊化機房精密空調采用模塊化設計,可以根據機房的規模和需求,自由組合不同數量的空調模塊
    的頭像 發表于 03-19 18:24 ?1262次閱讀
    機房升級必備神器:<b class='flag-5'>模塊化</b>精密空調的五大超能力!

    模塊化機房:數據中心的未來

    隨著數字轉型加速,數據中心已成為企業運營的核心。傳統的數據中心面臨空間利用不足、能源效率低下、擴展性差和維護成本高等問題。模塊化機房應運而生,它不僅克服了傳統設計的局限,還為數據中心的建設和運營帶來了革命性的改變。本文將探討模塊化
    的頭像 發表于 03-12 17:26 ?939次閱讀

    什么是模塊化機房?

    在這個數據驅動的時代,數據中心的作用變得日益重要。而模塊化機房,作為一種創新的數據中心解決方案,正在逐漸改變我們構建和管理這些關鍵設施的方式。但究竟什么是模塊化機房呢?它又為何受到越來越多行業的青睞?在本文中,我們將一探究竟。
    的頭像 發表于 03-12 15:05 ?1502次閱讀

    模塊化UPS是什么?模塊化UPS電源并機的優點

    模塊化UPS是什么?模塊化UPS電源并機的優點? 模塊化UPS是一種將UPS電源拆分為多個獨立模塊的解決方案。每個
    的頭像 發表于 01-10 15:16 ?1382次閱讀

    什么是模塊化電池?鋰電池模塊包裝運輸要求

    和可靠性。在模塊化電池系統中,每個電池單元都可以被獨立管理,這樣就可以避免一個電池單元發生故障影響整個電池系統的使用。 模塊化電池的設計結構非常靈活,可以根據需求來選擇單元數量和連接方式。通過增加或減少單元
    的頭像 發表于 01-10 11:42 ?1334次閱讀

    什么是模塊化鋰電UPS?模塊化UPS支持鋰電池嗎?

    什么是模塊化鋰電UPS?模塊化UPS支持鋰電池嗎? 模塊化鋰電UPS是一種基于鋰電池技術的不間斷電源系統(UPS),它的主要特點是可以根據需求進行模塊化擴展和靈活配置。
    的頭像 發表于 01-09 15:51 ?932次閱讀
    主站蜘蛛池模板: 国产在线观看免费| 在线观看视频一区| 国产一区二区在线免费观看| 中文在线中文资源| 少妇性饥渴BBBBBBBBB| 老司机午夜影院试看区| 国产人成高清在线视频99| av免费网站不卡观看| 夜里18款禁用的免费B站动漫| 日韩一本道无码v| 男人插曲女人的叫声| 精品亚洲国产熟女福利自在线| 国产成人精品s8p视频| asian4you裸模| 1级午夜影院费免区| 亚洲日韩一区精品射精| 无码射肉在线播放视频| 日本夜夜夜| 妞干网手机免费视频| 久久这里只有精品2| 黑人阴茎插女人图片| 国产精品视频成人| 福利社的阿姨| 成 人 网 站毛片| bdsm中国精品调教ch| 99re久久这里只有精品| 最近中文字幕高清中文字幕MV| 亚洲一区高清| 亚洲日韩在线观看| 亚洲精品久久无码AV片WWW| 午夜一级免费视频| 玩弄人妻少妇500系列网址| 肉多荤文高h羞耻校园| 青柠在线视频| 秋霞影音先锋一区二区| 欧美最猛12teevideos| 欧美日韩无套内射另类| 欧美精品高清在线观看| 欧美人xxxxx| 人妖xxhdxx| 色婷婷国产精品视频一区二区|