This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
我已通过 SPI 将 CC1120模块与 MSP430F5529 Launchpad 连接。但我无法读取我已通过 SPI 写入同一寄存器的相同数据。这意味着我的 SPI 不能正常工作。您能否向我推荐一些示例代码或文档。以下是代码 我写过
#include
unsigned char 命令 Byte、dataByte、receivedByte、i;
void SPI_init();
void sendCommand (unsigned char);
void sendData (unsigned char);
unsigned char receiveData (void);
void CC1120_init();
void send_Serial (unsigned char);
void init_serial (void);
void send_value (unsigned char);
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
//SFRIE1=0X0010;
init_serial();
spi_init(); //初始化 SPI
CC1120_init(); //初始化射频设置
P1OUT=0x01; //选择输出
P1OUT^= BIT0;
sendCommand (0x80);
receivedByte=receiveData();
SEND_VALUE (接收字节);
sendCommand (0x31);
receivedByte=receiveData();
SEND_VALUE (接收字节);
sendCommand (0x34);//启用 Rx 模式
receivedByte=receiveData();
SEND_VALUE (接收字节);
/* DO //***检查空 RXFIFO 的条件
{
P2OUT&=~BIT2;
对于(i=0;i<128;i++)
{
receivedByte = receiveData();
//send_value (receivedByte);
SEND_Serial ('B');
}
P2OUT|=BIT2;
_DELAY_CYCLES (1000);
}while (1);*/
返回0;
}
void sendCommand (无符号字符命令字节)
{
UCB0TXBUF =命令字节; //发送命令字节
while ((((UCB0IFG&UCTXIFG)!=UCTXIFG));
}
void send_value (无符号字符字节)
{
unsigned char 字节2、字节1、字节0;
字节2=(字节/100);
字节2=字节2|0X30;
SEND_Serial (字节2);
字节=字节%100;
字节1 =字节/10;
字节1=字节1|0X30;
SEND_Serial (字节1);
字节0=byte%10;
字节0=字节0|0X30;
SEND_Serial (字节0);
SEND_Serial ('\n');
}
void send_Serial (无符号字符字节)
{
UCA1TXBUF=字节;
//while (UCA1STAT 和 UCBUSY);
while (!(((UCA1IFG&UCTXIFG)=UCTXIFG));
}
void init_serial (void)
{
P4SEL|=0X30;//选择 P4.4、5作为 TxD、RxD;
UCA1CTL1|=UCSWRST;//复位 UART
UCA1CTL1|=UCSSEL_1;//选择32668HZ
UCA1BR0=3;//设置9600波特率
UCA1BR1=0x00;
UCA1IE=0x03;
UCA1MCTL=0x06;
UCA1CTL0=0x00;
UCA1CTL1 &=~UCSWRST;
}
void SPI_init()
{
P2DIR|=BIT2; //为输出配置 CS
P2OUT = BIT2; // CS High
P3REN=BIT1; //
P3DIR |= BIT0 + BIT2; //设置为输出
P3SEL = BIT0+ BIT1 + BIT2; //配置 SPI
/* USCI */
UCB0CTL1 = UCSWRST; //将状态机复位
UCB0CTL0 |= UCCKPL + UCMSB+UCMST + UCSYNC; // 3引脚8位 SPI 主器件
UCB0CTL1 |= UCSSEL_2; // USCI 时钟源:SMCLK
UCB0BR0 |= 0x02;
UCB0BR1 = 0;
UCB0IE=0x03;
UCB0CTL1 &=~UCSWRST; //启用模块或模块初始化
P2OUT &=~BIT2; //选择设备
while (((P3IN&0x02)=0x02);
}
void sendData (无符号字符数据字节)
{
UCB0TXBUF =数据字节; //输入要发送的0-255值
// while (UCB0STAT 和 UCBUSY); //等待移位寄存器和缓冲区为空完成
while ((((UCB0IFG&UCTXIFG)!=UCTXIFG));
}
unsigned char receiveData()
{
unsigned char receivedByte;
while ((((UCB0IFG&UCRXIFG)!=UCRXIFG));
接收字节= UCB0RXBUF; //存储接收到的数据
return receivedByte;
}
空 CC1120_init()
{
receivedByte=receiveData();
SEND_VALUE (receiveData);//1st 显示
while (!(receivedByte&0x00)=0x00);
//while (!((P3IN&0x02)=0x02);
sendCommand (0x40);
sendData (0x20);
}
感谢您的回复。
SPI 设置中有一个小错误、现在发现它、SPI 工作正常。请在此处结束此讨论。
谢谢、
Pavan