SPI 没有时钟信号

2019-07-15 18:45发布

求助大神,我在练习SPI过程中遇到一些问题。28335通过SPI给一位数码管发数(中间是74HC595)下边是代码,只发了一个数,但是SPIclk没有信号,数据根本没有发出去,是什么问题导致的呢
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"
//const char table[16]={0x0c00,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF800,0x8000,0x9000};
//int i;
void spi_intial()//SPI初始化
{
    SpiaRegs.SPICCR.all=0x0047;//使SPI处于复位模式,下降沿,8位数据
    SpiaRegs.SPICTL.all=0x0006;//主控模式,一般时钟模式
                                //关闭SPI中断
    SpiaRegs.SPIBRR=0x007F;//配置波特率
    SpiaRegs.SPICCR.all=SpiaRegs.SPICCR.all|0x0080;//退出复位状态
    EALLOW;
    GpioCtrlRegs.GPBMUX2.bit.GPIO54=1;//设置通用引脚为SPI引脚
    GpioCtrlRegs.GPBMUX2.bit.GPIO56=1;
    EDIS;
}
void gpio_init()
{
    EALLOW;
    GpioCtrlRegs.GPBMUX2.bit.GPIO57=0;//GPIO27设置为一般I/O,输出
    GpioCtrlRegs.GPBDIR.bit.GPIO57=1;
    EDIS;
    GpioDataRegs.GPBDAT.bit.GPIO57=0;//GPIO57接口为74HC595D锁存信号

}
void main(void)
{
    unsigned long int k=0;
    InitSysCtrl();
    DINT;
    IER=0x0000;
    IFR=0x0000;
    spi_intial();
    gpio_init();
    //spi_fifo_init();
    while(1)
    {

        //for(i=0;i<8;i++)
        //{
            for(k=0;k<10;k++){}
            GpioDataRegs.GPBDAT.bit.GPIO57=0;
            SpiaRegs.SPITXBUF=0x3f00;
            while(SpiaRegs.SPISTS.bit.INT_FLAG!=1){}//等待发送
            SpiaRegs.SPIRXBUF=SpiaRegs.SPIRXBUF;//清零

        //}
            GpioDataRegs.GPBDAT.bit.GPIO57=1;
            for(k=0;k<10;k++){}
    }

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
chenwei6991627
1楼-- · 2019-07-15 21:00
用的是硬件还是软件SPI呢
qianligu33
2楼-- · 2019-07-16 00:28
你看下你的ADC芯片的输入时钟对不对,如果输入时钟没问题的话SCLK不对检查下芯片跟DSP的地线是否共地

一周热门 更多>