主要想问一下我下面的读程序是否有问题,现在我读出来的数据始终是0x00。谢谢了
//*************************************************************************
// SPI串口0初始化
//*************************************************************************
void SPI_Init()
{
P5SEL |= 0x0E; //设置USART0相关IO口功能,CS片选设置为普通IO,3线SPI设置为第二功能
//P5SEL &= ~0x11;
P5OUT |= 0x01; //初始化时设置CS为高
P5DIR |= 0x0B; //对于输入输出方向,第二功能也需要配置
UCA0CTL1 |= UCSWRST;
UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master
UCA0CTL1 |= UCSSEL1;//+UCSSEL0; // SMCLK UCA0BR1=baud1_h; //BRCLK=8MHZ,Baud=BRCLK/N
UCA0BR0=baud1_l; //N=UBR+(UxMCTL)/8
UCA0MCTL=0x00; //微调寄存器为0,波特率9600bps
UCA0CTL1 &= ~UCSWRST; // 配置完后清零SWRST,必须这样的过程,否则可能出现不可预料错误
IE2 |= UCA0RXIE;
IE2 |= UCA0TXIE;
}
/****************往ADS1293写入命令SDI******************/
void ADS_Write(char address,char data)
{
P5OUT &=0xFE;
while(!(IFG2&UCA0TXIE));
UCA0TXBUF = address;
while(!(IFG2&UCA0TXIE));
UCA0TXBUF = data;
P5OUT |=0x01;
}
/*************从ADS1293读出一个字节数据****************/
uchar ADS_read(uchar address)
{ uchar ADS_DAT=1;
P5OUT &=0xFE;
while(!(IFG2&UCA0TXIE));
UCA0TXBUF = 0x80 | address;
ADS_DAT = UCA0RXBUF;
P5OUT |=0x01;
return ADS_DAT;
}
kqian0327:
你好,
程序上看来是没有问题,可以把你的波形节选出来,我想看看示波器波形。
另外请你注意一个问题,UCA0CTL0 |= UCCKPH + ….
你设置的SPI工作模式是否和ADS1293对应?
我觉得是这个问题的可能性很大。