用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();

}

}

此帖出自小平头技术问答

用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();

}

}

此帖出自小平头技术问答

fm25cl64 linux,FM25CL64铁电存储器的问题相关推荐

  1. Linux系统 通过i2c读写铁电存储器 ram

    imx6ul上要加入铁电存储器,型号fm24cl64b,存储器焊接在i2c 1上,期间选择位都为0,使用open打开/dev/i2c-0,配置地址时舍弃最后一位读写位,系统会自动提供,(如:铁电存储器 ...

  2. Cypress代理铁电存储器FM25V10-GTR中文资料

    FM25V10-GTR是采用先进铁电工艺的1Mbit非易失性存储器.铁电存储器或FRAM是非易失性的,并且执行类似于RAM的读取和写入操作.它提供了151年的可靠数据保留,同时消除了由串行闪存,EEP ...

  3. Cyprss串行铁电存储器64Kbit FM25CL64B-GTR

    FM25CL64B-GTR是串行FRAM存储器.存储器阵列在逻辑上组织为8,192×8位,可使用行业标准的串行外围设备接口(SPI)总线进行访问.FRAM的功能操作类似于串行闪存和串行EEPROM.F ...

  4. CYPRESS代理铁电存储器中文资料FM25V05-GTR

    赛普拉斯FM25V05-GTR是一款非易失性铁电存储器,采用先进铁电工艺的512Kb非易失性存储器.主要提供了151年的可靠数据保留,同时消除了由串行闪存,EEPROM和其他非易失性存储器引起的复杂性 ...

  5. 铁电存储器FRAM的特性

    首先我们解释一下FRAM是什么.FRAM是电子元器件中的一种半导体产品.半导体产品有微处理器.逻辑器件.模拟器件.存储器件等各种器件. FRAM是DRAM和闪存等存储设备之一.FRAM代表铁电随机存取 ...

  6. FRAM 铁电存储器

    什么是FRAM FRAM (铁电随机存取存储器) 是被称为 FeRAM.这种存储器采用铁电质膜用作电容器来存储数据.FRAM 具有 ROM (只读存储器) 和 RAM (随机存取器),在高速写入.高耐 ...

  7. 铁电存储器耐久性设计要求

    铁电存储器是一种融合了在断电的情况下也能保留数据的非易失性.随机存取两个特长的铁电随机存储器(内存).FRAM的数据保持不仅不需要备用电池,而且与EEPROM.FLASH等传统的非易失性存储器相比是具 ...

  8. 铁电存储器FRAM与其他内存的比较

    FRAM是一种非易失性存储器,因为它结合了ram和非易失性存储器的优点.相对于闪存/EEPROM的写入优势和非易失性使其非常适合在断电情况下存储数据.具有高读写耐久性和快速写入速度.英尚微存储芯片供应 ...

  9. 介绍一款cypress铁电存储器CY15B104QSN

    cypress Excelon-Ultra CY15B104QSN采用了高级铁电工艺的高性能4Mbit非易失性存储器.铁电随机存取存储器(即FRAM)与RAM相同,是执行读和写操作的易失性存储器.它提 ...

最新文章

  1. jsp,OGNL调用后台Action的某方法
  2. golang安装:GOPATH环境变量无需配置说明(>1.13)
  3. 获取用户列表为空_Python中最常见的10个列表操作
  4. 前端学习(3106):react-hello-jsx小练习
  5. 系统总结学习 Python 的 14 张思维导图
  6. asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider
  7. JS Math.sin() 与 Math.cos() 用法
  8. MyBatis学习总结(7)——Mybatis缓存
  9. 腾讯IDG投资的明星无人车公司Zoox,拿下硅谷第一张载客许可
  10. givemesomecredit数据_EasyEnsemble:一种简单的不平衡数据的建模方法(附测试代码)...
  11. .NET 调用外部exe程序,出现已停止工作
  12. 致远互联开始向云端生态发力奔跑
  13. EXCEL startup.exe 宏病毒
  14. NutUI 京东小程序发布了!
  15. Ubuntu进入登录界面鼠标键盘失灵
  16. 【数据分享】我国地级市绿地利用现状数据(9个指标\Shp格式)
  17. 网络技术 | Cisco Packet Tracer 6.2安装包 安装教程
  18. 流放者柯南联机显示无法链接服务器,《流放者柯南》联机疑难问题解答
  19. 网易高工手打:中高级前端必须注意的40条移动端H5坑位指南
  20. label-studio批量上传本地数据

热门文章

  1. 如何用谷歌地球预览测区地形起伏变化高程值?
  2. Android eclipse 程序调试
  3. Linux消息队列原理与应用
  4. AI语音识别常见算法简介--目录参考
  5. c++ (Qt MinGW32) 调用 python脚本
  6. Rufus 3.19 beta 引入自定义 Windows 11 安装对话框
  7. Android 查看图片的经纬度
  8. 怎么下载2.5维虚拟城市地图
  9. 请求转发与重定向到底有哪些区别?
  10. 基于labview的小波去噪算法及传统去噪算法性能的对比分析