DSP TMS320F280049之模擬比較器CMPSS(寄存器版)

F280049C是一款數模集成的DSP控制器,除了強大的數字處理能力外,還包含一部分的模擬電路,主要有比較器CMPSS、運放PGA、DAC、ADC。內部的比較器一般是結合DAC來使用,每個比較器模塊包含兩個比較器,高側and低側。比較器的特點如下:

  1. 包含DAC模塊,反相端可作爲DAC的輸入
  2. 在DAC的基礎上可設置斜波補償,用來做峯值電流控制
  3. 比較器的輸出可設置數字濾波
  4. 比較器可設置滯環寬度

比較器的內部框圖如下所示:

比較器的使用配置起來比較複雜(我花了好幾天才配置成功),實現的功能爲:三角波信號與直流信號作比較,比較器的同向輸入端爲外部輸入的三角波信號,反向輸入端爲內部DAC輸入,輸出通過GPIO引腳引出。配置步驟爲:

  1. 配置內部DAC、比較器反向輸入端輸入源、輸出端是否反向
  2. 配置比較器輸出數字濾波(慎用)
  3. 配置比較器的輸出方式:輸出非同步非濾波信號
  4. 設置比較器的滯環寬度,主要是噪聲免疫
  5. 配置比較器的輸出對應的GPIO引腳,這一部分需要參考X-bar部分
  6. 配置比較器同相輸入端的輸入引腳
  7. 配置GPIO引腳的複用功能,作爲Output X-bar輸出

(1) 比較器配置

比較器的反相端爲DAC的輸入(不使用斜波發生器,後邊講解),直接往DAC影子寄存器中填值就可以配置DAC輸出。比較器的輸出不濾波,直接將其引到GPIO引腳。比較器部分的配置代碼如下所示:

void InitEMPSS(void)
{
    EALLOW;

    Cmpss1Regs.COMPCTL.bit.COMPDACE = 1;        //比較器DAC使能
    Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;     //高側比較器方向輸入端爲DAC
    Cmpss1Regs.COMPCTL.bit.COMPHINV = 0;        //比較器輸出不反向
    Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 0;        //

    Cmpss1Regs.COMPDACCTL.bit.DACSOURCE = 0;    //DAC更新數據來自於其影子寄存器
    Cmpss1Regs.COMPDACCTL.bit.SELREF = 0;       //VDDA作爲DAC的參考電壓
    Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL = 0;    //使用系統時鐘同步DAC

    Cmpss1Regs.DACHVALS.bit.DACVAL = 1700;      //配置DAC的影子寄存器值

    /*數字濾波*/
    Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0x3FF;
    Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN = 31;
    Cmpss1Regs.CTRIPHFILCTL.bit.THRESH = 31;
    Cmpss1Regs.CTRIPHFILCTL.bit.FILINIT = 1;

    Cmpss1Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
    Cmpss1Regs.COMPCTL.bit.CTRIPLSEL = 0;       //比較器輸出非同步非濾波信號

    Cmpss1Regs.COMPHYSCTL.bit.COMPHYS = 4;      //設置典型的滯環寬度

    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0 = 0; // MUX0=0  CMPSS1.CTRIPOUTH
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1;   //複用開關使能

    AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL = 0;    //選擇A2引腳作爲高側比較器1的同向輸入端
//    AnalogSubsysRegs.CMPHNMXSEL.bit.CMP1HNMXSEL = 1;  //選擇反向輸入端的信號
    EDIS;
}

信號的流動路徑如下所示:

(2)比較器輸入引腳配置

比較器同向輸入端的配置需要用到模擬子系統(Analog Subsystem)裏邊的寄存器,配置比較簡單,主要參照引腳對應表配置即可,由於使用的是專用引腳,因此不需要相關的GPIO複用功能配置。部分截圖如下所示:

相關的配置代碼如下所示:

AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL = 0;    //選擇A2引腳作爲高側比較器1的同向輸入端

 (3)比較器輸出引腳配置

比較器的輸出引腳配置也是理解起來比較複雜,配置很簡單,需要用到GPIO Output X-bar裏邊的相關寄存器將比較器的輸出引到相關的GPIO引腳。X-bar其實就是實現多路開關複用的功能,eCAP中需要使用INPUT X-bar,想了解的可以參考我前面的博文。Output X-bar 共對應有8路輸出(Output1-Output8),每一路output對應有32個多路選擇器,每個選擇器都是四選一的數據選擇器。GPIO Output X-bar的內部結構圖如下所示:

 我使用的是Output1的MUX0開關,對應的輸出爲OUTPUTXBAR1,四選一的數據選擇器的功能對應表部分截圖如下所示:

配置代碼中只需要配置MUX0的功能以及輸出使能即可。相關的配置代碼如下所示:

    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0 = 0; // MUX0=0  CMPSS1.CTRIPOUTH
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1;   //複用開關使能

 OUTPUTXBAR1是通過GPIO的複用功能輸出,對應到哪個GPIO引腳需要查GPIO複用功能表,部分截圖如下所示:

 只需要配置GPIO複用功能引腳即可,相關配置如下所示:

void InitEMPSSGpio(void)
{
    EALLOW;

    GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;              //
    GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1;
    GpioCtrlRegs.GPAGMUX1.bit.GPIO2 = 0x01;
    GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0x01;           //配置GPIO2引腳輸出OUTPUTXBAR1

    EDIS;
}

(4)總結

F280049C集成的片上模擬比較器,使用方便,無需外接比較器,而且參考電壓可以使用內部DAC,可以用來做峯值電流控制。使用起來需要注意以下幾點:

  1. 比較器屬於模擬電路,所以對噪聲的免疫能力較差,使用時最好設置相應的滯環寬度
  2. 比較器輸出的數字濾波能起到濾波作用,但是需慎用
  3. 比較器輸出最好不要直接作爲PWM信號使用,最好將其輸出引到ePWM模塊,用ePWM模塊輸出PWM波
  4. 比較器輸出作爲PWM信號使用時,最好在輸出信號上加220pF左右的電容

F280049C比較器部分的完整程序我已經打包上傳到CSDN,需要的可以自行下載。下載鏈接如下所示:

https://download.csdn.net/download/fanxianyan1993/11983737

提問方式:以上程序有啥不懂的可以隨時向我提問哈,用微信掃描下方二維碼我會在第一時間給大家回覆的,謝謝。 

發佈了16 篇原創文章 · 獲贊 31 · 訪問量 8788
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章