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

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

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

3天內不再提示

英創信息技術WinCE主板與STM32多功能模塊通訊介紹

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-06 11:12 ? 次閱讀

ETA321是英創推出的基于STM32單片機的多功能擴展模塊,可為英創現有的WinCE系統增加AD、DA、PWM、脈沖計數等功能。ETA321使用了一片STM32F103RCT6單片機,STM32F103RCT6通過其USB Device接口與英創工控主板連接通訊,STM32在WinCE系統中被當做一個串口設備,英創主板作為上位機已經固化了STM32的USB驅動程序,同時我們封裝了一組STM32與英創WinCE系統通訊的API接口函數,客戶可以利用我們提供的接口函數,把成熟的實時控制算法移植到ETA321上,快速實現與英創主板的數據通訊。在使用這些API函數時,需要遵從以下約定:

1、通訊以數據包(結構體)作為基本單元,每次通訊收/發一個數據包,每個數據包最大為255字節,數據包第一個字節為本數據包的字節長度,第二個字節為命令碼,數據包的其它內容由用戶自定義。

2、數據包的第二個命令碼字節用于表明本數據包的“身份”。當STM32接收到數據包,得到命令碼后,會根據命令碼執行相應的操作,當上位機接收到數據包后,根據命令碼就可以知道接收到了什么數據。0~127命令碼表示常規命令和數據,128~255表示實時數據或實時命令。

3、數據包和命令碼的定義在WinCE上位機端和STM32端必須完全一致。STM32必須對接收到的每個命令數據包回復一個相同命令碼的應答包,如果沒有數據需要回復,可簡單回復通用應答數據包。

下面是命令碼和數據包定義示例:

/************************* 定義命令代碼*************************/

#define MCU_GENERIC_VER_INFO 0

#define MCU_GENERIC_ADC 1

// STM32返回的實時數據命令碼

#define MCU_REALTIME_ADC (0 + MCU_REALTIME_DATA)

/*********************** 定義數據包(結構體) **********************/

// 獲取單片機固件版本信息

typedef struct

{

BYTE ucSize; // size of the structure < 256

BYTE ucCmd; // = MCU_GENERIC_VER_INFO

WORD wMajor; // major version number

WORD wMinor; // minor version number

char ucName[24]; // name of realtime driver

} MCU_VER_INFO, *PMCU_VER_INFO; // struct for Version Info

// ADC命令

typedef struct

{

BYTE ucSize; // size of the structure < 256

BYTE ucCmd; // = MCU_GENERIC_ADC

BYTE ucCH; // AD通道

DWORD dwSamplingRate; // 采樣率

} MCU_ADC, *PMCU_ADC; // struct for Version Info

// STM32通用應答數據包

typedef struct

{

BYTE ucSize; // size of the structure < 256

BYTE ucCmd; //

BYTE ucRerult;

}MCU_GENERIC_REPLY, *PMCU_GENERIC_REPLY;

WinCE上位機API函數

在WinCE上使用我們提供的API函數時,需要在工程中包含以下3個文件

#include "mcu_class.h" // API接口函數定義

#include "mcuCmdInfo.h" // 命令碼和數據包定義

#pragma comment(lib, "mcu_class.lib") // 包含庫文件

下面是API函數說明:

/**

@brief 打開MCU設備,初始化相關環境

@param None

@retval = 返回true 打開成功

**/

BOOL OpenMCU();

/**

@brief 給STM32發送控制指令

@param *pCmdInfo[in]:符合約定數據結構的命令數據

@param *pBuf[out]: 接收STM32返回數據的數據緩存,此參數可為NULL

@param dwBufSize[in]:數據緩存大小

@retval = true 發送成功,返回true僅表示數據通訊成功,命令執行情況可查看pBuf返回的數據

**/

BOOL SendCmd(BYTE *pCmdInfo, BYTE *pBuf, DWORD dwBufSize = 0);

/**

@brief 關閉MCU,釋放相關資源

@param None

@retval = true 關閉成功

**/

BOOL CloseMCU();

/**

@brief 接收STM32實時回傳數據的回調函數指針,當接收到128~255命令碼時被調用

**/

REPLYPRO MCUReplyPro;

STM32單片機API函數

在編寫STM32程序時,同樣應該包含和上位機定義一致的"mcuCmdInfo.h"文件。STM32使用API函數定義如下:

/**

* @brief USBD初始化及CDC類初始化

* @param None

* @retval None

**/

void USBCDC_Init(void);

/**

* @brief 查檢是否有上位機發來的命令

* @param pBuf:用于接收命令的數據緩存

* @param pBuf:用于接收命令的數據緩存大小

* @retval =0:未接收到命令 >0:接收到數據包的長度(字節數)

**/

uint8_t CheckCommand(uint8_t *pBuf, uint32_t nBufSize);

/**

* @brief 向上位機發送數據

* @param 要發送的數據緩存

* @param 要發送的數據字節數

* @retval 返回發送字節數

**/

