STM32F412應用開發筆記之四:與遠紅外炭氫感應器通訊

來源:互聯網
上載者:User

標籤:ever   amp   stm32f4   arm   stat   int   資料   length   新源   

遠紅外炭氫感應器是在多組分氣體感應器中用來檢測甲烷和丙烷濃度的,採用單匯流排串列通訊,TTL電平。所以我們需要用到UART口來實現與遠紅外炭氫感應器的通訊。

遠紅外感應器就是這個樣子的:

再來一張進氣和出氣口的照片:

 

我們設計的是使用USART1和USART3,但由於NUCLEO-F412ZG實驗板上USART1的引腳PA9和PA10已經用於USB連接埠,USART3的引腳PD8和PD9也已經用於串連ST-LINK的串列通訊,所以我們使用了USART2和USART6。

 

查看NUCLEO-F412ZG原理圖後我們發現USART2和USART6也正好引到CN7和CN9方便接線。USART2所使用的引腳為PD5(CN9_6)和PD6(CN9_4),USART6所使用的引腳為PC6(CN7_1)和PC7(CN7_11)。如紅框部分:

 

在STM32CubeMX中配置好後,首先配置串口通訊的參數,遠紅外炭氫感應器要求傳輸速率2400,8位元據位,偶校正,1位停止位,配置為輸入輸出雙向。配置介面如下:

 

然後可以配置一下GPIO引腳,我們給他們起一個我們自己認為好辨認的名字,然後儲存更新源碼:

 

配置完成在源碼中如下:

huart2.Instance = USART2;

huart2.Init.BaudRate = 2400;

huart2.Init.WordLength = UART_WORDLENGTH_8B;

huart2.Init.StopBits = UART_STOPBITS_1;

huart2.Init.Parity = UART_PARITY_EVEN;

huart2.Init.Mode = UART_MODE_TX_RX;

huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart2.Init.OverSampling = UART_OVERSAMPLING_16;

 

huart6.Instance = USART6;

huart6.Init.BaudRate = 2400;

huart6.Init.WordLength = UART_WORDLENGTH_8B;

huart6.Init.StopBits = UART_STOPBITS_1;

huart6.Init.Parity = UART_PARITY_EVEN;

huart6.Init.Mode = UART_MODE_TX_RX;

huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart6.Init.OverSampling = UART_OVERSAMPLING_16;

配置好後開始編寫元紅外感應器的通訊函數,該通訊資料描述如下:

//0x00C0        Modbus_address  模組當前Modbus地址    可讀寫

//0x0080到0x0083 DeviceType      裝置的型號   可讀寫

//0x0084到0x0085 SoftwareVersion 軟體版本    唯讀

//0x0086到0x0089 Internal device number  裝置序號   唯讀

//0x0005        MOD 氣體濃度設定值 唯讀

//0x000A        Concentration   氣體濃度    唯讀

//0x0003        T_module (0.1x°C)       感應器內部溫度 唯讀

//0x0045        Alarm_Level     主警示限值   可讀寫

//0x0044        Warn_Level      預警示限值   可讀寫

//0x0047        IR_4tagneu      零點的強度測量 可讀寫

//0x0009        Statusflags     狀態資訊    唯讀

      //Flag 0 Testflag value ?1“ with device test

      //值“1”表示儀器處於測試狀態

      //Flag 1 Warmup value ?1“ approx. 10s after start

      //值“1”表示啟動後大約10秒預熱

      //Flag 2 Syserr value ?1“ System Error

      //值“1”表示系統錯誤

      //Flag 3 Alarm value ?1“ if main gas alarm warning

      //值“1”表示氣體主警示開始工作

      //Flag 4 Warn value ?1“ if gas pre-alarm warning

      //氣體預警示開始工作

      //Flag 5 Startup value ?1“ in the start-up phase (less than 90sec)

      //值“1”表示處於啟動階段(至少90秒)

      //Flag 6 Korr value ?1“ if S-MODULE is temperature-compensated

      //值“1”表示S-MODULE提供溫度補償功能

      //Flag 7 mw_ok value ?1“ if zero point was set

      //值“1”表示零點已設定

根據上述描述我哦們便寫相關函數,由於元嗎較多再次不做過多描述,編完調試改錯,最後運行成功。如下是調試運行介面。

 

再來一張在終端中顯示資料結果的:

 

由於感應器是暴露在空氣中實驗,也沒有添加校準過程,所以顯示資料接近於0值。

STM32F412應用開發筆記之四:與遠紅外炭氫感應器通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.