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(逆転)
GPIOのC言語ルーチン
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++;
}
}
}