DSP入門:GPIO

4408 ワード

DSPに触れ始めたばかりで、TMS 320 F 28335を使って勉強しています.GPIOモジュールには88個の双方向、多重のピンがある.Aグループ(32個)、Bグループ(32個)、Cグループ(24個).ピンごとに最大4つの機能を多重化できる:GPIO、周辺機器1、2、3、具体的には多重化コントローラGPxMUX 1/2で構成される.
GPIOレジスタ:
1.GPxMUX 1マルチプレクサ(GPIO 0-15)  GPxMUX 2マルチプレクサ(GPIO 16-31);GPAMUX 1(GPIOAマルチプレクサ1)
2.GPQSEL 1量子化選択レジスタ(GPIO 0-15):入力量子化機能  GPQSEL 2量子化選択レジスタ(GPIO 16-31)
3.GPxCTRL制御レジスタ:サンプリング周期を制御する(主にGPQSEL 1/2を配合し、I/Oノイズ除去を実現する)
4.GPxDIR方向レジスタ(1は出力、0は入力)
5.GPxPUDプルアップ禁止レジスタ(1プルアップ禁止、0プルアップ許可)
6.GPxDATデータレジスタ(1出力ハイレベル、0出力ローレベル)          は、次の3つのレジスタ7.GPxSET(セット1)をよく使用します
8.GPxCLEAR(清0)
9.GPxTOGGLE(逆転)
  :
GpioDataRegs.GPADAT.all = 0x0000;//GPIO  A          
GpioDataRegs.GPASET.bit.GPIO24 = 1;//GPIO24     
GpioDataRegs.GPBCLEAR.bit.GPIO46 = 1;//GPIO46     
GpioDataRegs.GPCTOGGLE.bit.GPIO80 = 1;//GPIO80    

GPIOのC言語ルーチン
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File


void Gpio_setup1(void);   //GPIO53  
void Delay(unsigned int nDelay);


void main(void)
{
   InitSysCtrl(); //     

   InitGpio(); //   GPIO
   InitXintf16Gpio();//     IO

   DINT;    //      

   InitPieCtrl();  //          ,    
   IER = 0x0000;    //  CPU  
   IFR = 0x0000;    //  CPU      
   InitPieVectTable();    //        

   Gpio_setup1(); //GPIO53   

   while( 1 )

     {  
        GpioDataRegs.GPBDAT.bit.GPIO53=0;
        Delay(1000);
        GpioDataRegs.GPBDAT.bit.GPIO53=1;
        Delay(1000);
     }
}


void Gpio_setup1(void)
{
   EALLOW;
   GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0;   // Enable pullup on GPIO53
   GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0; // Synch to SYSCLKOUT
   GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;  // GPIO53 Enable
   GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1;   //DIR=out
   EDIS;
}


void Delay(unsigned int nDelay)//       
{
    int ii,jj,kk=0;
    for ( ii=0;iifor ( jj=0;jj<2400;jj++ )
        {           
            kk++;
        }
    }
}