91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

英創(chuàng)信息技術EM9380多路任意脈沖發(fā)生器及應用

英創(chuàng)信息技術 ? 來源:英創(chuàng)信息技術 ? 作者:英創(chuàng)信息技術 ? 2020-01-16 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

EM9380是面向?qū)崟r控制應用的一款工控主板,這里所說的實時控制是指那些控制周期可能短至幾十微妙的控制應用。EM9380通過板上獨立運行的硬件協(xié)處理器(Cortex-M3),可很好的滿足這類應用的需求。多路任意脈沖發(fā)生器,就是按照用戶預設的流程,按設定的時間間隔(最短25us),同時更新多路(最多8路)數(shù)字輸出的電平狀態(tài),從而構成多路任意周期的脈沖信號輸出。多路任意脈沖發(fā)生器功能,可用于步進電機的控制,在紡織、印刷設備中有廣泛的應用。本文后續(xù)部分將主要介紹在應用程序中實現(xiàn)任意脈沖發(fā)生器功能的流程。

接口硬件說明

EM9380中的GPIO0–GPIO15是由其硬件協(xié)處理器直接控制的,它們均可作為任意脈沖發(fā)生器的輸出,輸出的總數(shù)不超過8路。對選定作為意脈沖輸出的GPIO,首先需要設置成輸出模式。因為在EM9380上電或復位啟動后,GPIO0 – GPIO15均處于輸出狀態(tài)的,由于內(nèi)部100KΩ上拉,其電平均為高電平(管腳懸空時)。在實際應用中,若需要脈沖輸出的初始電平為低電平,可在其管腳接10KΩ的下拉電阻至地。

接口軟件說明

