【 ATU NXP-MPC系列 】MPC5777C_EMIOS 功能實現

1.  概述

1.1 功能描述

     在 MPC5746R_PVC 板子上實現 EMIOS 功能,本內容主要集中在 EMIOS

     的PWM功能介紹,連接示波器驗證其功能

1.2 硬體開發工具

      MPC5746R_ EVC 板

      PEmicro 燒錄器

1.3 軟體開發工具

      S32 Design Studio IDE for Power Architecture , 版本 2017.R1 , Build id: 171018

      S32 SDK PA , BETA 2.9.0

1.4 參考相關程式

     Example codes / MPC5746R_emios_pwm

2. 原理

2.1工作模式

  1. General-Purpose Input/Output (GPIO) 
  1. Single-Action Input Capture (SAIC) 
  1. Single-Action Output Compare (SAOC) 
  1. Input Pulse-Width Measurement (IPWM) 
  1. Input Period Measurement (IPM) 
  1. Double-Action Output Compare (DAOC) 
  1. Pulse/Edge Accumulation (PEA) 
  1. Pulse/Edge Counting (PEC) 
  1. Quadrature Decode (QDEC) 
  1. Windowed Programmable Time Accumulation (WPTA) 
  1. Modulus Counter (MC) 
  1. Modulus Counter Buffered (MCB) 
  1. Output Pulse-Width and Frequency Modulation (OPWFM) 
  1. Output Pulse-Width and Frequency Modulation Buffered (OPWFMB) 
  1. Center Aligned Output Pulse Width Modulation with Dead Time Insertion(OPWMC) 
  1. Center Aligned Output Pulse Width Modulation with Dead Time Insertion Buffered(OPWMCB) 
  1. Output Pulse-Width Modulation (OPWM) 
  1. Output Pulse-Width Modulation Buffered (OPWMB) 
  1. Output Pulse-Width Modulation with Trigger (OPWMT)

 

2.2 計數器來源

1.     MC mode ( Modulus Counter )

MC 模式可使用來產生計數器或提供定時器時鐘源可分為 up mode與 up/down mode

    


       

2.        MCB mode ( Modulus Counter with buffer )

       MC with buffer,利用緩衝器儲存資料,當下個周期開始時更新並使用儲存的

        Data。

3. PWM 種類與功能介紹

3.1    output Pulse-Width Modulation with Trigger (OPWMT)

可以在 PWM 週期中的任何點生成觸發信號,例如啟動 ADC 轉換,允許
每個 Channel 固定偏移,對於系統消除噪音有幫助。

3.2    output Pulse-Width and Frequency Modulation Buffered (OPWFMB)

該模式提供可變佔空比與頻率之波型,register A1 表示佔空比,register
B1 表示頻率,雙緩衝器。

3.3    Center Aligned Output Pulse Width Modulation with Dead Time Insertion Buffered(OPWMCB)

      OPWMCB 根據上圖產生 PWM 訊號,Dead time 可選擇前緣或後緣輸入,

      雙緩衝器。

3.4   output Pulse-Width Modulation Buffered (OPWMB)

3.5   output Pulse Width Modulation Mode(OPWM)

        3.4 & 3.5.為 up mode PWM 差異為是否有緩衝區,沒有緩衝區能及時更新資料

      ,但是較不 Smooth ,反之擁有緩衝區 PWM 較 Smooth

 

4. 程式碼功能描述

4.1 功能概述

  1. EMIOS 功能選擇與 PIN腳選擇
  2. 2.EMIOS 計數器觸發 PWM 功能

4.2 程式流程圖

 

 

 

5.  SDK相關 function 介紹

5.1 EMIOS_DRV_InitGlobal

5.1.1 功能描述

Low power mode 與 normal mode 選擇

是否允許進入 debug 模式

GlobalTimeBase 或者  ExternalTimeBase 啟用

分頻器設置

 

5.1.2 函式原型

EMIOS_DRV_InitGlobal ( INST_EMIOS_MC1, &eMIOS_Mc1_InitConfig0 ) ;

 

5.1.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

eMIOS_Mc1_InitConfig0

emios_common_param_t

EMIOS_MC 模式與時鐘設定

 

5.1.4  return 值

5.1.5  範例

EMIOS_DRV_InitGlobal ( INST_EMIOS_MC1, &eMIOS_Mc1_InitConfig0 ) ;

 

5.2 EMIOS_DRV_MC_InitCounterMode

5.2.1 功能描述

選擇 MC 時鐘來源

MC 計數器種類選擇

觸發模式

Flag 產生位置設置

 

5.2.2 函式原型

