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.

[参考译文] MSP430F5529:MSP430F5529 SPI 读取失败、W25Q16JV

Guru**** 657980 points
Other Parts Discussed in Thread: MSP430F5529
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1062429/msp430f5529-msp430f5529-spi-read-fail-with-w25q16jv

器件型号:MSP430F5529

我尝试将 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);