uint8_t SendData(uint8_t *pBuf, uint32_t nSendBytes);

STM32應用程序首先需要調用USBCDC_Init初始化USB接口,然后調用CheckCommand函數檢查是否接收到上位機發來的命令,再根據命令碼執行相應的操作,調用SendData函數發送應答數據或實時數據。

下面是WinCE系統中實現讀取ETA321版本信息和實時波形數據采樣的示例程序:

#include "stdafx.h"

#include "mcu_class.h" // API接口函數定義

#include "mcuCmdInfo.h" // 命令碼和數據包定義

#pragma comment(lib, "mcu_class.lib") // 包含庫文件

// 聲明實時數據處理回調函數

static void CALLBACK MCUReplyPro(BYTE *buf, DWORD buflen);

int _tmain(int argc, _TCHAR* argv[])

{

MCU_CLASS mcu;

BYTE Buf[MAX_BUF_SIZE];

TCHAR csBuf[MAX_BUF_SIZE];

DWORD dwSize, dwCnt = 0;

MCU_VER_INFO getVerInfo;

MCU_ADC adc;

size_t RetrunSize;

// 打開MCU設備

if(!mcu.OpenMCU()) {

return -1;

}

// 指定MCU實時數據處理回調函數

mcu.MCUReplyPro = MCUReplyPro;

// 調用SenCmd函數之前必須初始化的個變量

getVerInfo.ucSize = sizeof(MCU_VER_INFO); // 發送的命令結構體大小(字節數)

getVerInfo.ucCmd = MCU_GENERIC_VER_INFO; // 命令代碼:獲取MCU版本信息

dwSize = sizeof(Buf); // 用于接收MCU數據的緩存大小

if(mcu.SendCmd((BYTE *)(&getVerInfo), (BYTE *)&getVerInfo, dwSize)) {

// 窄字符轉寬字符

mbstowcs_s(&RetrunSize, csBuf, _countof(csBuf), getVerInfo.ucName, _TRUNCATE);

OutputMessage(TEXT("mcu-ver %x-%x '%s'\r\n"), getVerInfo.wMajor,getVerInfo.wMinor,csBuf);

}

else {

OutputMessage(TEXT("send command:%d failed!!!\r\n"), getVerInfo.ucCmd);

}

// 調用SenCmd函數之前必須初始化的變量

adc.ucSize = sizeof(MCU_ADC); // 發送的命令結構體大小(字節數)

adc.ucCmd = MCU_GENERIC_ADC; // 命令代碼:獲取MCU版本信息

adc.ucCH = 0; // 設備ADC通道

adc.dwSamplingRate = 10000; // 設置ADC采樣率KHz

if(!mcu.SendCmd((BYTE *)(&adc), NULL)) {

OutputMessage(TEXT("send command:%d failed!!!\r\n"), adc.ucCmd);

}

while(1) {

Sleep(1000);

if(dwCnt > 10) // 10S后退出

break;

}

adc.dwSamplingRate = 0; // 停止ADC采集

if(!mcu.SendCmd((BYTE *)(&adc), NULL)) {

OutputMessage(TEXT("send command:%d failed!!!\r\n"), adc.ucCmd);

}

Sleep(1000);

// 關閉MCU設備,釋放相關資源

mcu.CloseMCU();

return 0;

}

// 實時數據處理回調函數

void CALLBACK MCUReplyPro(BYTE *buf, DWORD buflen)

{

PMCU_ADC_DATA pADCData;

static DWORD cnt = 0;

pADCData = (PMCU_ADC_DATA)buf;

cnt += pADCData->ucSize;

// 處理實時數據......

}

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

    關注

    7

    文章

    6085

    瀏覽量

    35296
