我尝试将 W25Qxx 与 MSP430F5529连接、但无法读取缓冲区请找到问题并尽快通知我。
int main (空)
{
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD;//停止看门狗计时器
P1OUT |= 0x02;//为 LED 设置 P1.0
//为从器件复位设置 P1.1
P1DIR |= 0x03;//将 P1.0-2设置为输出方向
P3SEL |= BIT3+BIT4;// P3.3、4选项选择
P2SEL |= BIT7;// P2.7选项选择
UCA0CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB;// 3引脚、8位 SPI 主器件
//时钟极性高,MSB
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0x02;///2
UCA0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断
P1OUT &=~0x02;//现在 SPI 信号已初始化、
P1OUT |= 0x02;//复位从器件
// for (i=50;i>0;i--);//等待从设备初始化
// MST_Data = 0x01;//初始化数据值
// SLV_Data = 0x00;//
// while (!(UCA0IFG&UCTXIFG));// USCI_A0 TX 缓冲区准备就绪?
// UCA0TXBUF = MST_Data;//发送第一个字符
while (1)
{
Read_SingleBytes (0x3);
}
_bis_SR_register (LPM0_bits + GIE);// CPU 关闭、启用中断
}
int datacount=0;
unsigned char data=0;
unsigned char GCU_Tx_Data[10]={0};
unsigned char GCU_recged_Data[10]={0};
unsigned char sFLASH_SendByte (unsigned char * UDATA、unsigned char count)
{
//清除 Rx 中断标志
while (!(UCA0IFG&UCTXIFG));
UCA0IFG&=~UCRXIFG;
for (datacount=0;<count;datacount++)
UCA0TXBUF = UDATA[数据连接];
//等待传输完成
while (UCRXIFG=0);
//接收数据
* UDATA=UCA0RXBUF;
返回* UDATA;
}
unsigned char read_SingleBytes (unsigned int Liu Flash_Add)
{
unsigned char lcu_read_Data=0;
SPI_chipLow ();
GCU_Tx_Data[0]= 0x02;//读取
GCU_Tx_Data[1]=((Liu Flash_Add & 0xFF000000)>> 24);
GCU_Tx_Data[2]=((Liu Flash_Add & 0x0000)>> 16);
GCU_Tx_Data[3]=((Liu Flash_Add & 0xFF00)>> 8);
GCU_Tx_Data[4]=(Liu Flash_ADD 和0xFF);
LCU_READ_Data=sFLASH_SendByte (GCU_Tx_Data、5);
SPI_chipHigh ();
返回(LCU_READ_Data);
}
void SPI_chipHigh (void)
{
SLAVE_CS_OUT |= SLAVE_CS_PIN;
}
void SPI_chipLow (void)
{
Slave_CS_OUT &=~(SLAVE_CS_PIN);
}