参考资料

器件规格书:https://atta.szlcsc.com/upload/public/pdf/source/20131104/1457706659695.pdf
I2C总线规范:https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/nxp-designs/931/1/UM10204.pdf
第一次接触这种 FRAM 铁电随机存储芯片,发现有几点有意思的知识点,顺带记录一下,数据读写的操作就没啥记录的了。

芯片简介

FRAM 优点:
集结 RAM 的高读写速度但掉电数据丢失和 ROM 掉电仍可报错数据但读写速度很慢的优点。

FRAM 缺点:
访问次数有限(100亿次),超出后不再具有非易失性(即掉电丢失数据),但仍可作为 RAM 使用。

器件地址

高地址为表示方法

这颗芯片的容量有 512 字节,可以通过 I2C 指定地址来读写数据。由于 4KB 的内存地址超出了一个字节所能表示的范围(0-255),该器件采用 7bit 器件地址的最低位作为内存地址的高有效位,即可完整描述(0-511)。这样可以避免使用两个字节来表示内存地址,有效提升读写效率。

两个从机器件地址

但这样也带来了一个小弊端,该芯片会占用 I2C 总线的两个地址:(A2=0,A1=1,A8=0/1)
0x52 = 1010 010、0x53 = 1010 011

设备ID

通过以下方式实现区分命令与普通的数据读写操作

  1. 该芯片通过保留地址的方式来实现设备ID的获取功能.
  2. 通过将真实的器件地址作为保留器件地址的数据,来获取指定芯片的设备ID。


按上述步骤:

  1. 发起起始信号之后,发送保留从机地址 0xF8(所有设备都会给出应答信号)。
  2. 得到应答信号之后,发一次本芯片的器件地址 0x52 << 1(只有0x52设备会给出应答信号)。
  3. 得到应答信号之后,重新再发起起始信号,发送目标从机地址 0xF9(告诉 0x52 设备要读取设备ID)。
  4. 得到应答信号之后,即可连续读取三个字节的数据(0x52 设备会给出应答信号,并输出三个字节数据)。

上述 0xF8、0xF9 是包含了读写位,移除读写位得到 7bit 地址为 0x7C(1111 100),对应下方I2C标准规范(P16):

同样 I2C 标准规范也制定了读取设备 ID 的流程(P20):

实测的数据波形

下面解析的地址数据,包含了读写位:

对应的 Linux 应用层获取的代码:

bool get_pidmid(unsigned short *pid, unsigned short *mid)
{
struct i2c_msg msgs[2];
unsigned char val[3] = {0};
struct i2c_rdwr_ioctl_data i2c_data;
std::unique_lock<std::mutex> lock(mutex); memset(&msgs, 0x00, sizeof(msgs));
memset(&i2c_data, 0x00, sizeof(struct i2c_rdwr_ioctl_data)); i2c_data.nmsgs = 2;
i2c_data.msgs = msgs; char data = saddr << 1;
i2c_data.msgs[0].buf = &data;
i2c_data.msgs[0].len = 1;
i2c_data.msgs[0].addr = 0xF8 >> 1;
i2c_data.msgs[0].flags = 0; i2c_data.msgs[1].buf = (char*)val;
i2c_data.msgs[1].len = 3;
i2c_data.msgs[1].addr = 0xF9 >> 1;
i2c_data.msgs[1].flags = 1; if (ioctl(fd, I2C_RDWR, (unsigned long)&i2c_data) < 0){
return false;
} *pid = val[2] | ((val[1]&0x0F) << 8);
*mid = (val[0] << 4) | ((val[1]&0xF0) >> 4);
return true;
}

