硬件SPI接口
读出的值全部是0
什么问题呢 附SPI配置与ads7886驱动
void init_spi()
{
P3SEL|=0x0C;
P3DIR|=0x01;
//P3DIR&=~BIT2;
P3OUT|=BIT0+BIT3;
ME1 |= USPIE0; // Enable USART0 SPI
UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master **SWRST**
UTCTL0 = SSEL0+SSEL1 + STC; // Inv. delayed, SMCLK, 3-pin
//U0TCTL |= CKPH; //UCLK延时半个周期作为SPI时钟,时钟低电平为无效信号,上升沿锁存数据
// U0TCTL|= CKPL;
U0BR0 = 0x2; // ACLK/2 for baud rate
U0BR1 = 0x0; // ACLK/2 for baud rate
UMCTL0 = 0x0; // Clear modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
}
unsigned int readADC()
{
unsigned int data;
ADC_CS_LOW;
_NOP();
_NOP();
ADC_CLK_HIGH;
U0TXBUF=0x00;
while(!(IFG1&UTXIFG0));
while(!(IFG1&URXIFG0));
IFG1&=~URXIFG0;
data=U0RXBUF;
U0TXBUF=0x00;
while(!(IFG1&UTXIFG0));
while(!(IFG1&URXIFG0));
IFG1&=~URXIFG0;
data=(data<<8)|U0RXBUF;
ADC_CLK_HIGH;
_NOP();
_NOP();
ADC_CS_HIGH;
return data;
}
此帖出自
小平头技术问答
unsigned int readADC()
{
unsigned int data;
ADC_CS_LOW;
_NOP();
_NOP();
ADC_CLK_HIGH;
while(!(IFG1&UTXIFG0));
U0TXBUF=0x00;
IFG1&=~UTXIFG0;
while(!(IFG1&URXIFG0));
IFG1&=~URXIFG0;
data=U0RXBUF;
while(!(IFG1&UTXIFG0));
U0TXBUF=0x00;
IFG1&=~UTXIFG0;
while(!(IFG1&URXIFG0));
IFG1&=~URXIFG0;
data=(data<<8)|U0RXBUF;
ADC_CLK_HIGH;
_NOP();
_NOP();
ADC_CS_HIGH;
return data;
}
前提是你的这些IFG1、UTXIFG0、URXIFG0是匹配的,我不知道你使用的是哪个系列的片子。
一周热门 更多>