EMIOS_DRV_MC_InitCounterMode ( INST_EMIOS_MC1,EMIOS_CNT_BUSA_DRIVEN,&eMIOS_Mc1_CntChnConfig0 ) ;

5.2.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

EMIOS_CNT_BUSA_DRIVEN

Channel

選擇 MC 使用的 TIME BUS 通道

eMIOS_Mc1_CntChnConfig0

emios_common_param_t

EMIOS_MC 通道模式使用者設定

 

5.2.4  return 值

5.2.5  範例

EMIOS_DRV_MC_InitCounterMode ( INST_EMIOS_MC1,EMIOS_CNT_BUSA_DRIVEN,        &eMIOS_Mc1 _CntChnConfig0 ) ;

 

5.3 EMIOS_DRV_PWM_InitMode

5.3.1 功能描述

選擇 PWM 模式與 Channel

PWM 週期設定與 PWM 輸出active high or low

Timebase 選擇與死區設定

Dutycycle 初始化

 

5.3.2 函式原型

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1,8U,&eMIOS_Pwm1_PWMChnConfig0 ) ;

5.3.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

8

Channel

選擇 PWM使用的 Channel

eMIOS_Pwm1_PWMChnConfig0

emios_pwm_param_t

EMIOS_PWM 使用者設定

 

5.3.4 return 值

5.3.5 範例

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 8U, & eMIOS_Pwm1_PWMChnConfig0 ) ;

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 9U, & eMIOS_Pwm1_PWMChnConfig1 ) ;

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 10U, & eMIOS_Pwm1_PWMChnConfig2 ) ;

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 11U, & eMIOS_Pwm1_PWMChnConfig3 ) ;

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 12U, & eMIOS_Pwm1_PWMChnConfig4 ) ;

EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 13U, & eMIOS_Pwm1_PWMChnConfig5 ) ;

 

5.4 EMIOS_DRV_EnableGlobalEmios

5.4.1 功能描述

Emios 模塊啟動

 

5.4.2 函式原型

EMIOS_DRV_EnableGlobalEmios ( INST_EMIOS_MC1 ) ;

 

5.4.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

 

5.4.4 return 值

5.4.5 範例

EMIOS_DRV_EnableGlobalEmios ( INST_EMIOS_MC1 )

 

5.5 EMIOS_DRV_PWM_SetDutyCycle

5.5.1 功能描述

更新 PWM 的 Dutycycle

 

5.5.2 函式原型

EMIOS_DRV_PWM_SetDutyCycle ( INST_EMIOS_MC1, 8U, dutyCycleCnt ) ;

 

5.5.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

8

channel

指定 PWM 通道

dutyCycleCnt

uint32_t

預更新的 dutycycle

 

5.5.4 return 值

5.5.5 範例

EMIOS_DRV_PWM_SetDutyCycle ( INST_EMIOS_MC1, 8U, dutyCycleCnt ) ;

 

5.6 EMIOS_DRV_PWM_SetPeriod

5.6.1 功能描述

更新 PWM 的 Period

 

5.6.2 函式原型

EMIOS_DRV_PWM_SetPeriod ( INST_EMIOS_MC1,9U,new_period ) ;

 

5.6.3 參數

參數名稱

類型

描述

INST_EMIOS_MC1

uint8_t

指定EMIOS_MC函式模塊

9

channel

指定 PWM 通道

new_period

uint32_t

預更新的 period

 

5.6.4 return 值

5.6.5 範例

EMIOS_DRV_PWM_SetPeriod ( INST_EMIOS_MC1,9U,new_period ) ;

5.7 其他 function

5.7.1  EMIOS_DRV_PWM_SetCenterAlignDeadTime ( uint8_t emiosGroup, uint8_t

      channel, uint32_tnewDeadTime ) ;

      更新死區設定

5.7.2  EMIOS_DRV_PWM_GetDutyCycle ( uint8_t emiosGroup, uint8_t channel ) ;

      讀取 PWM Dutycycle

5.7.3  EMIOS_DRV_PWM_SetTrailingEdgePlacement ( uint8_t emiosGroup, uint8_t channel, uint32_t newTrailingEdgePlacement ) ;

      PWM 後緣位置更改

5.7.4  EMIOS_DRV_PWM_SetTriggerPlacement ( uint8_t emiosGroup, uint8_t channel, uint32_t newTriggerPlacement ) ;

      PWM 觸發位置更改

5.7.5  EMIOS_DRV_PWM_GetCenterAlignDeadTime ( uint8_t emiosGroup, uint8_t channel ) ;

      讀取死區資料

 

6.  EMIOS_PWM 實際操作  



剩餘章節與程式碼,如有需求,請在大大通留言
聯絡信箱 Michael.Gao@wpi-group.com
Thank you.

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論