1. 程式人生 > >對工程實踐——基於智慧物聯結點的設計與實現進行需求分析和建模

對工程實踐——基於智慧物聯結點的設計與實現進行需求分析和建模

一、前言

  物聯結點的設計與實現是基於開發板ESP-WROVER_KIT_V4.1展開的,專案的程序展開按照模組化進行,也就是分為不同的硬體設計進行,以下的分析實現均以嵌入式的變通方式展示。

二、用例建模

  首先需要明白用例,用例是一個業務過程;業務過程就是某硬體裝置在開發板這一特定領域上完成某些特定的任務需要進行的一系列活動。首先確定基本要素,ESP-WROVER_KIT_V4.1是接受者,Linux環境工程師是用例執行者。這裡,工程師值負責了程式碼和API的邏輯整合和實現,更多的實現在開發板系統對各個模組的操作,但這裡,從人的角度出發很容易理解,使用開發板這一過程是一個明確的用例過程。

現在對用例進行抽象層級分析(舉例):

  • 抽象用例:①計算輸入訊號的上升沿或下降沿脈衝的數量;②RMT脈衝傳送或接受;③模擬數字轉換。
  • 高層用例:①計算輸入訊號的脈衝數量這一用例的開始狀態是LED控制塊生成脈衝,終止狀態是PCNT計算得出數值;②傳送或接受RMT脈衝訊號這一用例的開始狀態配置傳送或接受模式的引數,終止狀態是RTM發出或接受一系列脈衝訊號;③數字量和模擬量的相互轉化這兩個用例的開始狀態是接受相對應的型別訊號,終止狀態是得到目的對應的型別訊號。
  • 擴充套件用例:①程式碼控制LED控制塊生成脈衝——PCNT收到訊號並執行計數器——進行中斷條件判斷——反饋傳遞數值(紅色和藍色分別代表參與者)

三、業務領域建模

  首先要明確需求中的業務領域內的名詞或名詞短語既可以是一個類名,也可以是一個屬性名。區別它們的關鍵是能否單獨存在,即屬性是用來描述物件或儲存物件的狀態資訊。比如,脈衝計數器可以是一個類單獨存在,但暫存器必須依附著具體的硬體裝置才具有實際的意義,如16位帶符號計數器等。

針對工程實踐的具體物件,分析其間的關係:

  • PCNT模組的業務建模

  • RMT模組的業務建模

  • ADC模組的業務建模

  • 結合開發板整合業務領域建模

四、資料模型

  • PCNT模組

  • 配置和讀取
變數名 型別 唯一 含義
pcnt_unit pcnt_unit_t 單元編號
evt_type pcnt_evt_type_t 監聽事件型別
channel pcnt_channel_t PCNT通道號
pulse_io int 脈衝訊號輸入GPIO
ctrl_io int 控制訊號輸入GPIO
count int16_t* 接受計數器值的指標
value pcnt_unit_t unit 接受PCNT事件的計數器值的指標

 

 

 

 

 

 

 

 

 

 

  • 計算上升沿脈衝數量
變數名 型別 唯一 含義
pos_mode pcnt_count_mode_t 檢測上升沿時為計數器模式
hctrl_mode pcnt_ctrl_mode_t 控制訊號為高電平時的計數器模式

 

 

 

 

 

  • 計算下降沿脈衝數量
變數名 型別 唯一 含義
neg_mode pcnt_count_mode_t 檢測上升沿時為計數器模式
lctrl_mode pcnt_ctrl_mode_t 控制訊號為低電平時的計數器模式

 

 

 

 

 

  • RMT模組

  • 配置和讀取
變數名 型別 唯一 含義
channel rmt_channel_t RMT通道
rmt_item const rmt_item32_t * RMT專案陣列的頭點
item_num int RMT資料項編號
mem_offset uint16_t  記憶體的索引偏移量

 

 

 

 

 

 

 

  • 傳送RMT脈衝
變數名 型別 唯一 含義
wait_tx_done bool

設定為true以等待所有資料傳送完成

 

 

 

 

  • 接受RMT脈衝
變數名 型別 唯一 含義
rx_idx_rst bool

設定為真以重置接收器的記憶體索引

 

 

 

 

函式名 返回  解釋
rrmt_rx_start() ESP_ERR_INVALID_ARG 引數錯誤 啟動接收器
ESP_OK 成功
rrmt_rx_stop() ESP_ERR_INVALID_ARG 引數錯誤 停止接受
ESP_OK 成功

 

 

 

 

 

 

 

  • AD模組

函式名 返回  解釋
adc1_config_width() ESP_OK 成功

配置ADC 1捕獲寬度

同時為ADC 1啟用輸出反轉

ESP_ERR_INVALID_ARG 引數錯誤
adc1_config_channel_atten() ESP_ERR_INVALID_ARG 引數錯誤

在ADC 1上設定特定通道的衰減

並配置其相關的GPIO引腳複用器

ESP_OK 成功
adc2_config_channel_atten() ESP_ERR_INVALID_ARG 引數錯誤

在ADC 2上設定特定通道的衰減

並配置其相關的GPIO引腳複用器

ESP_OK 成功
adc1_get_raw() -1:引數錯誤 從單個通道讀取ADC 1
其他:ADC 1通道讀取的資料
adc2_get_raw() esp_OK如果成功的話 從單個通道讀取ADC 2
esp_err_timeout其他控制器正在使用ADC2,且請求超時

 

 

變數名 型別 唯一 含義
channel adc1_channel_t ADC 1通道配置
atten adc_atten_t 衰減等級

 

 

 

 

五、概念原型及工作過程

首先確定概念和概念原型是兩種意思

  • 概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論。
  • 概念模型是是一種虛擬的、理想化的軟體產品形式。所以概念是一種內建的內容,概念模型是一種輪廓內容。

  基礎具體工程實踐,概念原型就是已知API結合資料模型設計施加在具體用例(產生脈衝、接受脈衝、計算脈衝數量、計算轉型後的電壓數值)的形式化表達。使用者通過嵌入式開發板中的一些硬體模組,在Linux的環境下,對暫存器賦值讓CPU執行一系列的操作,然後燒錄到開發板上,最後通過監視器檢視預期結果。

六、總結

  因為此工程實踐偏向於硬體,在進行建模分析時,難以抽象出很好的用例和模型,可能此篇文章的用例建模、業務領域建模以及資料建模不是很好。但總體來說,這一次的需求分析和概念原型的作業讓我對我們組的工程實踐有了更明晰的理解和認識,這會幫助我更好的完成後續的工程實踐。

 

參考資料:https://gitee.com/mengning997/se/tree/master/ppt

&n