国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    6107

    瀏覽量

    37071
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    卡塔爾通訊信息技術部與Ooredoo電信公司一行來訪達實智能開展培訓

    2026年1月7日至8日,卡塔爾通訊信息技術部(MCIT)以及卡塔爾Ooredoo電信公司一行來訪達實智能開展培訓。達實智能董事長劉磅、副總裁易鴻、海灣區域經理海樂姆(阿拉伯籍)等陪同接待。
    的頭像 發表于 01-09 16:03 ?717次閱讀

    國產金融主板:賦能智慧金融,驅動信產業升級

    隨著信息技術的飛速迭代,信產業已在全球范圍內崛起,成為拉動經濟增長、激活創新動能的核心力量。在信產業的關鍵布局中,智慧金融建設是重中之重,而國產金融主板的規?;瘧?,正為智慧金融建
    的頭像 發表于 12-31 09:03 ?167次閱讀
    國產金融<b class='flag-5'>主板</b>:賦能智慧金融,驅動信<b class='flag-5'>創</b>產業升級

    國產芯筑基,飛騰主板賦能信未來

    信息技術自主可控成為國家戰略的今天,信產業正從“政策驅動”邁向“市場驅動”的高質量發展新階段。作為信產業鏈的核心硬件基石,主板的國產化水平直接決定著整個
    的頭像 發表于 12-30 09:49 ?198次閱讀
    國產芯筑基,飛騰<b class='flag-5'>主板</b>賦能信<b class='flag-5'>創</b>未來

    請問CW32芯片有哪些功能模塊?

    CW32芯片有哪些功能模塊
    發表于 12-26 08:11

    可回收箱控制板關鍵功能模塊詳細介紹

    硬件。以下是可回收箱控制板關鍵功能模塊的詳細介紹。1.照明系統自動感應照明通過紅外或超聲波傳感器檢測用戶靠近,觸發LED燈帶照明,提供投遞區域的基礎照明。無人時自動
    的頭像 發表于 12-04 13:50 ?396次閱讀
    可回收箱控制板關鍵<b class='flag-5'>功能模塊</b>詳細<b class='flag-5'>介紹</b>

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

    2025年11月13日-15日,由中國教育技術協會主辦、浙江大學與中國教育技術協會網絡安全專業委員會聯合承辦,中國電子工業標準化技術協會信息技術應用創新工作委員會、浙江高校信
    的頭像 發表于 11-21 16:23 ?784次閱讀

    新時代的硬核基石:龍芯工控主板助力信產業新基建

    在數字技術重塑產業格局的今天,信產業已成為保障國家信息技術安全的核心戰略。作為工業自動化系統的大腦,工控主板的自主可控程度直接決定信創新基建的穩固性。
    的頭像 發表于 11-05 13:54 ?288次閱讀

    智慧新核心,龍芯主板助力信體系再升級

    信息技術飛速發展的當下,信體系的自主可控與創新升級已成為國家戰略層面的關鍵任務。作為信產業發展的重要基礎硬件支撐,國產工控主板正發揮著日益重要的作用。
    的頭像 發表于 08-11 09:14 ?694次閱讀

    佛瑞亞如何通過信息技術推動業務增長

    在數字化、信息化的浪潮下,信息技術已經不僅是后臺工具,更成為驅動企業發展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區信息技術總監馬瑛,了解她和團隊如何將
    的頭像 發表于 07-29 14:00 ?900次閱讀

    飛騰主板為信產業發展提高硬實力

    信息技術飛速發展的當下,信產業已成為我國實現科技自立自強、保障國家信息安全的關鍵領域。信,即信息技術應用創新,其核心目標是實現
    的頭像 發表于 07-22 18:20 ?707次閱讀

    浪潮澎湃,國產主板迎來黃金時代!

    2025年7月,表示必須在2027年底前完成信100%替代,覆蓋基礎硬件、基礎軟件等核心領域。在信息技術應用創新浪潮席卷下,國產主板作為計算機系統的骨架,正從幕后走向臺前。政策加持、技術
    的頭像 發表于 07-21 14:00 ?500次閱讀

    DEKRA德凱成為沙特通信和信息技術設備技術法規認證機構

    近日,DEKRA德凱成功獲得沙特標準、計量和質量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(Technical Regulation for Communications
    的頭像 發表于 07-15 14:27 ?917次閱讀

    科普|信是什么?一文讀懂“信息技術應用創新”戰略

    什么是信?信,即“信息技術應用創新”,是國家推動IT系統自主可控、安全可控的重要戰略工程。它不僅是技術層面的創新,更承載著保障國家網絡安全、推動產業升級和實現數字主權的重任。簡單來
    的頭像 發表于 06-13 10:06 ?8193次閱讀
    科普|信<b class='flag-5'>創</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創新”戰略

    浪潮下,國產主板有什么新的發展機遇?

    信息技術應用創新浪潮的推動下,國產主板迎來了諸多新的發展機遇。信產業旨在實現信息技術領域的自主可控,這一戰略目標為國產主板的發展提供了廣
    的頭像 發表于 05-09 09:24 ?719次閱讀
    信<b class='flag-5'>創</b>浪潮下,國產<b class='flag-5'>主板</b>有什么新的發展機遇?

    比斯特電池組綜合性能測試機:關鍵功能模塊剖析

    在電池技術飛速發展的現在,確保電池組的質量與安全是重中之重。比斯特電池組綜合性能測試機作為一款專為電池組打造的高性能測試設備,在其中扮演著不可或缺的角色。它通過一系列精心設計的關鍵功能模塊,多方位、精確地對電池組進行測試。下面我們就來深入了解這些關鍵
    的頭像 發表于 04-24 10:45 ?585次閱讀
    比斯特電池組綜合性能測試機:關鍵<b class='flag-5'>功能模塊</b>剖析