fm25cl64 linux,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();
}
}
此帖出自小平头技术问答
用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铁电存储器的问题相关推荐
- Linux系统 通过i2c读写铁电存储器 ram
imx6ul上要加入铁电存储器,型号fm24cl64b,存储器焊接在i2c 1上,期间选择位都为0,使用open打开/dev/i2c-0,配置地址时舍弃最后一位读写位,系统会自动提供,(如:铁电存储器 ...
- Cypress代理铁电存储器FM25V10-GTR中文资料
FM25V10-GTR是采用先进铁电工艺的1Mbit非易失性存储器.铁电存储器或FRAM是非易失性的,并且执行类似于RAM的读取和写入操作.它提供了151年的可靠数据保留,同时消除了由串行闪存,EEP ...
- Cyprss串行铁电存储器64Kbit FM25CL64B-GTR
FM25CL64B-GTR是串行FRAM存储器.存储器阵列在逻辑上组织为8,192×8位,可使用行业标准的串行外围设备接口(SPI)总线进行访问.FRAM的功能操作类似于串行闪存和串行EEPROM.F ...
- CYPRESS代理铁电存储器中文资料FM25V05-GTR
赛普拉斯FM25V05-GTR是一款非易失性铁电存储器,采用先进铁电工艺的512Kb非易失性存储器.主要提供了151年的可靠数据保留,同时消除了由串行闪存,EEPROM和其他非易失性存储器引起的复杂性 ...
- 铁电存储器FRAM的特性
首先我们解释一下FRAM是什么.FRAM是电子元器件中的一种半导体产品.半导体产品有微处理器.逻辑器件.模拟器件.存储器件等各种器件. FRAM是DRAM和闪存等存储设备之一.FRAM代表铁电随机存取 ...
- FRAM 铁电存储器
什么是FRAM FRAM (铁电随机存取存储器) 是被称为 FeRAM.这种存储器采用铁电质膜用作电容器来存储数据.FRAM 具有 ROM (只读存储器) 和 RAM (随机存取器),在高速写入.高耐 ...
- 铁电存储器耐久性设计要求
铁电存储器是一种融合了在断电的情况下也能保留数据的非易失性.随机存取两个特长的铁电随机存储器(内存).FRAM的数据保持不仅不需要备用电池,而且与EEPROM.FLASH等传统的非易失性存储器相比是具 ...
- 铁电存储器FRAM与其他内存的比较
FRAM是一种非易失性存储器,因为它结合了ram和非易失性存储器的优点.相对于闪存/EEPROM的写入优势和非易失性使其非常适合在断电情况下存储数据.具有高读写耐久性和快速写入速度.英尚微存储芯片供应 ...
- 介绍一款cypress铁电存储器CY15B104QSN
cypress Excelon-Ultra CY15B104QSN采用了高级铁电工艺的高性能4Mbit非易失性存储器.铁电随机存取存储器(即FRAM)与RAM相同,是执行读和写操作的易失性存储器.它提 ...
最新文章
- jsp,OGNL调用后台Action的某方法
- golang安装:GOPATH环境变量无需配置说明(>1.13)
- 获取用户列表为空_Python中最常见的10个列表操作
- 前端学习(3106):react-hello-jsx小练习
- 系统总结学习 Python 的 14 张思维导图
- asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider
- JS Math.sin() 与 Math.cos() 用法
- MyBatis学习总结(7)——Mybatis缓存
- 腾讯IDG投资的明星无人车公司Zoox,拿下硅谷第一张载客许可
- givemesomecredit数据_EasyEnsemble:一种简单的不平衡数据的建模方法(附测试代码)...
- .NET 调用外部exe程序,出现已停止工作
- 致远互联开始向云端生态发力奔跑
- EXCEL startup.exe 宏病毒
- NutUI 京东小程序发布了!
- Ubuntu进入登录界面鼠标键盘失灵
- 【数据分享】我国地级市绿地利用现状数据(9个指标\Shp格式)
- 网络技术 | Cisco Packet Tracer 6.2安装包 安装教程
- 流放者柯南联机显示无法链接服务器,《流放者柯南》联机疑难问题解答
- 网易高工手打:中高级前端必须注意的40条移动端H5坑位指南
- label-studio批量上传本地数据