国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

《來實戰(zhàn)》第五期:老司機教你做一款人機交互的串行數(shù)據(jù)采集儀(更新中......)

2020/12/14
2265
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2020-09-16-uart-24lo1-com.7z

共1個文件

此處最終顯示為電路方案的作者信息(僅在“來實戰(zhàn)”模板下生效)


引言:

親愛的工程師朋友和喜愛電子的朋友,大家好,我是火舞青春,也是本期“來實戰(zhàn)”項目《串行數(shù)據(jù)采集儀》的執(zhí)行官。嵌入式軟件這個行業(yè)涉及甚廣,從我們身邊的電視、冰箱、洗衣機,到我們的手機,再到交通、到醫(yī)療、軍事無處不在。在項目的開發(fā)過程中,使用調(diào)試工具是必不可少的。串口簡單靈活的特性常被工程師用作代碼的調(diào)試工具,它的另一個名字叫uart。

說到uart,相信很多工程師都熟透了,掌握一個uart,可以說是已經(jīng)邁進了嵌入式軟件的殿堂,所以uart也常被用作嵌入式入門的必備功課。那既然都熟了,那為什么還拿出來說呢,帶著這樣的一個問題,跟著我一起深入的了解我們的這個項目,一起探討uart背后那些不為人知的故事。

目的意義:

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

內(nèi)容:

本期內(nèi)容可以了解到以下幾個方面:

1、模塊化代碼的設(shè)計思路,開發(fā)思想和獨立模塊開發(fā)模型;

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

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

4、通信協(xié)議的制定和協(xié)議棧的開發(fā);

項目簡介:

項目采用雙mcu-STM32F030C8T6和RF24L01無線模塊實現(xiàn)主從設(shè)備的上下行數(shù)據(jù)傳輸,在此基礎(chǔ)上增加與pc的通信和數(shù)據(jù)記錄功能,實現(xiàn)離線數(shù)據(jù)同步功能;

功能指標(biāo)

基礎(chǔ)功能:

1、實現(xiàn)雙mcu數(shù)據(jù)的上下行無線傳輸,波特率為115200;

2、實現(xiàn)主設(shè)備與pc機的通信,并實現(xiàn)uart調(diào)試功能;

擴展功能:

1、can數(shù)據(jù)、spi 、iic的數(shù)據(jù)的采集傳輸;

2、離線存儲功能;

開發(fā)準(zhǔn)備及其環(huán)境

硬件環(huán)境 具備RF24L01模塊接口的STM32開發(fā)板2塊、RF20L01無線模塊2塊;

開發(fā)工具 STM32J-link仿真器、串口TTL轉(zhuǎn)換小板各1;

軟件環(huán)境 KIEL-MDK 、串口助手 ;

開發(fā)計劃(第五期的第1板塊,為期1個月)

節(jié)點1:完成技術(shù)指標(biāo)的確定,開發(fā)板、硬件模塊及其調(diào)試器采購到位,完成軟硬件的架構(gòu)設(shè)計;

節(jié)點2:調(diào)試接口與pc的交互程序的開發(fā);

1、 初建工程,完成uart1調(diào)試接口程序的開發(fā);

2、 完成uart2與pc機的交互程序的設(shè)計;

節(jié)點3:定制NRF24L01的傳輸協(xié)議,并完成開發(fā)

1、驅(qū)動的開發(fā)與BSP的開發(fā);

2、協(xié)議的開發(fā);

節(jié)點4:整體調(diào)試、測試;

節(jié)點5:編寫項目總結(jié)。

--------會繼續(xù)分享一些uart數(shù)據(jù)傳輸過程中各個步驟和重難點,如溝通交流,請加Q群:315683522

步驟一:項目概述及其環(huán)境的搭建

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

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

 

第二步驟:軟件設(shè)計-外設(shè)uart

導(dǎo)言

uart外設(shè)是開發(fā)調(diào)試的重要手段,也是板級通信常用的通信方式。

對于耳熟能詳?shù)膗art,你了解多少呢?

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

本期內(nèi)容讓我?guī)е蠹抑攸c探討一下uart的軟件設(shè)計。

內(nèi)容提要

1、uart的基本概述和STM32中uart驅(qū)動HAL層的配置;

2、調(diào)試打印中,uart的數(shù)據(jù)發(fā)送策略;

3、通信中,uart的策略與架構(gòu)。

軟件實戰(zhàn)

1、外設(shè)與系統(tǒng)

與傳統(tǒng)寫驅(qū)動程序相比,STM32CubeMX代碼生成器讓驅(qū)動變得更簡單、快速,大大提高了開發(fā)效率。

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

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

2、調(diào)試神器-uart

不管哪個項目,printf的輸出是必不可少的!

實現(xiàn)的關(guān)鍵點是數(shù)據(jù)通過printf函數(shù)收集到debug_pool后如何發(fā)送。