【随笔记】FRAM 铁电随机存储器(MB85RC04VPNF)的更多相关文章

  1. FRAM 铁电存储器

    铁电存储器与传统存储器的区别. 一:易失性的存储器包括静态存储器SRAM和动态存储器DRAM.           优点:读写速度快,读写寿命无次数限止.           缺点:掉电会丢失数据.  ...

  2. 用铁电存储器FRAM让穿戴式设备更省电

    可穿戴设备应用中的显示屏消耗了大部分电池电力.解决方法之一是直接提高电池容量,但是大容量电池会加大尺寸和重量,对可穿戴设备不合适,尤其是在市场不断追求更小型化的新款产品时更是如此.更具挑战性的是电池技 ...

  3. 树莓派4B-SPI读写flash-FM25CL16B(同时支持FM25CL64等其它系列Flash)

    1.树莓派SPI介绍 4B的引脚如下图所示: 其中Pin19.21.23是SPI0,接口定义如下所示: 时钟(SPI CLK, SCLK) 主机输出.从机输入(MOSI) 主机输入.从机输出(MISO ...

  4. ArduPilot存储管理 Storage EEPROM Flash

    AP_HAL::Storage 此类可以应用于所有平台.PX4v1平台支持8k的EEPROM,Pixhawk平台支持16k的FRAM铁电存储器 存储大小定义:libraries/AP_HAL/AP_H ...

  5. msp430FR5739 FRAM的学习

    FRAM,中文名称为铁电存储器..FRAM提供一种与RAM一致的性能,但又有与ROM 一样的非易失性. FRAM 克服以上二种记忆体的缺陷并合并它们的优点,它是全新创造的产品,一个非易失性随机存取储存 ...

  6. STC单片机掉电断电失电瞬间EEPROM数据保存处理办法(转)

    由于客户在请人设计开发一设备,但是设备用户处总停电,造成设备及其周边耗材损耗严重,因此请我司在现有STC为主要芯片的基础上做掉电瞬间EEPROM里的20个参数保存,上电后通过读取EEPROM中的参数回 ...

  7. 单片机(MCU)使用常用名字解释

    总线:指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信. 地址总线(AB):地址总线是单向的,用于传送地址信息.地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总 ...

  8. 主机-配件-接口-整机-3c-1

    standby 待机 hibernate 休眠(睡眠) power-off 关机 usb端口能给外部设备充电在低压状态(standby,hibernate,power-off),如果系统运行在batt ...

  9. RFID的基本组织构成

    RFID技术由3大组件构成, 包括: 阅读器.天线.标签三大组件. 阅读器 为RFID系统最重要也是最复杂的一个组件.因其工作模式一般是主动向标签询问标识信息, 所以有时又被称为询问器(Interro ...

随机推荐

  1. 聪明的暴力枚举求abcde/fghij=n

    目录 前言 一.题目 二.暴力初解 三.优化再解(借鉴bitmap) 总结 前言 枚举如何聪明的枚举?那就是优化啦!下面梳理之前做过的一个暴力枚举的题,想了蛮久最后把它优化了感觉还不错,算是比较聪明的 ...

  2. 华为开发者大会HDC2022:HMS Core 持续创新,与开发者共创美好数智生活

    11月4日,华为开发者大会HDC2022在东莞松山湖拉开帷幕.HMS Core在本次大会上带来了包括音频编辑服务的高拟真歌声合成技术.视频编辑服务的智能提取精彩瞬间功能.3D Engine超大规模数字 ...

  3. .NET性能优化-是时候换个序列化协议了

    计算机单机性能一直受到摩尔定律的约束,随着移动互联网的兴趣,单机性能不足的瓶颈越来越明显,制约着整个行业的发展.不过我们虽然不能无止境的纵向扩容系统,但是我们可以分布式.横向的扩容系统,这听起来非常的 ...

  4. Git配置和使用?Git你真的会用么?Git与SVN的主要区别

    1.Git环境配置    在学习Git之前,首先要知道什么是版本控制 1.1 版本控制:版本迭代.新的版本!版本管理器 版本控制是开发过程中用于管理我们的文件.目录或工程内容的修改内容,查看修改历史记 ...

  5. Go语言核心36讲49

    我们在上一篇文章中简单地讨论了网络编程和socket,并由此提及了Go语言标准库中的syscall代码包和net代码包. 我还重点讲述了net.Dial函数和syscall.Socket函数的参数含义 ...

  6. API 如何选择 REST,GraphQL还是gRPC

    关于API的演进 CORBA RDA XML-RPC SOAP REST JSON-RPC ODATA GraphQL gRPC       gRPC是什么?

  7. Android ViewPager2 + Fragment + BottomNavigationView 联动

    Android ViewPager2 + Fragment + BottomNavigationView 联动 本篇主要介绍一下 ViewPager2 + Fragment + BottomNavig ...

  8. js day04 综合案例秒数计算

    <script>         //用户输入总秒数         let second = +prompt('请输入总秒数:')         //计算时分秒         fun ...

  9. 单节锂电池充电管理芯片,IC电路图

    PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器.PW4054 适合给 USB 电源以及适配器电源供电.基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测 ...

  10. TypeScript 之 控制流分析(Control Flow Analysis)

    控制流分析(Control Flow Analysis) 描述: CFA 几乎总是采用联合,基于代码逻辑去减少联合里面的类型数量. 大多数时候,CFA 在自然的JavaScript布尔逻辑中工作,但是 ...