搜索
bottom↓
回复: 0

430和AT45DB642D怎么进行SPI传输问题

[复制链接]

出0入0汤圆

发表于 2013-1-6 16:05:18 | 显示全部楼层 |阅读模式
/**********************************************
初始化
***********************************************/
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周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 05:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表