4980|1

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

FM25CL64铁电存储器的问题 [复制链接]

用SPI读FM25CL64铁电存储器状态,为什么收到的都是发送数据。
比如发送0x05,收到的也是0x05,
另:没有将SPI设置成内部连接



#define RDSR  0x05


Uint16 FM25CL64_Read(Uint16 address);
void FM25CL64_Write_Enable(void);
void FM25CL64_Write(Uint16 address,Uint16 data);
Uint8 FM25CL64_Read_Status();
Uint16 SpiWrite(Uint16 data);
Uint16 Spi_TxReady(void);
Uint16 Spi_RxReady(void);
//函数:Init_Spi_GPIO
//变量:无
//返回值:无
//功能:设置GPIO口B组54-57
void Init_Spi_GPIO(void)
{
   EALLOW;
   //SPISIMOA端口设置
   GpioCtrlRegs.GPBMUX2.bit.GPIO54=1;
   GpioCtrlRegs.GPBQSEL2.bit.GPIO54=3;
   
   //SPISOMOIA端口设置   
   GpioCtrlRegs.GPBMUX2.bit.GPIO55=1;
   GpioCtrlRegs.GPBQSEL2.bit.GPIO55=3;
   
   //SPICLKA端口设置   
   GpioCtrlRegs.GPBMUX2.bit.GPIO56=1;
   GpioCtrlRegs.GPBQSEL2.bit.GPIO56=3;
  
   //SPISTEA端口设置  
   GpioCtrlRegs.GPBMUX2.bit.GPIO57=0;
   GpioCtrlRegs.GPBDIR.bit.GPIO57=1;
   EDIS;
}
//函数:InitSpi
//变量:无
//返回值:无
//功能:对SPI模块进行初始化
void InitSpi(void)
{
   // Initialize SPI-A:
   SpiaRegs.SPICCR.all=0x0007;//SPI软件复位
   SpiaRegs.SPICTL.all=0x0006;       //Interrupt disabled
   //SpiaRegs.SPISTS.all=0x0000;
   SpiaRegs.SPIBRR =9;           // Baud rate  30Mhz /(9 + 1) = 3MHz
   SpiaRegs.SPIPRI.all = 0x30; // free run
   SpiaRegs.SPICCR.all=0x0087;//使SPI退出复位状态
   SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
   SpiaRegs.SPICTL.bit.CLK_PHASE   = 0;//选择0模式
  
   //tbd...

}

Uint8 FM25CL64_Read_Status()
{
Uint8 status;
GpioDataRegs.GPBCLEAR.bit.GPIO57 = 1;//使能
SpiWrite(RDSR);
    status= SpiWrite(0xFF);
    GpioDataRegs.GPBSET.bit.GPIO57 = 1;//关闭使能
//判断SPI发送准备好
return status;
}
/函数:SpiWrite
//变量:Uint16 data,SPI传输的数据
//返回值:无
//功能:实现SPI传输数据的功能
Uint16 SpiWrite(Uint16 data)
{
   Uint8 ret;
   SpiaRegs.SPITXBUF = data;
   while(Spi_RxReady() == 0);
   ret = SpiaRegs.SPIRXBUF>>8;
   DELAY_US(10);
   return ret;
}
//函数:Spi_TxReady
//变量:无
//返回值:无
//功能:描述SPI具备发送的条件
Uint16 Spi_TxReady(void)
{
Uint16 in;
if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)
{
  in = 0;
}
else
{
  in = 1;
}
return(in);
}
//函数:Spi_RxReady
//变量:无
//返回值:无
//功能:描述SPI具备发送的条件
Uint16 Spi_RxReady(void)
{
Uint16 im;
if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)
{
  im = 1;
}
else
{
  im = 0;
}
return(im);
}

void main(void)
{
//int i,j,k;
Init_Spi_GPIO();
   InitSpi();
while(1)
{       FM25CL64_Read_Status();
  }
}



最新回复

参考一款跟铁电存储器类似的产品叫做MRAM存储器,容量比铁电存储器大,资料共享 [attach]403993[/attach]   详情 回复 发表于 2019-3-5 09:56
 
点赞 关注

回复
举报

935

帖子

1

TA的资源

禁止发言

沙发
 
参考一款跟铁电存储器类似的产品叫做MRAM存储器,容量比铁电存储器大,资料共享
(, 下载次数: 1)
 
个人签名存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表