微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 求教DSP数码管动态显示问题。

求教DSP数码管动态显示问题。

时间:10-02 整理:3721RD 点击:
纯新手,求教SPI控制4个数码管分别同时显示1234,硬件电路如图,GPIO58~61控制数码管点亮,74HC164作为驱动芯片,GPIO54作为SPI输出,GPIO56作为时钟信号,程序运行后数码管不亮是什么情况?程序如下:

#include "DSP2833x_Device.h"     // DSP280x头文件
#include "DSP2833x_Examples.h"   // DSP280x例程中用到的头文件
/****************函数声明*******************/
void delay_loop(void);
void spi_xmit(Uint16 m);
void spi_fifo_init(void);
void spi_init(void);
void Gpio_ledwei_init();

/***************全局变量定义****************/
Uint16 LedBuffer[4]={0xc0,0xf9,0xa4,0xb0};
Uint16 wei[4]={0x20,0x10,0x08,0x04};
int a=0;
void delay()
{
        Uint32 i;
        for(i=10000;i>0;i--);
}
void main(void)
{
   InitSysCtrl();
   InitSpiaGpio();  //开发板使用SPIA
   Gpio_ledwei_init();
   DINT;
   spi_fifo_init();          // 初始化Spi的FIFO
   spi_init();                  // 初始化SPI
   InitPieCtrl();
   IER = 0x0000;
   IFR = 0x0000;
   InitPieVectTable();
   while(1)
   {
   for(a=0;a<4;a++)
           {
           GpioDataRegs.GPBDAT.all=wei[a];
        delay();
           spi_xmit(LedBuffer[a]);
        delay();
           GpioDataRegs.GPBCLEAR.all=1;
           delay();
           }
              a=0;
   }
}

}
//初始化SPI函数
void spi_init()
{
        SpiaRegs.SPICCR.all =0x004F;// SPI软件复位, 极性位为1(下降沿发送数据), 每次移
                                    //进和移出16位字长度;禁止SPI内部回送(LOOKBACK)功能;
        SpiaRegs.SPICTL.all =0x0006; // 使能主机模式,正常相位,使能主机发送,禁止接收
                                    //溢出中断,禁止SPI中断;
        SpiaRegs.SPIBRR =0x007F;        //SPI波特率=25M/128        =195.3KHZ;
    SpiaRegs.SPICCR.all =0x00CF;//停止SPI软件复位准备接收或发送;禁止回送模式;
    SpiaRegs.SPIPRI.bit.FREE = 1;  // 自由运行
}
//发送SPI数据
void spi_xmit(Uint16 m)
{
    SpiaRegs.SPITXBUF=m;
}
//初始化SPI FIFO
void spi_fifo_init()
{
    SpiaRegs.SPIFFTX.all=0xE040;//使能FIFO;清除发送中断标志位;禁止FIFO发送中断;
                                //发送中断级别定义为0;
    SpiaRegs.SPIFFRX.all=0x204f;//清除FF溢出标志位;清除溢出接受中断标志位;禁止
                                    //FF接受中断;接受中断级别为16;
    SpiaRegs.SPIFFCT.all=0x0;//SPITXBUF到移位寄存器传送不延迟;
}
void Gpio_ledwei_init()
{
         EALLOW;
           GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0;
           GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 0;
           GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;
           GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;
           GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
           GpioCtrlRegs.GPBPUD.bit.GPIO58=0;
           GpioCtrlRegs.GPBPUD.bit.GPIO59=0;
           GpioCtrlRegs.GPBPUD.bit.GPIO60=0;
           GpioCtrlRegs.GPBPUD.bit.GPIO61=0;
           GpioCtrlRegs.GPBPUD.bit.GPIO34=0;
           GpioCtrlRegs.GPBDIR.bit.GPIO58 = 1;
           GpioCtrlRegs.GPBDIR.bit.GPIO59 = 1;
           GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;
           GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
           GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
         EDIS;

}
//===========================================================================
// No more.
//===========================================================================

硬件电路图


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top