加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1、驅(qū)動程序
    • ?2、應(yīng)用程序
    • 3、實際測試
    • 4、斷電測試
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

RK3568筆記分享——如何掛載SPI FRAM鐵電存儲芯片

2023/09/22 來源:wechat
2869
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

對于做快速存儲采集數(shù)據(jù)類產(chǎn)品的用戶來說,在處理突發(fā)掉電情況時需要保存現(xiàn)有數(shù)據(jù)并避免數(shù)據(jù)丟失,這種情況下有很多種解決方案,鐵電存儲器(FRAM) 就是個很好的選擇。FRAM是一種具有快速寫入速度的非易失性存儲器,既可以進(jìn)行非易失性數(shù)據(jù)存儲,又可以像RAM一樣操作。

本文將借助飛凌嵌入式OK3568-C開發(fā)板來為大家介紹一種采用FRAM的方案——使用SPI0掛載PB85RS2MC (FRAM) 芯片。本文所描述的驅(qū)動文件和應(yīng)用文件,可聯(lián)系飛凌嵌入式的技術(shù)支持獲取。

修改思路——

我們要添加一個SPI設(shè)備,需要進(jìn)行如下操作:在設(shè)備樹中添加描述→設(shè)備樹描述中對應(yīng)設(shè)備驅(qū)動→設(shè)備驅(qū)動添加到內(nèi)核。

修改結(jié)果——

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

修改如下:

接下來筆者為大家介紹一下適配的過程。

1、驅(qū)動程序

我們在menuconfig中搜索fm25、pb85等比較常用的FRAM字眼,發(fā)現(xiàn)并沒有類似的驅(qū)動程序,這時就需要手寫或者移植一個驅(qū)動程序。在搜遍各大網(wǎng)站之后找到了一個W25Q64的驅(qū)動,對比了一下PB85RS2MC的各種操作碼以后,發(fā)現(xiàn)兩者的操作碼大差不差,因此就決定將W25Q64的驅(qū)動移植過來。根據(jù)PB85RS2MC芯片手冊中敘述,各種操作碼為:

因此,在驅(qū)動程序中宏定義以下操作碼,以便在接下來的驅(qū)動程序中使用:

首先要在驅(qū)動程序中進(jìn)行初始化函數(shù)和退出函數(shù),也就是spidev_init和spidev_exit,init函數(shù)里就是進(jìn)行字符設(shè)備的初始化,注冊等的操作,exit函數(shù)就是要把我們注冊的東西在退出時都釋放掉,再者就是驅(qū)動程序和設(shè)備樹匹配,匹配是通過compatible屬性值匹配的,這里我們一定要和設(shè)備樹中的compatible屬性值一致,否則會匹配不成功。驅(qū)動程序中.compatible值如下圖所示。

驅(qū)動和設(shè)備樹匹配成功以后就要執(zhí)行probe函數(shù),這里probe函數(shù)執(zhí)行了一些初始化和注冊主次設(shè)備號的操作。我們可以通過是否打印spi_probe
success!
來判斷驅(qū)動程序,是否和設(shè)備樹匹配成功。

從PB85RS2MC芯片手冊中看讀的條件,讀取FRAM存儲單元的數(shù)據(jù),需要READ的操作碼,任意24位地址輸入到SI。第一個spi_transfer 結(jié)構(gòu)體用于發(fā)送命令cmd 到SPI設(shè)備,在讀取數(shù)據(jù)之前準(zhǔn)備設(shè)備,第二個是發(fā)送地址到SPI設(shè)備,第三個是接收從設(shè)備讀取的數(shù)據(jù)。

這段代碼實現(xiàn)了從 SPI設(shè)備中同步讀取數(shù)據(jù),并將數(shù)據(jù)復(fù)制到用戶空間的功能。

從PB85RS2MC芯片手冊中看寫的條件,WREN命令用于設(shè)置寫使能鎖存器。需要在寫操作(WRITE命令)
之前使用WREN命令設(shè)置寫使能鎖存器,WRITE命令將數(shù)據(jù)寫入 FRAM存儲單元陣列。WRITE操作碼、任意24位地址和8位寫入數(shù)據(jù)輸入到 SI。

下面這段代碼實現(xiàn)了向SPI設(shè)備發(fā)送寫入使能命令的功能。

這段代碼實現(xiàn)了向SPI設(shè)備同步寫入數(shù)據(jù)的功能。它先發(fā)送寫入使能命令,然后發(fā)送地址信息和數(shù)據(jù)。

下面這段代碼向 SPI設(shè)備中同步寫入數(shù)據(jù)的功能,將用戶空間的數(shù)據(jù)復(fù)制到設(shè)備的發(fā)送緩沖區(qū),并調(diào)用spidev_sync_write 函數(shù)將數(shù)據(jù)寫入SPI 設(shè)備。

?2、應(yīng)用程序

向SPI設(shè)備寫數(shù)據(jù),調(diào)用lseek來改變寫入數(shù)據(jù)的位置,這樣就可以在整個SPI設(shè)備里寫數(shù)據(jù),如./writeframAPP
/dev/pb85rs ?0 ?forlinx

0是要寫入的地址,forlinx是要寫入的內(nèi)容)。

從SPI設(shè)備讀數(shù)據(jù),調(diào)用lseek來改變讀取數(shù)據(jù)的位置,這樣就可以在整個SPI設(shè)備里讀數(shù)據(jù),如./readframAPP
/dev/pb85rs ?0

0是要讀取數(shù)據(jù)的地址)

3、實際測試

(1)首先將fram.ko,
readframAPP, writefram APP拷貝到OK3568-C開發(fā)板的任意文件夾中。

(2)用insmod加載fram.ko模塊,出現(xiàn)spi_probe
success!
說明驅(qū)動和設(shè)備樹匹配成功。

(3)在/dev/下看有沒有pb85rs設(shè)備。

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

向設(shè)備寫數(shù)據(jù),1500是地址,forlinx是要寫入的內(nèi)容。

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

1500是要讀取數(shù)據(jù)的地址)

4、斷電測試

斷電一天后重新讀取PB85RS2MC的數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)仍然存在。驗證了PB85RS2MC鐵電存儲芯片的斷電數(shù)據(jù)保留特性。

至此,我們就完成了在OK3568-C開發(fā)板上添加一個新的SPI鐵電存儲芯片的操作!

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
STM32F401VET6 1 STMicroelectronics High-performance access line, Arm Cortex-M4 core with DSP and FPU, 512 Kbytes of Flash memory, 84 MHz CPU, ART Accelerator

ECAD模型

下載ECAD模型
$10.53 查看
ATXMEGA256C3-AU 1 Microchip Technology Inc IC MCU 8BIT 256KB FLASH 64TQFP
$9 查看
STM32F429ZIT6TR 1 STMicroelectronics High-performance advanced line, Arm Cortex-M4 core with DSP and FPU, 2 Mbytes of Flash memory, 180 MHz CPU, ART Accelerator, Chrom-ARTAccelerator, FMC with SDRAM, TFT

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

秉承專業(yè)態(tài)度,專注智能設(shè)備核心平臺研發(fā)與制造,以技術(shù)研發(fā)創(chuàng)新為主導(dǎo),以客戶實用化,產(chǎn)品化為目標(biāo),把握嵌入式行業(yè)的前沿發(fā)展需求,利用核心技術(shù)為客戶提供穩(wěn)定、可靠、功能優(yōu)異的高品質(zhì)產(chǎn)品。合作聯(lián)系:17713286011