加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 1、驱动程序
    •  2、应用程序
    • 3、实际测试
    • 4、断电测试
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

RK3568笔记分享——如何挂载SPI FRAM铁电存储芯片

2023/09/22
3391
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

对于做快速存储采集数据类产品的用户来说,在处理突发掉电情况时需要保存现有数据并避免数据丢失,这种情况下有很多种解决方案,铁电存储器(FRAM) 就是个很好的选择。FRAM是一种具有快速写入速度的非易失性存储器,既可以进行非易失性数据存储,又可以像RAM一样操作。

本文将借助飞凌嵌入式OK3568-C开发板来为大家介绍一种采用FRAM的方案——使用SPI0挂载PB85RS2MC (FRAM) 芯片。本文所描述的驱动文件和应用文件,可联系飞凌嵌入式的技术支持获取。

修改思路——

我们要添加一个SPI设备,需要进行如下操作:在设备树中添加描述→设备树描述中对应设备驱动→设备驱动添加到内核。

修改结果——

修改  OK3568-linux-source/kernel/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi

修改如下:

接下来笔者为大家介绍一下适配的过程。

1、驱动程序

我们在menuconfig中搜索fm25、pb85等比较常用的FRAM字眼,发现并没有类似的驱动程序,这时就需要手写或者移植一个驱动程序。在搜遍各大网站之后找到了一个W25Q64的驱动,对比了一下PB85RS2MC的各种操作码以后,发现两者的操作码大差不差,因此就决定将W25Q64的驱动移植过来。根据PB85RS2MC芯片手册中叙述,各种操作码为:

因此,在驱动程序中宏定义以下操作码,以便在接下来的驱动程序中使用:

首先要在驱动程序中进行初始化函数和退出函数,也就是spidev_init和spidev_exit,init函数里就是进行字符设备的初始化,注册等的操作,exit函数就是要把我们注册的东西在退出时都释放掉,再者就是驱动程序和设备树匹配,匹配是通过compatible属性值匹配的,这里我们一定要和设备树中的compatible属性值一致,否则会匹配不成功。驱动程序中.compatible值如下图所示。

驱动和设备树匹配成功以后就要执行probe函数,这里probe函数执行了一些初始化和注册主次设备号的操作。我们可以通过是否打印spi_probe
success!
来判断驱动程序,是否和设备树匹配成功。

从PB85RS2MC芯片手册中看读的条件,读取FRAM存储单元的数据,需要READ的操作码,任意24位地址输入到SI。第一个spi_transfer 结构体用于发送命令cmd 到SPI设备,在读取数据之前准备设备,第二个是发送地址到SPI设备,第三个是接收从设备读取的数据。

这段代码实现了从 SPI设备中同步读取数据,并将数据复制到用户空间的功能。

从PB85RS2MC芯片手册中看写的条件,WREN命令用于设置写使能锁存器。需要在写操作(WRITE命令)
之前使用WREN命令设置写使能锁存器,WRITE命令将数据写入 FRAM存储单元阵列。WRITE操作码、任意24位地址和8位写入数据输入到 SI。

下面这段代码实现了向SPI设备发送写入使能命令的功能。

这段代码实现了向SPI设备同步写入数据的功能。它先发送写入使能命令,然后发送地址信息和数据。

下面这段代码向 SPI设备中同步写入数据的功能,将用户空间的数据复制到设备的发送缓冲区,并调用spidev_sync_write 函数将数据写入SPI 设备。

 2、应用程序

向SPI设备写数据,调用lseek来改变写入数据的位置,这样就可以在整个SPI设备里写数据,如./writeframAPP
/dev/pb85rs  0  forlinx

0是要写入的地址,forlinx是要写入的内容)。

从SPI设备读数据,调用lseek来改变读取数据的位置,这样就可以在整个SPI设备里读数据,如./readframAPP
/dev/pb85rs  0

0是要读取数据的地址)

3、实际测试

(1)首先将fram.ko,
readframAPP, writefram APP拷贝到OK3568-C开发板的任意文件夹中。

(2)用insmod加载fram.ko模块,出现spi_probe
success!
说明驱动和设备树匹配成功。

(3)在/dev/下看有没有pb85rs设备。

(4)使用./writeframAPP
/dev/pb85rs  1500  forlinx

向设备写数据,1500是地址,forlinx是要写入的内容。

(5)使用./readframAPP
/dev/pb85rs  1500

1500是要读取数据的地址)

4、断电测试

断电一天后重新读取PB85RS2MC的数据,发现数据仍然存在。验证了PB85RS2MC铁电存储芯片的断电数据保留特性。

至此,我们就完成了在OK3568-C开发板上添加一个新的SPI铁电存储芯片的操作!

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
MC9S08PA16AVTJ 1 NXP Semiconductors MICROCONTROLLER
$2.56 查看
PIC32MX795F512L-80I/PF 1 Microchip Technology Inc 32-BIT, FLASH, 80 MHz, RISC MICROCONTROLLER, PQFP100, 14 X 14 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下载ECAD模型
$10.4 查看
ATXMEGA32A4U-AUR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQFP44, 10 X 10 MM, 1 MM HEIGHT, 0.80 MM PITCH, GREEN, PLASTIC, MS-026ACB, LQFP-44

ECAD模型

下载ECAD模型
$13.97 查看
飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐

电子产业图谱

秉承专业态度,专注智能设备核心平台研发与制造,以技术研发创新为主导,以客户实用化,产品化为目标,把握嵌入式行业的前沿发展需求,利用核心技术为客户提供稳定、可靠、功能优异的高品质产品。合作联系:17713286011