<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • EM9380工控主板實時控制應用說明

     2013-9-13              

            EM9380是英創公司針對高速實時應用設計的一款雙CPU工控主板,主CPU采用了FreeScale 454MHz ARM9 iMX283, 從CPU采用的是Atmel公司的64MHz Cortex-M3。EM9380預裝了WinCE6.0操作系統,經過我們精心的設計,EM9380可實現最小為25uS 的實時控制應用。

     

            EM9380與英創公司的另一款8串口工控主板EM9280的引出管腳高度兼容,具體可參考《EM9380與EM9280兼容設計》一文。 EM9380與EM9280的GPIO對應管腳完全一致,但在其各自復用的功能和軟件操作方法上有著較大的區別。下表是EM9380與EM9280 32位GPIO以及各自復用功能的對比。

     


    PIN#信號名稱EM9280復用功能EM9380復用功能
    CN1_27GPIO0

      COM2口CTS#

      復用定時器功能

    CN1_28GPIO1

      COM2口RTS#

      復用定時器功能

    CN1_29GPIO2 

      復用定時器功能

    CN1_30GPIO3 

      復用定時器功能 

    CN1_31GPIO4 

      PWM3

    CN1_32GPIO5 

      PWM4

    CN1_33GPIO6

      PWM1

      PWM5

    CN1_34GPIO7

      PWM2

      PWM6

    CN1_35GPIO8 

      AD0通道輸入 

    CN1_36GPIO9 

      AD1通道輸入

    CN2_15GPIO10

      COM6口RXD

      AD2通道輸入

    CN2_16GPIO11

      COM6口TXD

      AD3通道輸入

    CN2_17GPIO12 

      AD4通道輸入 

    CN2_18GPIO13 

      AD5通道輸入

    CN2_19GPIO14 

      AD6通道輸入

    CN2_20GPIO15 

      AD7通道輸入

    CN2_21GPIO16 

      COM2口CTS# 

    CN2_22GPIO17 

      COM2口RTS# 

    CN2_23GPIO18 

      COM6口RXD 

    CN2_24GPIO19 

      COM6口TXD 

    CN2_25GPIO20

      PWM3 

      PWM1

    CN2_26GPIO21

      PWM4

      PWM2

    CN2_27GPIO22

      I2C_SDA

      I2C_SDA 

    CN2_28GPIO23

      I2C_SCL

      I2C_SCL

    CN2_29GPIO24

      IRQ1

      IRQ1

    CN2_30GPIO25

      IRQ2

      IRQ2 

    CN2_31GPIO26

      IRQ3

      IRQ3

    CN2_32GPIO27

      IRQ4

      IRQ4 

    CN2_33GPIO28

      SPI_MISO

      SPI_MISO

    CN2_34GPIO29

      SPI_MOSI

      SPI_MOSI

    CN2_35GPIO30

      SPI_SCLK  

      SPI_SCLK  

    CN2_36GPIO31

      SPI_CS0N

      SPI_CS0N


     

            從上表可以看出EM9380與EM9280的GPIO20~GPIO31功能完全一樣。而EM9380的GPIO0~GPIO15是從Cortex-M3從CPU引出、支持實時控制應用的引腳,可實現高速AD、高精度PWM、數字PID、脈沖計數等高速實時控制,這正是EM9380的特色所在。

     

            在應用程序的設計上,EM9380的GPIO20~GPIO31使用與EM9280一樣的函數操作,EM9380的GPIO0~GPIO15則需要一組專門的API函數用來操作,這組API定義在mcu_api.h文件中,下面是對API函數的一個簡要說明。

     

            // 打開MCU操作單元,獲取MCU的句柄。
            HANDLE OpenMCU( int Index );

     

            // 關閉MCU操作單元
            BOOL CloseMCU( HANDLE hMCU );

     

            // 獲取MCU的版本信息。
            BOOL MCU_GetVInfo( HANDLE hMCU, PMCU_VER_INFO pMCU_VInfo ); 

            // MCU GPIO操作:設置相關的GPIO位為輸出IO。 
            BOOL MCU_GPIO_OutEnable( HANDLE hMCU, UINT32 dwEnBits ); 

            // MCU GPIO操作:設置相關的GPIO位為輸入IO。 
            BOOL MCU_GPIO_OutDisable(HANDLE hMCU, UINT32 dwDisBits ); 

            // MCU GPIO操作:設置輸出GPIO位輸出高位。 
            BOOL MCU_GPIO_OutSet( HANDLE hMCU, UINT32 dwSetBits ); 

            // MCU GPIO操作:設置輸出GPIO位輸出低位。 
            BOOL MCU_GPIO_OutClear( HANDLE hMCU, UINT32 dwClearBits ); 

            // MCU GPIO操作:獲取相關輸入GPIO位狀態值。 
            BOOL MCU_GPIO_PinState( HANDLE hMCU, UINT32* pPinState ); 

            // MCU GPIO操作:啟動實時監控輸入GPIO位狀態值。 
            BOOL MCU_GPIO_PinMonitor( HANDLE hMCU, UINT32* pPinState, UINT32 dwPeriod ); 

            // MCU PWM操作:啟動/停止PWM通道, 啟動參數包括頻率、占空比和初始極性 
            // 輸入參數dwCh: PWM通道號, = 3, 4, 5, 6 
            // dwFreq: PWM輸出頻率,單位Hz 
            // dwDuty: PWM輸出占空比,單位.1%, 輸入范圍= 0-1000 
            // dwPol: PWM初始極性,= 0: 低電平, = 1: 高電平
     
            BOOL MCU_PWM_CHANNEL( HANDLE hMCU, DWORD dwCh, DWORD dwFreq, DWORD dwDuty, DWORD dwPol ); 

            // MCU ADC操作:啟動ADC通道常規數據采集 
            // 輸入參數dwChMode: AD通道模式= 0: 單端, = 1: 差分 
            // pBuf: AD數據Buffer 
            // dwBufSize: AD數據Buffer的長度,決定要采集的通道數, WORD長度對齊 
            BOOL MCU_ADC_Generic( HANDLE hMCU, DWORD dwChMode, WORD *pBuf, DWORD dwBufSize ); 

            // MCU 等待實時數據。 
            // return TRUE: 接收到實時數據 
            // FALSE: no
     
            BOOL WaitForData( HANDLE hMCU, DWORD dwTimeout ); 

            // 功能: 讀取實時數據命令數據 
            // 返回值:MCU實時數據類型編號 
            // <0: 無數據 
            // =1: TYPE_MCU_GPIO_INFO 
            // =2: TYPE_MCU_ADC_INFO 
            DWORD MCU_Read( HANDLE hMCU, LPVOID pBuffer, DWORD Count );

     

            “EM9380開發光盤\Sortware\C例程”目錄下的Mcu_TestSDK工程,詳細展示了上面API函數的使用方法,在使用這些API函數前,需要在自己的工程中鏈接對應的庫文件“mcusdk.lib”。 
            #pragma comment( lib, 'mcusdk.lib' )


     

            mcusdk.lib實際上是為了方便用戶使用MCU功能(MCU即EM9380的從CPU)做的二次封裝,在mcusdk.lib庫內部依然調用的是標準流式驅動接口函數,比如通過CreateFile打開驅動句柄,通過DeviceIoControl與MCU驅動交互。利用這些標準驅動接口函數,用戶可以使用EM9380從CPU的更多高級功能,我們已經做了一些EM9380在高速實時控制方面應用的案例,這些例子演示了通過標準驅動接口函數操作MCU的方法。


     

            相關閱讀:

            《EM9380多通道AD數據采集》 
            《EM9380多路任意脈沖發生器及應用》

    国语自产少妇精品视频| 久久久99精品一区二区| 精品国产乱码久久久久久| 久久丝袜精品综合网站| 国产精品亚洲色婷婷99久久精品| 国产精品永久在线| 国产精品亚洲色婷婷99久久精品| 日本精品久久久久中文字幕8| 国产精品综合久成人| 精品三级AV无码一区| 国产av永久精品无码| 亚洲精品国产第1页| 人人鲁人人莫人人爱精品 | 久久精品人人做人人爽电影| 国产精品扒开做爽爽爽的视频 | 热RE99久久精品国产66热| 久久久一本精品99久久精品88| 国产午夜精品一区二区三区嫩草 | 国产亚洲蜜芽精品久久| 国产精品卡一卡二卡三| 91精品国产91久久久久久| 久9热免费精品视频在线观看| 99精品久久精品一区二区| 国产精品成人99久久久久 | 亚洲宅男精品一区在线观看| 无码日韩人妻精品久久蜜桃 | 久热这里只精品99国产6_99| CAOPORM国产精品视频免费| 国产精品亚洲精品日韩电影| 精品无码国产一区二区三区麻豆| 99在线精品视频观看免费| 久久久久久精品免费看SSS | 国产精品99久久久久久宅男| 在线观看麻豆精品国产不卡| 人妻少妇精品无码专区漫画| 国产精品久久毛片完整版| 精品久久亚洲中文无码| 久久精品毛片免费观看| 中文字幕精品一区二区日本| 久久精品国产亚洲av麻豆色欲| 精品偷自拍另类在线观看|