收藏 人收藏

    評論

    相關推薦

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?171次閱讀

    可調時測溫計算的多功能時鐘代碼及仿真

    本項目基于51單片機,LCD1602,DS18B20,AT24C02,DS1302,打造了一個擁有二級菜單的多功能時鐘,時鐘共有四個功能模塊,一是時間查看,二是時間修改,三是溫度查看,四是計算BMI,具體操作見程序和仿真 ? ? ? ? ? ? ? ? ? ? ? ? ?
    發表于 11-27 15:16 ?0次下載

    光伏電站無人機智能巡檢系統各功能模塊

    光伏電站無人機智能巡檢系統各功能模塊 光伏電站無人機智能巡檢系統是一個集成了先進技術的綜合性解決方案,旨在提高光伏電站巡檢的效率和準確性。該系統主要由以下幾個功能模塊組成,每個模塊都發
    的頭像 發表于 11-11 16:47 ?229次閱讀
    光伏電站無人機智能巡檢系統各<b class='flag-5'>功能模塊</b>

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?462次閱讀

    MES系統的功能模塊詳解

    生產流程,提高生產效率和產品質量。以下是MES系統的主要功能模塊介紹: 生產調度管理 : 功能 :MES系統通過生產調度模塊,根據訂單需求、設備狀態、物料供應等因素,制定合理的生產計
    的頭像 發表于 10-27 09:27 ?377次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統的核心組件,是一種用于控制和數據處理的計算機硬件,其設計旨在嵌入特定設備中執行專門任務。嵌入式主板如同是設備的“大腦”,主要功能是根據需要管理和控制設備中的各類
    的頭像 發表于 09-30 10:05 ?449次閱讀

    FPD link主要功能模塊

    電子發燒友網站提供《FPD link主要功能模塊.pdf》資料免費下載
    發表于 09-27 11:38 ?0次下載
    FPD link主要<b class='flag-5'>功能模塊</b>

    銳恩科技,以實力打造國產單片機替代品牌!

    設計:銳恩單片機產品采用先進的低功耗設計,在保證高性能的同時,有效延長了設備的使用時間和電池壽命。這種設計特別適用于對功耗有嚴格要求的智能設備。 2、高度集成化:銳恩單片機集成了多種功能模塊,如
    發表于 09-25 09:49

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?380次閱讀

    集芯IP5561:集成無線充功能的極簡BOM多功能移動電源SOC芯片

    本帖最后由 至為芯 于 2024-7-31 14:48 編輯 集芯IP5561采用QFN48封裝技術,是一款符合WPC QI標準,集成無線充TX、QC2.0/ QC3.0/ SCP輸出快充
    發表于 07-30 18:34

    SSD架構與功能模塊詳解

    在之前的系列文章中,我們介紹了固態硬盤的系列知識,包括閃存的介質、原理,以及作為SSD大腦的控制器設計,本文將詳細介紹SSD架構以及功能模塊
    的頭像 發表于 07-27 10:30 ?1010次閱讀
    SSD架構與<b class='flag-5'>功能模塊</b>詳解

    EtherCAT總線IO模塊功能及安裝介紹

    、CclinkIE以及modbus/TCP等。IO模塊可分為多通道數字量輸入模塊、數字量輸出模塊、模擬量輸入模塊、模擬量輸出模塊以及各種
    的頭像 發表于 07-14 09:14 ?786次閱讀
    EtherCAT總線IO<b class='flag-5'>模塊</b><b class='flag-5'>功能</b>及安裝<b class='flag-5'>介紹</b>

    BIG WALNUT大核桃全面響應國家“信”號召,傾力“智”造國產芯片+國產加密安全系統通訊產品

    信息化高速發展的今天,信息技術的自主可控和信息安全已經成為國家發展的重要基石。國家信戰略的提出,旨在推動國產信息產業的崛起,實現
    的頭像 發表于 06-18 17:42 ?538次閱讀

    智慧園區設備監管的功能模塊有哪些

    應用。 智慧園區設備監管系統是一種為園區內的設備管理和運營提供智能化支持的系統。以下是關于智慧園區設備監管系統中常見的功能模塊的分析: 1. 設備臺賬: 設備臺賬是系統中記錄各個設備的基本信息和狀態的數據庫或清單
    的頭像 發表于 05-11 13:57 ?405次閱讀

    宜科FX20系列分布式I/O兩款功能模塊重磅發布

    FX20系列分布式I/O重磅發布兩款功能模塊,2通道高速計數模塊和2通道串口通訊模塊,基于高速背板總線并搭配多種耦合器,為控制系統提供更豐富的功能
    的頭像 發表于 03-07 14:19 ?823次閱讀
    主站蜘蛛池模板: 久久精品AV一区二区无码| 日本精油按摩| 国产中的精品AV一区二区| 亚洲色大成网站WWW永久麻豆| 国产精品成人网| 5g在线视讯年龄确认海外禁止进入| 欧美乱子YELLOWVIDEO| 99精彩视频在线观看| 无限资源在线观看8| 娇小萝被两个黑人用半米长| 成人动漫百度影音| 天堂在线亚洲精品专区| 国产精品亚洲视频在线观看| 91天仙tv嫩模福利| 亚洲欧美精品无码大片在线观看| 日韩成人在线视频| 麻豆产精品一二三产区区| 黑人BBCVIDEOS极品| 国产a级黄色毛片| 亚洲欧洲精品A片久久99| 色老板影视| 久久青草费线频观看国产| 99久久精品国产免费| 人人碰在线视频| 麻豆国产精品久久人妻| 久久AAAA片一区二区| 国语92电影网午夜福利| 国产精品99久久久久久人韩国| 99久久久免费精品国产| 在线观看中文| 伊人精品在线| 亚洲视频精品| 色播播电影| 日本阿v直播在线| 欧美内射深插日本少妇| 蜜臀久久99精品久久久久久做爰| 精品久久久亚洲精品中文字幕| 国产线精品视频在线观看| 国产精一品亚洲二区在线播放| 丰满老熟女白浆直流| 月夜直播视频免费观看|