下面內(nèi)容圍繞這個問題展開討論。

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

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

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

比較復(fù)雜,這里不展開討論。

對上圖思想進行解釋:

1、接收部分首先考慮如何接收數(shù)據(jù),是采用run_buf的形式還是一個字節(jié)中斷的方式;

2、數(shù)據(jù)接收后,要思考幀識別,確定一幀數(shù)據(jù)后進入CRC校驗

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

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

6、通過打包后的數(shù)據(jù)要CRC加碼校驗,然后再發(fā)出去;

值得注意的是,要將這些公共的CRC和收發(fā)任務(wù)單獨提出來,與協(xié)議相關(guān)的內(nèi)容獨立出來,這樣協(xié)議層的變得不會引起程序大的改動;

--------后續(xù)會繼續(xù)分享一些SPI和NRF2401數(shù)據(jù)傳輸各個步驟和重難點。

如溝通交流,請加Q群:315683522


第三步驟:調(diào)試接口與pc的交互程序的開發(fā)

引言

相信很多工程師們都曉得:調(diào)試串口不僅扮演打印信息的角色,還得有配置設(shè)備、設(shè)備參數(shù)輸入等功能.

如果開發(fā)window上位機界軟件是成本上和時間上都不劃算;

要是在Linux這種跨平臺下還得開發(fā)一套軟件.

所以做一個類似Linux命令這樣的串口軟件就顯得很有必要!

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

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

本期內(nèi)容:

1、mshell的原理與結(jié)構(gòu);

2、pc交互的通信協(xié)議;

軟件實戰(zhàn)

、mshell的設(shè)計原理和思路;

mshell是設(shè)備開發(fā)人員與設(shè)備進行配置管理的交互接口,主要功能如下:

1)設(shè)備log打印顯示功能;

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

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

?SecureCRT軟件的串口數(shù)據(jù)交互特點:

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

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

3)軟件接收到字符后回顯到窗口,回車0x0D回顯沒有反應(yīng),rn行跳轉(zhuǎn);

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

KEY_UP = 0x5B410000, KEY_DOWN = 0x5B420000,

KEY_LEFT = 0x5B440000, KEY_RIGHT = 0x5B430000,

根據(jù)以上特點,實現(xiàn)mshell進行需要回顯功能,就是收到啥發(fā)啥,提示程序員設(shè)備收到所下發(fā)的字符。需要對收到的字符進行存儲和解析,需要設(shè)計命令解析器。命令解析器處理完指令及其數(shù)據(jù)后,交給執(zhí)行單元。執(zhí)行單元的設(shè)計包括一級指令執(zhí)行,即選擇功能模塊,比如uart相關(guān)指令,之后進入到子模塊處理程序。

核心模塊的功能如下:

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

2)cmd_analysis命令解析器是將收到的字符進行處理,要知道輸入?yún)?shù)的個數(shù),指令以及數(shù)據(jù);

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

1)物理層主要是硬件線路數(shù)據(jù),軟件驅(qū)動的收發(fā);采用標(biāo)準(zhǔn)3線制 Uart 物理接口、波特率待定、 8個數(shù)據(jù)位,無校驗,1個停止位。

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

3)傳輸層是實現(xiàn)數(shù)據(jù)包的順序傳輸,和穩(wěn)定性,具體的協(xié)議幀定義如下:

應(yīng)答幀在應(yīng)用層payload中進行,counter計數(shù)避免幀重復(fù),對于協(xié)議的實現(xiàn),僅mcu部分,上位機部分使用Linux,將數(shù)據(jù)存到文件中即可。


第四步驟:無線通信模塊的協(xié)議


第五步驟:整體調(diào)試、測試(更新中......敬請期待)


第六步驟:編寫項目總結(jié)(更新中......敬請期待)

版權(quán)聲明:本文內(nèi)容為電路城原創(chuàng)內(nèi)容,未經(jīng)授權(quán)禁止轉(zhuǎn)載,侵權(quán)必究!

  • 2020-09-16-uart-24lo1-com.7z
    下載
    描述:僅實現(xiàn)uart驅(qū)動和SPI驅(qū)動

相關(guān)推薦

库尔勒市| 平果县| 宁远县| 马关县| 建阳市| 辉县市| 南川市| 始兴县| 台中市| 济源市| 木里| 荔浦县| 洪湖市| 台山市| 闵行区| 平顶山市| 常宁市| 河东区| 喀什市| 陆河县| 方山县| 抚州市| 阿瓦提县| 惠安县| 邵武市| 句容市| 鄂托克旗| 易门县| 小金县| 东阳市| 桐城市| 聂荣县| 全椒县| 新营市| 新乐市| 襄城县| 泰安市| 延吉市| 仁化县| 沾化县| 军事|