ADI 技术
直播中

黄芙蓉

7年用户 212经验值
私信 关注
[问答]

ADUcM360 SPI接口调试SPITX一直为0

在KEIL下调试ADuCM360的SPI接口,自检测试。为什么SPITX寄存器里写不进去任何东西啊??代码如下:
#include
#include
#include

#include <..commonAdcLib.h>
#include <..commonIexcLib.h>
#include <..commonUrtLib.h>
#include <..commonClkLib.h>
#include <..commonWdtLib.h>
#include <..commonIntLib.h>
#include <..commonDioLib.h>
#include <..commonSpiLib.h>
void SPI1INIT(void);
unsigned char uxSPI1WrData[]={0x1,0x2,0x3,0x4,0x5,0x6,0x7,
           0x8,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18};
unsigned char uxSPI1RdData[]="";
int main (void)
{
   WdtCfg(T3CON_PRE_DIV1,T3CON_IRQ_EN,T3CON_PD_DIS);
ClkDis(CLKDIS_DISI2CCLK|CLKDIS_DISPWMCLK|CLKDIS_DIST0CLK|CLKDIS_DIST1CLK|CLKDIS_DISDACCLK);
ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);
   ClkSel(CLK_CD0,CLK_CD0,CLK_CD0,CLK_CD7);
   SPI1INIT();
SpiCfg(pADI_SPI1,SPICON_MOD_TX1RX1,SPICON_MASEN_EN ,SPI1CON_TFLUSH_DIS| SPI1CON_RFLUSH_EN| SPI1CON_CON_EN| SPI1CON_LOOPBACK_EN| SPI1CON_SOEN_DIS| SPI1CON_RXOF_EN
     | SPI1CON_ZEN_DIS| SPI1CON_tiM_TXWR| SPI1CON_LSB_DIS| SPI1CON_WOM_DIS| SPI1CON_CPOL_HIGH| SPI1CON_CPHA_SAMPLETRAILING| SPI1CON_ENABLE_EN);
pADI_GP0->GPCLR = GP0CLR_CLR3_CLR;
while (1)
   {
int i=0;
for(i=0;i<15;i++)
{pADI_SPI1->SPITX= uxSPI1WrData;
pADI_SPI1->SPIRX=pADI_SPI1->SPITX;
uxSPI1RdData=pADI_SPI1->SPIRX;
   }
}
}
void SPI1INIT(void)
{                    
   DioCfgPin(pADI_GP0, PIN0, 1);                                
   DioCfgPin(pADI_GP0, PIN1, 1);
   DioCfgPin(pADI_GP0, PIN2, 1);
   DioCfgPin(pADI_GP0, PIN3, 1);
SpiBaud(pADI_SPI1,0x3F,SPIDIV_BCRST_DIS);
}

我认为即使SPI不配置,SPITX寄存器也能写进去东西啊,只是不能传输而已。现在SPITX里面的数一直是0。望朋友们解答!

回帖(1)

蒋喜玲

2019-1-4 10:21:37
TX寄存器中的值会到TX FIFO中,然后发送出去,建议用示波器看一下SPI的MOSI上是否有信号输出。
另外,SPI的TX FIFO是4个Byte的,如果要连续发数,建议用中断或者查询的方法,判断FIFO中的数据已经发送完后再发送数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分