|
/**********************************************
初始化
***********************************************/
void Spi_Init()
{
P3SEL = 0x0e;//SPI
P3DIR |= BIT0 + BIT1 + BIT3;//0 1 3 为输出 2为输入
P3DIR &= ~BIT2;
UCB0CTL1 = UCSWRST;//使能
UCB0CTL0 |= UCMSB + UCMST + UCMODE_0+ UCSYNC + UCCKPL;
UCB0CTL1 |= UCSSEL_2; //SMCLK
UCB0BR0 =0;
UCB0BR1 =0; //0分频
UCB0CTL1 &= ~UCSWRST;
}
/**********************************************
函数功能:写data
函数参数:uchar Data
***********************************************/
void Write_Data(uchar Data)//此函数确定可以讲Data写入UCB0TXBUF,验证成功
{
UCB0TXBUF = Data;
while(!(IFG2&UCB0TXIFG));
}
/**********************************************
函数功能:等待不忙
函数参数:
//读取状态寄存器
//bit7 bit6 bit6 bit6 bit6 bit6 bit6 bit6
//RDY/BUSY COMP 1 0 1 1 PROTECT PAGE SIZE
If bit 7 is a 1, then the device is
not busy and is ready to accept the next command
***********************************************/
void Until_Ready()//这里无法跳出循环
{
uchar x=0x00;
while(!(x&0x80))
{
AT45_CS_0;
Write_Data(0xd7);
x = UCB0RXBUF;
AT45_CS_1;
}
}
我的理解就是,首先配置好430的spi。然后编写向flash写一个数据
然后读数据的话,先发控制字,再直接读取UCB0RXBUF 的内容,读出来的总是是0,总是感觉这样不对,求指导啊。。。
正是因为读出来的都是0,所以void Until_Ready()//这里无法跳出循环,求解释,求指导 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|