打印

关于SPIAT25256,为什么我的AT25256读写不正确

[复制链接]
3195|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gqh|  楼主 | 2007-9-19 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的AT25256读写不正确,请帮忙看下
//////////////////////////////////////
void SPI_WREN(void)
{  
  SPI_CS=0;  //选中AT25256
  Tx_SPI(0x06); //写允许,只有操作码
  SPI_CS=1; 
}
///////////////////////////////////
void SPI_WRDI(void)
{
  SPI_CS=0;    //选中AT25256
  Tx_SPI(0x04); //写禁止,只有操作码
  SPI_CS=1;  
}
////////////////////////////////////
uchar SPI_RDSR(void)
{
 uchar read_state;   //读状态寄存器,操作码+一个字节
 SPI_CS=0;    //选中AT25256
 Tx_SPI(0x05);
 read_state=Rx_SPI();
 SPI_CS=1;   
 return read_state;
}
////////////////////////////////////////////
void SPI_WRITE(uchar address_H,uchar address_L,write_data)

  uchar state;
  state=1;
  SPI_WREN();  //开启写
  SPI_CS=0;    //选中AT25256
  Tx_SPI(0x02); //写的指令
  Tx_SPI(address_H);
  Tx_SPI(address_L);
  Tx_SPI(write_data);
  SPI_CS=1;
  while(state)//写等待
  {state=SPI_RDSR();}
  SPI_WRDI();  //禁止写
}
/////////////////////////////////
uchar SPI_READ(uchar address_H,uchar address_L)
{
  uchar Rx_data;
  //SPI_HOLD=1;
  SPI_CS=0;    //选中AT25256
  Tx_SPI(0x03);
  Tx_SPI(address_H);
  Tx_SPI(address_L);
  Rx_data=Rx_SPI();
  SPI_CS=1; 
  return Rx_data; 
}
//////////////////////////////////////////

相关帖子

沙发
gqh|  楼主 | 2007-9-19 15:37 | 只看该作者

怎么就没人发表点意见和建议啊

使用特权

评论回复
板凳
ayb_ice| | 2007-9-19 16:18 | 只看该作者

SPI这东西很简单...

使用特权

评论回复
地板
computer00| | 2007-9-19 16:32 | 只看该作者

检查时序是否正确,速度是否太快,硬件是否正常,如电压

使用特权

评论回复
5
gqh|  楼主 | 2007-9-19 16:54 | 只看该作者

我是用的c8051f,

我是用的c8051f,里面有自带的SPI功能,我是想问下,我上面的直接操作AT25256是否正确

使用特权

评论回复
6
jantw996| | 2010-6-17 09:15 | 只看该作者
我现在也在学习SPI,我用端口模拟SPI通讯成功,可以正常读写25256,但用单片机自己带的spi通讯没有成功

我的QQ:392928606   联系我和你一起学习

谢谢SPI通讯成功的朋友指点下,我的程序和他的几乎没有分别,现在是写数据到25256不成功,简单的连那个

寄存器设置的写入都不成功,请教大家了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

gqh

1

主题

7

帖子

1

粉丝