為了操作GPIO0–GPIO15這組GPIO,首先需要打開硬件寫處理器的驅(qū)動程序,其設備文件名為”MCU2:”(注意是MCU2,而不是MCU1):
#include // 數(shù)據(jù)類型定義
HANDLE hMCU2;
hMCU2 = CreateFile(_T(“MCU2:”), // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)

驅(qū)動程序MCU2通過DeviceIoControl,支持以下GPIO命令:
MCU_GENERIC_GPIO_OE // 輸出使能
MCU_GENERIC_GPIO_OD // 輸出禁止,作為數(shù)字輸入
MCU_GENERIC_GPIO_SET // 輸出高電平
MCU_GENERIC_GPIO_CLR // 輸出低電平
MCU_GENERIC_GPIO_PIN // 讀取輸入管腳電平狀態(tài)
MCU_GENERIC_GPIO_OF // 實時控制輸出流

其中前5個命令通過以下的數(shù)據(jù)結構來設置相關參數(shù),從而實現(xiàn)GPIO的命令:
typedef struct
{
BYTE ucSize; // 本數(shù)據(jù)結構大小 = 17字節(jié)
BYTE ucCmd; // GPIO命令碼:MCU_GENERIC_GPIO_XXX
DWORD dwPins; // 操作的管腳位
DWORD dwStatus; // 返回的管腳電平狀態(tài)
DWORD dwPeriod; // 實時控制周期,單位us;= 0: 常規(guī)功能
bool bFlashed; // 保存本配置作為啟動缺省功能
BYTE ucChkSum; // 校驗和
} MCU_GPIO_INFO, *PMCU_GPIO_INFO; // struct for GPIO

對于本應用來說,首先需要把所選擇的GPIO設置為輸出模式,具體代碼如下:
MCU_GPIO_INFO Info; //定義結構對象
memset(&Info, 0, sizeof(MCU_GPIO_INFO));//清零
//填寫所需的參數(shù)
Info.ucSize = sizeof(MCU_GPIO_INFO);
Info.ucCmd = MCU_GENERIC_GPIO_OE; //設置為輸出模式
Info.dwPins = GPIO3 | GPIO2 | GPIO1 | GPIO0; //設置4路脈沖輸出
// 生成chksum字節(jié)
Info.ucChkSum = ChkSum(&Info, sizeof(MCU_GPIO_INFO)-1);
// 調(diào)用DeviceIoControl
if (!DeviceIoControl(hMCU2, // File handle to the driver
MCU_IOCTL_ACCESS, // I/O control code
&Info, // input buffer
sizeof(MCU_GPIO_INFO), // in buffer size
NULL, // out buffer
0, // out buffer size
NULL, // pointer to number of bytes returned
NULL)) // ignored (=NULL)
{
// 出錯處理......
return FALSE;
}

其次是設置脈沖的初始電平及脈沖的更新周期,其主要代碼如下:
memset(&Info, 0, sizeof(MCU_GPIO_INFO));//清零
//填寫所需的參數(shù)
Info.ucSize = sizeof(MCU_GPIO_INFO);
Info.ucCmd = MCU_GENERIC_GPIO_SET; //輸出的初始電平為高電平
//Info.ucCmd = MCU_GENERIC_GPIO_CLR; //輸出的初始電平為低電平
Info.dwPins = GPIO3 | GPIO2 | GPIO1 | GPIO0; //設置4路脈沖輸出
Info.dwPeriod = 25; //設置更新周期為25us

接著的生成ChkSum字節(jié)和調(diào)用DeviceIoControl操作和上一步是一樣的,不再贅述。

設置了更新周期后,硬件協(xié)處理器已處于脈沖輸出狀態(tài),只等驅(qū)動程序MCU2下傳相應的數(shù)據(jù)流了。下傳的數(shù)據(jù)流將按以下數(shù)據(jù)結構分包逐一下傳:
typedef struct
{
BYTE ucSize; //本數(shù)據(jù)結構大小 = 64字節(jié)
BYTE ucCmd; // = MCU_GENERIC_GPIO_OF
BYTE ucRawDat[60]; // 更新數(shù)據(jù)字節(jié)
BYTE ucChkSum; //
} MCU_GPIO_FLOW, *PMCU_GPIO_FLOW; // struct for GPIO

每一個更新數(shù)據(jù)字節(jié)對應著一次更新,所以一包數(shù)據(jù)可供60個更新周期使用。數(shù)據(jù)字節(jié)的格式是按GPIO的編號右對齊的,即設置的GPIO中,編號最小的那一路,其更新的bit為更新數(shù)據(jù)字節(jié)的LSB(D0),其他數(shù)據(jù)按編號遞增,向左排列至MSB(D7)。

下傳數(shù)據(jù)流,同樣需要做ChkSum,再調(diào)用DeviceIoControl:
if (!DeviceIoControl(hMCU2, //File handle to the driver
MCU_IOCTL_ACCESS, // I/O control code
&Flow, // input buffer
sizeof(MCU_GPIO_FLOW), // in buffer size
NULL, // out buffer
0, // out buffer size
NULL, // pointer to number of bytes returned
NULL)) // ignored (=NULL)
{
// 出錯處理......
return FALSE;
}

數(shù)據(jù)更新流程說明

對任意脈沖發(fā)生器功能,EM9380硬件協(xié)處理器內(nèi)部設置有一對256字節(jié)的乒乓Buffer。這樣驅(qū)動程序MCU2在下傳數(shù)據(jù)包時,每次可發(fā)送4個數(shù)據(jù)包(第一次下傳1個包即可),這樣可進一步提高主CPU的工作效率。對25us更新周期來說,就表示驅(qū)動程序下傳數(shù)據(jù)的間隔為6ms。一旦第一包數(shù)據(jù)下傳至硬件協(xié)處理器,實質(zhì)性啟動任意脈沖波形輸出后,當有空閑的乒乓Buffer時,硬件協(xié)處理器會立即通知驅(qū)動程序MCU2。應用程序可設置專門線程獲取數(shù)據(jù)請求事件,從而啟動數(shù)據(jù)下傳。其基本的流程如下:

DWORD dwReturn = 0; // 返回狀態(tài),= 1:數(shù)據(jù)請求,= 0:超時
DWORD dwTimeout = 12; // 12ms,2倍正常下傳間隔
// 初始下傳一個數(shù)據(jù)包,然后進入主循環(huán)。
// ......
// 主循環(huán):等待下傳數(shù)據(jù)請求
for(; ;)
{
if (!DeviceIoControl(hMCU2, // File handle to the driver
MCU_IOCTL_WAIT_FOR_DATA, // I/O control code
&dwTimeout, // input buffer
sizeof(DWORD), // in buffer size
NULL, // out buffer
0, // out buffer size
&dwReturn, // pointer to number of bytes returned
NULL)) // ignored (=NULL)
{
// 出錯處理......
}
if(dwReturn)
{
// 下傳數(shù)據(jù)包(4包)......
dwReturn = 0; // 清標志
}
}

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

    關注

    7

    文章

    6107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    時間間隔發(fā)生器涉及的計量標準及應用,同步脈沖發(fā)生器,雙脈沖信號發(fā)生器

    時間間隔發(fā)生器作為時間頻率計量領域的核心設備,其輸出雙脈沖信號的精準度直接決定了導航、通信、科研檢測等領域的測量可靠性。同步天下SYN5612型時間間隔發(fā)生器憑借最高1ps級高分辨率、寬量程輸出等
    的頭像 發(fā)表于 02-26 16:01 ?70次閱讀

    函數(shù)信號發(fā)生器任意波形信號發(fā)生器區(qū)別詳解

    函數(shù)發(fā)生器提供了一個預置列表,里面列出了它可以生成的波形或碼型。 在函數(shù)發(fā)生器中,用戶可以更改頻率、幅度和偏移等波形參數(shù),還可添加簡單的失真。 任意波形發(fā)生器更為復雜,能夠仿真真實世界
    的頭像 發(fā)表于 02-09 16:24 ?149次閱讀
    函數(shù)信號<b class='flag-5'>發(fā)生器</b>和<b class='flag-5'>任意</b>波形信號<b class='flag-5'>發(fā)生器</b>區(qū)別詳解

    MAX14808:高性能高壓數(shù)字脈沖發(fā)生器技術剖析

    MAX14808/MAX14809:高性能高壓數(shù)字脈沖發(fā)生器技術剖析 在電子工程領域,尤其是超聲系統(tǒng)設計中,高性能的高壓數(shù)字脈沖發(fā)生器至關
    的頭像 發(fā)表于 02-04 15:40 ?123次閱讀

    智能化的函數(shù)任意波形信號發(fā)生器 信號發(fā)生器品牌 任意波形信號發(fā)生器

    信號發(fā)生器
    知道點啥
    發(fā)布于 :2026年01月30日 10:26:14

    可編程的多路脈沖信號發(fā)生器 高速脈沖信號發(fā)生器 1hz脈沖信號發(fā)生器

    信號發(fā)生器
    知道點啥
    發(fā)布于 :2026年01月30日 10:24:38

    數(shù)字延遲脈沖發(fā)生器 脈沖延遲信號發(fā)生器 多通道脈沖信號發(fā)生器

    信號發(fā)生器
    jf_47371611
    發(fā)布于 :2026年01月26日 13:54:25

    標準脈沖時間間隔發(fā)生器使用場景解析

    關鍵詞:時間脈沖發(fā)生器、數(shù)字脈沖延遲發(fā)生器、標準時間間隔發(fā)生器 在現(xiàn)代科技體系中,時間精度是衡量技術
    的頭像 發(fā)表于 01-16 17:40 ?1541次閱讀
    標準<b class='flag-5'>脈沖</b>時間間隔<b class='flag-5'>發(fā)生器</b>使用場景解析

    數(shù)字脈沖延遲發(fā)生器有什么用 #脈沖發(fā)生器 #標準

    發(fā)生器
    jf_16650182
    發(fā)布于 :2026年01月16日 17:18:16

    脈沖信號發(fā)生器

    發(fā)生器
    西安同步電子科技有限公司
    發(fā)布于 :2025年11月04日 17:24:04

    標桿之作:Agilent 33250A函數(shù)/任意波形發(fā)生器綜覽

    時間里風靡全球的經(jīng)典機型。 一、Agilent 33250A:定義一代標準的全能信號源 Agilent 33250A是一款集函數(shù)發(fā)生器、任意波形發(fā)生器脈沖
    的頭像 發(fā)表于 10-13 15:08 ?614次閱讀
    標桿之作:Agilent 33250A函數(shù)/<b class='flag-5'>任意</b>波形<b class='flag-5'>發(fā)生器</b>綜覽

    信號發(fā)生器選型指南:函數(shù)、射頻與任意波形的差異與適用場景

    在現(xiàn)代電子測試與測量領域,信號發(fā)生器是不可或缺的工具。面對市場上函數(shù)發(fā)生器、射頻信號發(fā)生器任意波形發(fā)生器(AWG)三大類別,如何選擇成為關
    的頭像 發(fā)表于 09-23 18:01 ?1339次閱讀
    信號<b class='flag-5'>發(fā)生器</b>選型指南:函數(shù)、射頻與<b class='flag-5'>任意</b>波形的差異與適用場景

    延遲脈沖信號發(fā)生器在激光觸發(fā)領域的應用?

    在激光技術飛速發(fā)展的當下,高速延遲脈沖信號發(fā)生器作為激光系統(tǒng)中的關鍵部件,其重要性愈發(fā)凸顯。SYN5610型脈沖信號發(fā)生器憑借出色性能,在激
    的頭像 發(fā)表于 09-22 17:53 ?777次閱讀

    安捷倫agilent 33250a 函數(shù)發(fā)生器任意波形發(fā)生器

    任意波形比以前更加容易 新agilent 33250a的性能幾乎比同等價格的任何其它發(fā)生器高一倍。其80mhz帶寬能適應各種各樣的應用要求,它具有各種內(nèi)置信號、自定義的任意波形和脈沖
    的頭像 發(fā)表于 08-13 16:56 ?842次閱讀
    安捷倫agilent  33250a 函數(shù)<b class='flag-5'>發(fā)生器</b><b class='flag-5'>任意</b>波形<b class='flag-5'>發(fā)生器</b>