99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

MRAM替代EEPROM:瑞薩RA2L1工業(yè)數(shù)據(jù)存儲方案實踐

MRAM替代EEPROM:瑞薩RA2L1工業(yè)數(shù)據(jù)存儲方案實踐 做工業(yè)嵌入式設(shè)備的這幾年一提到“存儲和讀取數(shù)據(jù)”很多人第一反應(yīng)就是 SPI Flash 或者 I2C EEPROM??梢坏﹫鼍白兂筛哳l寫日志、斷電要保數(shù)據(jù)、產(chǎn)品生命周期內(nèi)要反復(fù)擦寫這兩類器件很容易成為整個系統(tǒng)里最先掉鏈子的部分。我最近在一個工業(yè)數(shù)據(jù)采集器項目里把這些底層存儲整個換成了 Everspin 的 MR25H40CDF 磁阻存儲器MRAM主控用的是瑞薩 R7FA2L1AB2DFP搭建了一套適合工業(yè)環(huán)境的數(shù)據(jù)讀寫方案。這篇就完整記錄這顆 MRAM 和這顆 MCU 的配合過程為什么選了 MRAM、硬件怎么接、FSP 里怎么配置 RSPI、驅(qū)動代碼如何組織、以及實測中遇到的那些典型問題和排查方法。如果你也在做嵌入式數(shù)據(jù)記錄、參數(shù)存儲或者需要頻繁寫入的緩沖類應(yīng)用希望這些內(nèi)容能幫你少走幾步彎路。1. 為什么工業(yè)數(shù)據(jù)存儲偏偏選了 MRAM1.1 一個簡單算賬把 EEPROM 的壽命劣勢攤開以前很多工業(yè)采集板都用串行 EEPROM比如 25LC256、AT24CXXX 之類。EEPROM 不是不能用而是它的擦寫次數(shù)天花板太低低到什么程度呢常規(guī) SPI EEPROM 的擦寫壽命一般是 10 萬到 100 萬次寫入一個字節(jié)還要先擦后寫耗時大概 3 到 5 毫秒。我當(dāng)時那個項目現(xiàn)場設(shè)備每 2 秒要記錄一條 16 字節(jié)的工況數(shù)據(jù)。一天下來就是 43200 次寫入一年就是 1576 萬次左右。拿 100 萬次壽命的 EEPROM 來算兩個月多一點就報廢了。哪怕把壽命說到 1000 萬次一年左右也要提心吊膽?,F(xiàn)場反饋回來的故障也確實吻合寫失敗、數(shù)據(jù)偶爾丟失、設(shè)備重啟后日志斷檔。這還沒算 EEPROM 的另一個問題寫一頁和寫一個字節(jié)的時間幾乎一樣但頁編程前必須把整個頁擦掉。日志類應(yīng)用往往是隨機追加、字節(jié)級修改成本非常高。所以那版設(shè)計我基本沒猶豫直接上了 MRAM。MR25H40CDF 的寫耐久性典型值是 10 的 14 次方次換算成剛才那個寫入頻率設(shè)備要跑幾十萬年才可能摸到壽命邊界。對工業(yè)設(shè)備來說基本等于永久。而且它寫數(shù)據(jù)不需要擦除任意字節(jié)直接覆蓋這就把“先擦后寫”的流程徹底省掉了。1.2 MRAM 的技術(shù)底子與 Flash/EEPROM 的差異很多人聽到“非易失性存儲器”腦子里只有 Flash 和 EEPROM。MRAM 的原理和它們完全不同。EEPROM 和 Flash 靠的是浮柵里的電荷電荷會被慢慢泄漏編程時還要用電荷泵產(chǎn)生高壓把電子注入進去擦除時再靠隧穿效應(yīng)把電子拉出來。這個過程天生慢而且每一次擦寫都在氧化層上留下一點損傷所以壽命有限。MRAM 用的是磁隧道結(jié)MTJ。存儲單元里有兩層磁性材料中間夾著一層極薄的絕緣層自由層的磁化方向和固定層的磁化方向平行或反平行時隧道電阻不同對應(yīng) 0 和 1。寫入的時候施加電流產(chǎn)生的磁場或自旋極化電流直接把自由層的磁化方向翻轉(zhuǎn)。沒有電荷注入沒有擦除操作翻轉(zhuǎn)完成數(shù)據(jù)就穩(wěn)定了。理解了這個原理你就能明白為什么 MRAM 在工業(yè)場景里這么香寫入前不需要擦除所以隨機寫、字節(jié)寫都很快不挑地址。寫壽命極高不用做磨損均衡。非易失性斷電后數(shù)據(jù)不丟而且不存在電荷泄漏的長期可靠性隱患。讀速度接近 SRAMSPI 接口跑到 40MHz 沒什么壓力。數(shù)據(jù)保持能力通常在 20 年以上。當(dāng)然MRAM 也不是沒有缺點最直接的就是單位容量價格比 Flash 高而且大容量型號選擇少。但在工業(yè)數(shù)據(jù)記錄這個場景里容量需求往往只有幾十到幾百 KBMRAM 的價格劣勢并不明顯可靠性優(yōu)勢卻是實打?qū)嵉摹?.3 MR25H40CDF 規(guī)格里最該關(guān)心的幾個數(shù)字MR25H40CDF 是 Everspin MR25H40 系列里的 SPI 接口 MRAM。我選它最看重的幾個數(shù)字列一下參數(shù)數(shù)值容量4 Mbit也就是 512 KB組織結(jié)構(gòu)512 K × 8 bit接口SPI支持模式 0 / 模式 3最高時鐘40 MHz供電電壓3.0 ~ 3.6 V典型 3.3 V寫耐久性典型 10 的 14 次方次寫周期數(shù)據(jù)保持 20 年地址字段3 字節(jié)有效地址 0x00000 ~ 0x7FFFF這里有一個容易忽略的地方4 Mbit 看起來不大但 512 KB 劃分成日志區(qū)、參數(shù)區(qū)、緩沖區(qū)已經(jīng)非常夠用。拿每條記錄 64 字節(jié)來算512 KB 能存 8192 條配合環(huán)形覆蓋設(shè)計等于一個掉電不丟失的小型磁盤。命令集也比較簡單核心就 6 條WREN0x06、WRDI0x04、RDSR0x05、WRSR0x01、WRITE0x02、READ0x03。后面驅(qū)動代碼主要就是圍繞這幾條命令展開。2. 硬件接線與 SPI 總線搭建把兩顆芯片接起來并不復(fù)雜2.1 R7FA2L1AB2DFP 的 RSPI 外設(shè)與引腳分配R7FA2L1AB2DFP 屬于瑞薩 RA2L1 系列Arm Cortex-M23 內(nèi)核主頻 48 MHz有 256 KB Flash 和 32 KB RAM片上帶了 RSPI 串行外設(shè)接口。對 MRAM 這種標(biāo)準(zhǔn) SPI 器件來說不需要什么特殊外設(shè)RSPI 即可。在 FSP 里RSPI 可以配置成主模式引腳一般使用 SCLK、MOSI、MISO 三根線。片選 CS 我建議不要用 RSPI 的硬件 SS而是單獨拿一個普通 GPIO 來控制。原因后面寫驅(qū)動時會詳細說核心點是 MRAM 的寫使能和寫執(zhí)行需要精確控制 CS 的下降沿和上升沿用 GPIO 軟控時序最直接可讀性也最好。我的接線示意如下MR25H40CDF 引腳功能接 R7FA2L1AB2DFPCS片選P301GPIO 輸出默認(rèn)拉高SCLKSPI 時鐘RSPI0 SCLKSI數(shù)據(jù)輸入RSPI0 MOSISO數(shù)據(jù)輸出RSPI0 MISOWP寫保護接 3.3 V禁用寫保護HOLD傳輸暫停接 3.3 V禁用暫停功能VCC電源3.3 V并聯(lián) 100 nF 10 uFVSS地GND這里要特別提醒一句接線時先分清 SO 和 SI別接反了。MRAM 的 SO 是輸出接 MCU 的 MISOSI 是輸入接 MCU 的 MOSI。有些開發(fā)板絲印容易讓人看反我第一版調(diào)試就吃過這個虧全部數(shù)據(jù)讀回都是 0xFF排查半天才發(fā)現(xiàn)是 MOSI 和 MISO 交叉了。2.2 CS、WP、HOLD 這些控制腳的接法CS 腳作為片選每次讀寫事務(wù)都要拉低事務(wù)結(jié)束后拉高。這個腳不能懸空如果 MCU 復(fù)位期間 GPIO 是高阻狀態(tài)外部最好加一個 10 kΩ 上拉電阻到 VCC保證 MRAM 在系統(tǒng)上電瞬間不被誤觸發(fā)。WP 腳叫寫保護低電平有效。接低電平會禁止寫狀態(tài)寄存器和數(shù)據(jù)區(qū)具體行為取決于器件配置但最穩(wěn)妥的做法就是直接接高電平徹底關(guān)掉寫保護功能。不要讓它懸空工業(yè)現(xiàn)場電磁干擾多懸空引腳很容易被耦合出錯誤電平導(dǎo)致寫操作莫名失敗。HOLD 腳是傳輸暫停低電平有效。HOLD 拉低時SPI 時鐘和 CS 狀態(tài)會被器件忽略總線上的數(shù)據(jù)保持外部主機暫時沒辦法繼續(xù)通信。這個腳同樣不能懸空接高電平即可。VCC 旁邊要放 100 nF 的陶瓷電容盡量貼近引腳再加一顆 10 uF 鉭電容做低頻去耦。工業(yè)現(xiàn)場如果電源本身波動大建議在電源入口加 TVS 管和磁珠防止繼電器或其他大功率設(shè)備啟停時把尖峰灌進來。2.3 電路上常見的三個坑第一個坑是電平匹配。RA2L1 的 GPIO 和 MRAM 都是 3.3 V 系統(tǒng)直接連接沒有問題。但如果你之前用慣了 5 V 的 AVR 或老式 51千萬別順手把 MRAM 接到 5 V 上MR25H40CDF 的絕對最大額定值不允許。5 V 系統(tǒng)必須加電平轉(zhuǎn)換。第二個坑是 SPI 信號走線太長。工業(yè)電路板上如果有電機驅(qū)動、繼電器、開關(guān)電源這些干擾源會通過長走線耦合進 SPI 總線。調(diào)通之后可以把時鐘跑到 40 MHz但前期調(diào)試建議降到 1 MHz 到 10 MHz 之間先把功能跑對再慢慢提速度。40 MHz 下串 33 Ω 電阻可以抑制振鈴具體阻值示波器看波形再定。第三個坑是 MISO 引腳誤開了內(nèi)部上拉。RA2L1 的 GPIO 可以配置內(nèi)部上下拉如果在 FSP 里把 MISO 配成帶上拉的輸入雖然讀取邏輯上問題不大但上拉會抬高信號的低電平上升沿高速 SPI 下容易造成數(shù)據(jù)采樣錯誤。MISO 建議關(guān)閉上下拉。3. FSP 里配完 RSPI剩下就是命令序列和驅(qū)動封裝3.1 用 e2 studio FSP 生成 RSPI 工程瑞薩 RA 系列用 e2 studio 開發(fā)FSP 是它的軟件包配置框架。新建工程時選擇 R7FA2L1AB2DFP 這個具體型號然后在 Stacks 頁面添加 SPI 驅(qū)動也就是 r_spi 模塊。配置項里幾個關(guān)鍵參數(shù)Operation ModeMaster主機模式。Frame FormatSPI。Data Bit Width8 bit。SPI Mode模式 0 或者模式 3MRAM 兩種都支持。Bitrate先填 1 MHz跑通后調(diào)到 10 MHz 或 20 MHz 都可以。Bit OrderMSB First。片選不用 RSPI 的硬件 SS用 GPIO 自己控制。生成代碼后工程里會出現(xiàn) g_spi0_ctrl 和 g_spi0_cfg。主函數(shù)里調(diào)用 R_SPI_Open 初始化一次即可。有一點必須強調(diào)FSP 的 R_SPI_WriteRead 默認(rèn)是異步行為代碼不能裸調(diào)完就立刻拉 CS否則數(shù)據(jù)可能還沒完全從移位寄存器里移出去CS 就拉高了整個命令會丟失。我習(xí)慣在配置里開傳輸完成中斷注冊回調(diào)函數(shù)在回調(diào)里置一個事件標(biāo)志主流程等待這個標(biāo)志后再拉高 CS。如果你喜歡輪詢也可以用 R_SPI_EventGet 不斷查詢事件狀態(tài)但回調(diào)加標(biāo)志位的方式更清晰多任務(wù)下也更容易擴展。3.2 命令序列從 WREN 到最后的 CS 上升沿MR25H40CDF 的讀寫雖然簡單但命令順序很講究尤其 CS 邊沿的時序。先看寫使能 WREN這是所有寫操作的前提CS L 發(fā)送 0x06WREN CS H上升沿寫使能鎖存到狀態(tài)寄存器這一步如果 CS 拉高前數(shù)據(jù)還沒發(fā)完寫使能就不會生效。所以代碼里發(fā)送完 0x06 之后必須等 SPI 傳輸完成事件再拉高 CS。然后是寫數(shù)據(jù) WRITECS L 發(fā)送 0x02WRITE 發(fā)送 3 字節(jié)地址高位在前 發(fā)送數(shù)據(jù)字節(jié) CS H上升沿執(zhí)行寫入MRAM 的好處是 CS 拉高后寫入立即完成不需要像 EEPROM 那樣等待內(nèi)部編程時間。寫完可以馬上發(fā)下一條命令也可以馬上讀回驗證。但注意每次寫命令之前都必須重新做一次 WREN因為 WEL 位在一次寫操作完成后會自動清掉。很多第一次用 MRAM 的工程師都會在這里翻車寫使能只做了一次然后連續(xù)寫多個地址第二個地址開始全部寫不進去。讀數(shù)據(jù) READ 更簡單CS L 發(fā)送 0x03READ 發(fā)送 3 字節(jié)地址 持續(xù)發(fā)送時鐘MISO 上讀出數(shù)據(jù) CS HREAD 命令下地址可以連續(xù)遞增保持 CS 為低就可以一直讀下去直到地址越過 0x7FFFF 后自動回繞到 0x00000。寫數(shù)據(jù)也一樣地址會自動遞增所以批量寫入時不需要每字節(jié)都帶地址。3.3 驅(qū)動模塊設(shè)計與完整讀寫代碼驅(qū)動邏輯我拆成三個層次底層 SPI 收發(fā)、MRAM 命令封裝、上層讀寫接口。底層只關(guān)心把數(shù)據(jù)發(fā)出去或者收發(fā)同時進行上層接口負責(zé)地址合法性判斷和分包。先給一個頭文件定義命令字和地址范圍#ifndef MRAM_H_ #define MRAM_H_ #include stdint.h #define MRAM_CMD_WREN 0x06 #define MRAM_CMD_WRDI 0x04 #define MRAM_CMD_RDSR 0x05 #define MRAM_CMD_WRSR 0x01 #define MRAM_CMD_WRITE 0x02 #define MRAM_CMD_READ 0x03 #define MRAM_MAX_ADDR 0x7FFFFu int mram_init(void); int mram_write_buf(uint32_t addr, const uint8_t *data, uint32_t len); int mram_read_buf(uint32_t addr, uint8_t *data, uint32_t len); #endif再看底層實現(xiàn)。以 FSP 生成的 g_spi0_ctrl 為例我用回調(diào)方式等待傳輸完成#include hal_data.h #include mram.h #include string.h static volatile bool g_mram_spi_done false; void mram_spi_callback(spi_callback_args_t * p_args) { if (SPI_EVENT_TRANSFER_COMPLETE p_args-event) { g_mram_spi_done true; } } static void mram_cs_low(void) { R_IOPORT_PinWrite(g_ioport_ctrl, PIN_MRAM_CS, BSP_IO_LEVEL_LOW); } static void mram_cs_high(void) { R_IOPORT_PinWrite(g_ioport_ctrl, PIN_MRAM_CS, BSP_IO_LEVEL_HIGH); } static void mram_wait_tx_done(void) { while (!g_mram_spi_done) { } g_mram_spi_done false; } static int mram_tx_bytes(const uint8_t *tx, uint16_t len) { fsp_err_t err R_SPI_Write(g_spi0_ctrl, (uint8_t *)tx, len, false); if (FSP_SUCCESS ! err) { return -1; } mram_wait_tx_done(); return 0; } static int mram_txrx_bytes(const uint8_t *tx, uint8_t *rx, uint16_t len) { fsp_err_t err R_SPI_WriteRead(g_spi0_ctrl, (uint8_t *)tx, rx, len, false); if (FSP_SUCCESS ! err) { return -1; } mram_wait_tx_done(); return 0; }這里提醒一下回調(diào)事件具體名稱取決于 FSP 版本有些版本是 SPI_EVENT_OPERATION_COMPLETE我示例里用的是 SPI_EVENT_TRANSFER_COMPLETE編譯報錯的話改一下宏名就行。如果工程里開了 DTC傳輸完成后的處理邏輯會略有不同我建議這個模塊保持最簡單的中斷模式不開 DTC方便排查。寫使能和讀狀態(tài)static int mram_write_enable(void) { uint8_t cmd MRAM_CMD_WREN; mram_cs_low(); if (mram_tx_bytes(cmd, 1) ! 0) { mram_cs_high(); return -1; } mram_cs_high(); return 0; } static uint8_t mram_read_status(void) { uint8_t tx[2] { MRAM_CMD_RDSR, 0x00 }; uint8_t rx[2] { 0x00, 0x00 }; mram_cs_low(); if (mram_txrx_bytes(tx, rx, 2) ! 0) { mram_cs_high(); return 0xFF; } mram_cs_high(); return rx[1]; }狀態(tài)寄存器最低位就是 WEL讀取后判斷一下能幫我們快速定位“寫不進去”的問題。寫數(shù)據(jù)接口。我每次最多寫 256 字節(jié)超過就分包處理。原因有兩個一是避免在棧上開太大的數(shù)組二是每次寫事務(wù)的時間可控不會長時間占用 SPI 總線int mram_write_buf(uint32_t addr, const uint8_t *data, uint32_t len) { static uint8_t tx[256 4]; if (addr MRAM_MAX_ADDR || (addr len - 1) MRAM_MAX_ADDR) { return -1; } uint32_t pos 0; while (pos len) { uint16_t chunk (len - pos 256) ? 256 : (uint16_t)(len - pos); uint32_t cur addr pos; tx[0] MRAM_CMD_WRITE; tx[1] (cur 16) 0xFF; tx[2] (cur 8) 0xFF; tx[3] cur 0xFF; memcpy(tx[4], data[pos], chunk); if (mram_write_enable() ! 0) { return -1; } mram_cs_low(); if (mram_tx_bytes(tx, 4 (uint16_t)chunk) ! 0) { mram_cs_high(); return -1; } mram_cs_high(); pos chunk; } return 0; }讀數(shù)據(jù)接口用全雙工 R_SPI_WriteRead 實現(xiàn)。發(fā)送命令和地址后后續(xù)時鐘由 MCU 生成同時 MISO 逐位移出數(shù)據(jù)收到的前 4 個字節(jié)是命令和地址階段的無效數(shù)據(jù)從 rx[4] 開始才是真正的數(shù)據(jù)int mram_read_buf(uint32_t addr, uint8_t *data, uint32_t len) { uint8_t tx[256 4] { 0 }; uint8_t rx[256 4] { 0 }; uint8_t hdr[4]; if (addr MRAM_MAX_ADDR || (addr len - 1) MRAM_MAX_ADDR) { return -1; } hdr[0] MRAM_CMD_READ; uint32_t pos 0; while (pos len) { uint16_t chunk (len - pos 256) ? 256 : (uint16_t)(len - pos); uint32_t cur addr pos; hdr[1] (cur 16) 0xFF; hdr[2] (cur 8) 0xFF; hdr[3] cur 0xFF; memset(tx, 0x00, 4 chunk); memcpy(tx, hdr, 4); mram_cs_low(); if (mram_txrx_bytes(tx, rx, (uint16_t)(4 chunk)) ! 0) { mram_cs_high(); return -1; } mram_cs_high(); memcpy(data[pos], rx[4], chunk); pos chunk; } return 0; }這個驅(qū)動讀寫?yīng)毩⒎职看?CS 重新建立事務(wù)所以跨 0x7FFFF 邊界的問題也分塊堵住了上層不用太擔(dān)心地址回繞。唯一要注意的是靜態(tài)局部變量 tx 讓驅(qū)動不可重入如果項目里有多個任務(wù)同時訪問 MRAM記得在外面加互斥保護。4. 實測與排錯全 0xFF、寫不進去、以及滾寫可靠性4.1 讀回全 0xFFSPI 模式會和信號完整性背鍋第一次上板我調(diào)用 mram_read_buf 讀 MRAM 廠商出廠數(shù)據(jù)區(qū)返回的全是 0xFF。這個現(xiàn)象在 SPI 存儲器件調(diào)試?yán)锾?jīng)典了基本可以按下面的順序排查。先測電源和地。MRAM 供電要是 3.3 VVCC 和 VSS 之間不能有虛焊。然后用示波器看 CS 拉低后SCLK 上是否有時鐘輸出。如果 CS 一直高MRAM 根本沒被選中數(shù)據(jù)線自然一直高電平讀回來全是 0xFF。第二步查 SPI 模式。MR25H40CDF 只支持模式 0 和模式 3如果 FSP 里配成了模式 1 或模式 2器件永遠不會給出正確數(shù)據(jù)。模式 0 和模式 3 的區(qū)別在于空閑時鐘電平和采樣沿示波器上一抓就能看出來。我當(dāng)時把 RSPI 從模式 0 換成模式 3數(shù)據(jù)立刻正常了。第三步查 MISO。用示波器看 MISO 引腳在 CS 拉低、發(fā)送 READ 命令后MISO 上應(yīng)該有脈沖信號。如果始終是一條高電平要么芯片虛焊要么 SO 引腳沒接到 MCU 的 MISO。再不行就把 SPI 速度降到 1 MHz排除信號振鈴。還有一個容易被忽略的點就是讀狀態(tài)寄存器。上電后正常 RDSR 應(yīng)該返回 0x00。如果 RDSR 返回 0xFF幾乎可以斷定命令根本沒發(fā)進去問題出在 CS 時序或 SPI 配置如果 RDSR 返回 0x02 之類說明 WEL 處于置位狀態(tài)可能是上次寫操作后沒清這本身不算故障。4.2 寫不進去先查 WEL 位再查 CS 邊沿全 0xFF 的問題解決后緊接著遇到寫不進去調(diào)用 write_buf 再讀回來數(shù)據(jù)跟寫之前完全一樣。這個時候第一件事就是查 WEL。我在 mram_write_enable 后加了一個斷言函數(shù)讀 RDSR判斷 bit0 是不是 1。如果置位失敗說明 WREN 命令沒被正確執(zhí)行。常見原因有兩個第一個是傳輸沒完成就拉高了 CS。代碼里用 R_SPI_Write 發(fā)送 0x06 后如果沒有等待事件標(biāo)志而立刻 cs_high在 SPII 高速率下0x06 可能只說了一半CS 就上去了。解決方式就是前面驅(qū)動里寫的發(fā)送后必須等 g_mram_spi_done 標(biāo)志置位再拉高 CS。第二個是 WP 腳被拉低了。WP 拉低會讓器件進入寫保護狀態(tài)WREN 命令本身雖然能發(fā)但 WEL 可能不會被正確置位或者即使置位了后續(xù) WRITE 也會被拒絕。所以先量一下 WP 引腳電壓確認(rèn)是高電平。如果 WEL 已經(jīng)是 1但 WRITE 還是寫不進去就要查地址對不對。MR25H40CDF 只有 19 位有效地址最高地址是 0x7FFFF如果地址算錯寫到了非法區(qū)域器件不會報錯但數(shù)據(jù)也進不去。我總是先用固定地址比如 0x00000 來測試寫一組 0x5A 5A 5A 5A讀回比對最大限度減少變量。最后還要注意一個時序細節(jié)寫命令的數(shù)據(jù)字節(jié)必須在 CS 上升沿之前全部發(fā)完。對于 MR25H40CDF寫入動作就是 CS 上升沿那個瞬間提交的如果你在發(fā)送數(shù)據(jù)的中途就拉高 CS這次寫入會失敗或者只寫入半個字節(jié)。用示波器抓 CS 和 SCLK 的關(guān)系確認(rèn) CS 拉高前最后一個數(shù)據(jù)位已經(jīng)穩(wěn)定這比盯著代碼猜靠譜得多。4.3 百萬次滾寫與掉電回讀測試驅(qū)動調(diào)通之后真正的考驗才開始。我寫了一個壓力測試固件對固定地址反復(fù)寫入遞增計數(shù)每次寫完立即讀回校驗并使用軟件 CRC32 做數(shù)據(jù)完整性判斷。日志通過串口輸出。測試結(jié)果很直觀260 萬次滾寫全部通過沒有一次讀回錯誤。這個數(shù)字對 EEPROM 來說已經(jīng)是不可想象的任務(wù)對 MRAM 來說只是熱身。我也用示波器同時觀察了 SPI 波形寫操作完成后 CS 上升沿到下一次命令發(fā)起之間沒有額外延時說明 MRAM 確實不需要內(nèi)部寫等待。掉電測試更有意思。我在主循環(huán)里周期性寫一條 64 字節(jié)記錄然后人為隨機斷電再重新上電掃描 MRAM 里的記錄區(qū)檢查每一條記錄的 magic、長度和 CRC。因為 MRAM 的寫入是原子提交每次結(jié)果要么是完整的舊記錄要么是完整的新記錄沒有出現(xiàn)半條記錄混雜的情況。這正是工業(yè)掉電場景最需要的特性。高低溫方面我用熱風(fēng)槍把板子加熱到 105℃ 左右持續(xù)運行再放回常溫驗證數(shù)據(jù)讀寫均正常。有條件的話建議做一輪完整的 -40℃ 到 85℃ 溫度循環(huán)工業(yè)級存儲器件在這種條件下反而比消費級 Flash 穩(wěn)定得多。5. 工程化思考掉電保護、容量規(guī)劃與跨平臺遷移5.1 掉電瞬間怎么寫不丟MRAM 本身是非易失的但“非易失”不代表“掉電時正在寫的操作也一定能完成”。真正的工程問題是當(dāng)電源開始跌落而 MCU 恰好正在往 MRAM 寫數(shù)據(jù)這個事務(wù)到底能不能完整提交。我建議從兩頭發(fā)力。第一硬件上在系統(tǒng)電源端加掉電檢測。RA2L1 自帶低電壓檢測模塊也可以外接 TPS3839 之類的電壓監(jiān)控芯片當(dāng) VCC 低于 3.0 V 時觸發(fā)中斷或復(fù)位。第二固件里把關(guān)鍵數(shù)據(jù)維護成“鏡像”。比如環(huán)形日志區(qū)先寫入記錄正文和 CRC全部成功后再更新日志頭里的寫指針。掉電發(fā)生在新記錄寫了一半時上電后頭部指針還指向上一條記錄新記錄雖然空間占用了但不會被當(dāng)作有效記錄也不會破壞舊數(shù)據(jù)。MRAM 寫 512 字節(jié)在 20 MHz SPI 下大概是 200 微秒左右加上命令和地址開銷也不到 300 微秒。如果 MCU 的掉電檢測能在電壓跌落到器件最低工作電壓之前留出 1 毫秒那么寫一兩條關(guān)鍵記錄完全來得及。真正要避免的是在電源已經(jīng)不穩(wěn)的時候還去做耗時的讀改寫流程所以掉電中斷里只做最精簡的寫操作。5.2 磨損、容量與緩沖區(qū)規(guī)劃MRAM 雖然壽命極高但它也有自己的“寫周期”概念。一次完整的 CS 上升沿提交算一個寫周期無論寫 1 字節(jié)還是寫 256 字節(jié)都是消耗一次。所以真正高效的用法是數(shù)據(jù)攢夠一包再寫而不是每來一個字節(jié)就發(fā)起一次事務(wù)。這樣做還能減少 SPI 總線占用和調(diào)度開銷。容量規(guī)劃方面512 KB 需要想清楚分區(qū)。我習(xí)慣把 MRAM 分成三個區(qū)域區(qū)域大小用途參數(shù)區(qū)4 KB設(shè)備配置、校準(zhǔn)參數(shù)低頻寫日志索引區(qū)4 KB寫指針、讀指針掉電恢復(fù)依據(jù)循環(huán)日志區(qū)剩余空間環(huán)形數(shù)據(jù)記錄高頻覆蓋寫參數(shù)區(qū)低頻寫入用雙緩沖加 CRC 防止更新過程中掉電。日志索引區(qū)單獨劃出來是因為每次寫入記錄后都要更新指針如果指針和記錄混在一起災(zāi)難恢復(fù)會非常麻煩。主日志區(qū)做環(huán)形緩沖滿了以后覆蓋最舊記錄這樣 MRAM 的寫壽命被分散在整個區(qū)域而不是集中在一個地址上。如果設(shè)備需要保存較大的波形數(shù)據(jù)或批量事件512 KB 可能不夠那就需要考慮把 MRAM 換成功耗更高的 SPI NOR Flash或者加 SD 卡。但請注意這種擴容通常會犧牲隨機寫入壽命和寫速度本質(zhì)上是用復(fù)雜度換容量不是所有場景都劃算。5.3 換個 MCU 怎么辦MR25H40CDF 是標(biāo)準(zhǔn) SPI 命令集和主控品牌沒有綁定關(guān)系。RA2L1 用 FSPSTM32 用 HALNXP 用 SDK底層函數(shù)各不一樣但上層邏輯完全可以原樣搬走。我在驅(qū)動設(shè)計時就把硬件有關(guān)的操作收斂成了幾個內(nèi)部函數(shù)mram_cs_low、mram_cs_high、mram_tx_bytes、mram_txrx_bytes、mram_wait_tx_done。換平臺時只需要重寫這五個函數(shù)的實現(xiàn)mram_write_buf 和 mram_read_buf 不需要動。如果換成帶硬件 CS 的 MCU我還是堅持用 GPIO 軟控 CS因為 MRAM 命令序列對 CS 邊沿的要求比較明確軟控不受外設(shè)自動控制邏輯干擾出問題也好定位。另外提醒一點不同 MCU 的 SPI 時鐘極性命名可能不同。ST 的 HAL 里 SPI_MODE0 是 CPOL0、CPHA0SPI_MODE3 是 CPOL1、CPHA1。瑞薩 FSP 里同樣用模式 0/模式 3 命名但有些老工程師習(xí)慣叫“空閑時鐘電平高還是低”這時候直接看寄存器定義最安全。這次把存儲介質(zhì)從 EEPROM 換成 MRAM改動的代碼量并不大但帶來的是整個系統(tǒng)可靠性的明顯提升。如果非要說留下什么經(jīng)驗我會記下三條第一MRAM 不是 Flash別再用擦除的老思路第二CS 邊沿的時序比命令字本身更關(guān)鍵第三測試存儲器件一定要在真實寫頻和掉電條件下跑而不是寫入一次讀一次就算驗證完成。后面如果再遇到類似的工業(yè)數(shù)據(jù)記錄需求我還是會優(yōu)先看這類 MRAM 方案。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文字幕久久一区二区三区| 中文字幕丰满孑伦无码专区| 综合激情在线| 亚洲va国产va天堂va综合va| 99精品97| 这里只有精品1| 亚洲综合色婷婷| 中文字幕在线资源| Av狠狠色丁香婷| 99色| 亭亭色天香| 91 欧美| 久热这里只有精品99re,久热这里只有精品7 | 五月天婷婷高清无码| 色色婷婷综合| 天天日天天干天天操| 丁香五月婷婷啪啪视频| 亚洲五月丁香六月婷婷| 九月色婷婷| 婷婷五月丁香基地| 五月香六月婷| 日本免费91| 成人电影AV在线观看| 五月天婷婷色色网| 凹凸7777操操操| 无码激情AAAAA片-区区| 婷婷五月天综合色| 色噜噜综合网| 久久久亚洲成人无码A片| 婷婷综合色播网| 亚洲成人无码片| 98色花堂98t.R| 狠狠色综合网| 五月精品99综合| 99热只有这里才是精品| 9热在线观看| 丁香色综合| www,8050,午夜三级| 六月色婷婷| 色婷婷丁香中文在线播放| 婷婷色情五月| 狠狠色色| 激情六月婷婷| 深爱激情网噜噜色| 精品牛仔裤超碰| 九九RE视频在线精品| 婷婷丁香成人网址| 久操热| 久久综合99| 五月丁香久久呀| 美国天天操无码| 久久婷婷五月天懂色| 这里只有精品,日韩视频| 密着浓厚中出乚交尾GvG935| 99在线69| 丁香五月亚综合图片| 六月丁香色色| 26uuu成人网| 婷婷五月综合网| 婷婷成人综合免费视频| 99男人天堂| 天天干,夜夜爽| 五月婷婷五月天亚洲无码| 91av色色乱视频| 99在线69| 激情综合网五月| 日韩色色小视频| 亚洲最大视频网站| 牛色色碰| 爱射综合| 六月婷婷综合| 成人va视频| 婷色人人狠| 亚洲AV电影美洲AV电影| 99在线精品免费视频| www.婷婷五月| 天天爽天天摸| 亚洲射激情| 国产在线黄色| 婷婷激情五月视频| 婷婷中文字暮| 亚洲六月综合激情久久下卡| www.99色| 久久人人九| 天天天摸夜夜夜玩| 日日色五月天| 99在线免费视| 级情九色| 五月婷啪| 夜夜爱爱亚洲| 欧美色色日韩| 噜噜五月天综合| 这里只有精品久久| 九九热免费| 丁香五月天色婷婷| 欧美成人网99网| 五月花成人网| 婷婷六月婷婷| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 天天射综合网站| 久久久久久99日本| 狠狠色狠狠色综合日日91| 97影院一级片| 久久婷丁香五月| 97热这里只有精品| 女人天堂久久| 婷婷97碰碰| 久久人操-久草婷婷-成人AV| 日本久久人| 久热精品在看| 久久婷婷五月天| 九九偷拍网| 99免费| 久久综合图片| 五月天播播| 99re免费视频| 黄色一级影片| 色婷婷综合久久久久| 少妇搡BBBB搡BBB搡毛茸茸 | 九九99热| 综合激情婷婷| 亚洲性爱99| 啪啪一区| 五区毛片七区毛片| 热热99爱爱| 99色视频| 区区久久妻| 九九色精品| 波多野结衣AV无码Porn| 久久机热/这里只有精品| 婷婷激情中文综合| 日本不卡一区二区三区| 五月天俺去也| 99手机在线精品视频| 天天色天天日天天舔| 亚洲自拍天堂| AV九九| 综合激情伊人影视在线| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 五月婷婷久久综合| 久久九九大香蕉电院| 激情婷婷五月丁香啪啪啪| 99热这里只有国产精品| se99热久久一本| 六月色婷婷| 婷婷五月天久久综合88| 天天搞天天色综合| 久鲁鲁色网| 俺也去色| 这里只有精品免费视频| 久久五月综合| 最新无毒无码AV| 精品51XX| 99re免费精品视频| 69凹凸成人综合网| 婷婷五月,偷窥偷拍网| 久久久99久久| 丁香五月婷婷色综合| 99在线精品视频在线观看| 久七香蕉| 国产毛多水多女人A片| 五月天激情无码高清| 丁香婷婷欧美综合| 99热主页日本| 六月婷色六月| 99九九综合久久九九| 九九热免费视频| wwwC0maV五月花| 婷婷五月综合啪| 天天干天干| 久久人人人人妻| sewuyuetingtingiii| 丁香五月婷婷激情网| 99热国产这里只有| 中文在线成人| 国产 码在线成人网站| 天天日天天干天天插天天射| 久久九九爽| 国产精品A成V人在线播放| 欧美成人性爱网| 亚洲综合久| 国产AV一区二区三区最新精品| 停停五月丁香| 婷婷激情五月吧| 五月婷婷影视| 丁香六月五月天| 五月丁香色婷婷基地| 天堂综合久| 婷婷综合网站| 97色色网| 天天狠狠插| 欧美婷婷丁香五月| 性做爰A片免费视频A片直播| 日韩成人无码人妻| 婷婷天天日婷婷| 亚洲综合草草| 五月丁香本色在线观看| 九月婷婷久久| 日本五月视频| 亚洲激情图文小说| 91久久精品无码一区二区三区| 色色色热| 91婷婷丁香| 久噜久噜| 操人妻90p| 色九九丁香九月色九九色| 久久婷婷影院| 色婷五月天| 国产精品香蕉| 五月天丁香六月综合| 江苏少妇性BBB搡BBB爽爽爽| 色五月偷偷| 99热这里只有精品23| 九月综合| 亚洲欧美国产A片免费观看| 综合婷婷| 丁香五月婷婷六月| 2017狠狠干| 五月综合777| 丁香五月日韩| 久久久欧美精品sm网站| 丁香婷婷综合影院| 4399无码视频| 五月婷婷五月天| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 久色五月婷婷综合| 婷婷五月亚洲激情| 99自拍视频在线| 一起草aV| 亚洲精品444久久久久久| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 色噜噜狠狠色综无码久久合欧美 | 婷婷丁香在线播放| 九九九九九九九热| 五月激情综合五月| 狠狠操之狠狠操| 婷婷六月综合| 欧美 日韩 成人| 丁香花综合永久入口| 国产激情久久| 97碰在线视频| 精品人妻伦一二三区久| 色激情五月| 99狠狠色| 一起草Av| 久草五月婷婷| 色综合中文| 天天日,天天插| 久色中文| 天天爽综合| 综合99在线| 97综合在线| 任你擦免费视频| 久久久五月天婷婷成人网| 亚洲国产精品VA在线看黑人| 亚洲字幕AV一区二区三区四区| 俺去也五月天| 天天干天天爽| 拍真实国产伦偷精品| 五月丁香大香蕉| 97碰| 99热伊人| 99热在线观看| 国产毛片欧美毛片久久久| 色播五月婷婷| 婷婷综合| yazhoujiqingav| 性做久久久久久久免费看| 五月天激情影院| 91综合在线| 国产 亚洲 在线| 任你爽精品免费视频6| 久久婷婷六月综合综合| 婷婷五月六| 99久久五月婷婷| 婷婷五月视屏| 天天综合色丁香| 丁香激情五月| 亚洲色网址| www婷婷| 少妇综合网| 这里只有精彩视频| www.99久久久| 97久久草草超级碰碰碰| 人妻久久久久久| 99热网站| 天天干天天av天天射| 久久久久久婷| 97丁香五月| 99丁香五月婷| 五月色婷婷综合色| 丁香五月激情性色郤| 亚洲婷婷成人五月天| 久久这里只有精品视频1| 99热精品在这里| 五月婷婷,狠狠操| 97在线刺激| 伊人99热| 中文字幕日本最新乱码视频| 五月天堂六月丁香亚州中文字幕久久| 亚洲婷婷基地| 天天插综合在线| 人妻肉射免费观看| 激情综合五| 99激情网| 大伊香蕉精品视频在线| 色婷亚洲| 丁香六月婷婷综合激情欧美 | 国产精品色一哟哟| 很很干天天干| 丁香六月在线| 99re8热精品免费视频| 婷综合六月| 久9免费视频| 色婷婷综合网| 午夜电影网VA内射| 9l视频自拍9l视频自拍九色学生| 午夜大香蕉| 婷婷色五月综合| www.cao.com久久| 超级碰碰碰91| 久久性爱视频免费| 婷婷 色 丁香 夜| 99久视频| 色综合av超碰| 激情五月黄色小说| 99性色| 五月天综合视频| 欧美A级成人婬片免费看理论| 狠狠高潮精品亚洲1| 狠狠色丁香婷婷久久综合| 久久综合五月天| 538在线精品| 8090在线影视少妇| 丁香五月天激情四射网| 五月天快乐开心激情网| 开心五月深爱五月| 激情又色又爽又黄的A片 | 五月婷婷深深爱| 色噜噜狠狠色综合日日| 亚洲婷婷综合视频| 思思网站| 日本高清久| 成人免费120分钟啪啪| 婷婷五月天首页激情| 久久香蕉福利| 久久久久人无码人妻| 精品99在线观看| 欧美婷婷| 蜜桃婷婷狠狠久久| 激情综合丁| 琪琪色五月天| 色婷婷丁香AV综合| 五月天激情在线视频| 噜噜视频| 国产黄色在线观看| 久热久色| 色色综合激情| BlACKEDRAW视频一区二区| 亚洲啪啪啪啪| 26uuu国产| 99热这里只有精品1| 丁香五月停停av| 思思久久网| 婷婷五月天久久| 日韩免费视频| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 天天综合天天做天天综合| 婷婷中文字暮| 国产做A爰片毛片A片美国| 激情碰碰碰| 99视频地址| 99久久99久久| 亚洲欧美国产A片免费观看| 久久丁香五月婷婷激情综合网| 五月婷婷激情综合av| 国产精品18久久久| 五月天亚洲图片婷婷| 天天天天天天操| XX色综合| 777久久精品| 久久婷婷五月天激情四射| 99在线看片| 超黄亚洲瑟瑟网站| 色激情五月天| 婷婷久久五月| 色五月婷婷网| 丁香五月停停av| www。狠狠干。com| 91丨九色丨43老版熟女| 日本天堂爱爱| 婷婷综合在线| 国产人人操| 五月天激情中文字幕| 天天操天天操天天操天天操天天操| 97超级操操| 啪啪干伊人婷婷| www.操.com| 久久久.COM| 无码色色色| 丁香五月婷婷综合激情哟哟哟| 这里只有精品视频国产| 99精品综合| 激情av| 天堂在线9| 婷婷色偷拍| 色婷婷色情| 疯狂做受XXXX高潮A片动画| 991国产精选视频在线播放下载| 久久人妻伊人| 天天色2017| 五月综亚洲| 国产日韩欧美性爱| 激情综合青草| 国产美女无遮挡裸体毛片A片| 成人丁香五月| 五月丁香六月在线| 五月婷婷新网站| AA丁香综合激情| 影音先锋91| www.五月天婷婷| 婷五月天| 天天肏天天肏天天肏| 五月亭亭色| 色色射| 99在线综合视频| 欧美黄色AA片哗啦啦啦| 天啪色| 色导航色婷婷五月天在线观看| 日韩人人操| 人妻久久久久久久久久| 亚洲av成人一区二区电影在线| WWW.色婷婷.COM| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 婷婷激情人妻| 9精品在线| 色丁香五月婷婷| 在线99色| 日日干天天射| 激情六月下句是什么| 97在线视频观看| 日日爽日日操| 99超碰欧美| 另类五月激情| 色婷婷文字幕| 99精品自拍| 天天色图| 色~性~乱~伦~噜| 综合色网站| 欧美色色色色色色色| 日韩国产在线免费观看| 国产免费一区二区在线A片视频| 丁香六月啪啪| 日韩丰满少妇无码内射| 99久久大片| 久久精品噜噜噜成人A∨色欲 | 五月婷精品| 色九月| 天天干天天插| 色色色国产| 婷婷碰碰| 丁香婷婷91在线观看视频| 久久99婷婷| AV中文在线| yazhou seshipin| 色爆五月| 婷婷六月综合基地| 丁香五月婷婷性爱| 97碰碰久久| 岛国av网站| 91九色在线| 成人做爰A片免费看视频| 国产成人va在线| 激情综合色图| 天天爽—爽| 大香蕉手机视频| 激情五月婷婷色播网| 丁香六月激情毛片| 狠狠干狠狠干| 五月婷婷综合网在线播放| 狠狠精品干练久久久无码中文字幕 | 香蕉综合网| 丁香五月天激情网| 色婷婷在线播放| 日本欧美成人片AAAA| 五月社区婷婷激情| 97碰碰在线观看视频| 97色色色| WWW五月天| 激情五月丁香五月| av操一操| 色10月婷婷视频| 麻豆WWWCOM内射软件| 婷婷五月综合激情免费| 欧美大香蕉视频| 免费无码毛片一区二区A片| 可以免费看AV网站| 天天色综合天天| 婷婷伊人综合| 激情综合五| 这里只有视频精品| 91性人人| 综合色99| 丁香五月婷婷激情蜜桃| 亚洲av成人电影在线观看| 免费亚洲婷婷中文字幕| 婷婷瑟五月天久久综合| 丰满少妇猛烈A片免费看观看| 日本成人噜噜噜| www,五月天com| 97超级免费无码| 婷婷成人视频| 舔色婷婷| 777久久综合视频| 丁香五月停停基地| 中文字幕在线aⅴ免费观看| 色情婷婷五月天| 色五月婷婷激情综合网| 98永久精品| 免费看欧美成人A片无码| 激情五月婷黄版| 久久婷婷色丁香| 狠狠综合网| 激情五月,婷婷五月,丁香五月| 久久五月视频| 色色色地址| 欧美久久九九| 五月综合视频| 日韩欧美一级大黄网站| 操骚货在线| 亚洲综合五月天综合| 日韩精品一区二区亚洲AV观看| 国产一区二区av免费| 婷婷激情五月综合| 婷婷五月天情色| 99热这里只有精品最新| 性婷婷| 亚洲成人一区| 日本九九视频| 亚洲AV另类| 激情 久久 婷婷| 在线视频你懂得| 婷婷激情图片| 丁香美女主播视频在线观看 | 久久色天堂| 伦乱人妻| 国产av网| 成人αV视频免费观看| 五月婷婷之综合激情| 色色婷婷丁香五月天| 五月天自拍视频| 思思热久久阴99| 91人人看| 又大又粗九一在线| 乱精品一区字幕二区| 少妇激情五月天| 影视av久久久噜噜噜噜噜三级| 五月天激情.com| 天天干天天操天天干天天操天天干天天操| 日日日,com| 综合AV在线| 婷婷激情四射网| 亚洲精品成人片在线播| 婷婷性爱综合| 三级99热| 久热伊人9| 婷婷自拍| 日本欧特黄色刺激一区影视久精品无码| 狠狠一日| EEUSS鲁片一区二区三区| 亚洲色婷婷五月| 五月丁香六月婷婷在线播放| 天天cha成人综合网| 色天天狠狠干| 婷婷五月天成人娱乐| 99综合视频一体| 亚洲区视频| 99精品在线观看视频| 99色五月| 久久综合五月婷婷| 5Www色5夜| 五月丁香婷婷色| 大香蕉520| 综合激情五月天| 久久婷婷热| 97人人操人人干| 五月丁香黄色视频| 天天操婷婷| 99色热| 99操| 色伦专区97中文字幕| 免费无码毛片一区二区A片| 午夜精品人妻无码一区二区三区| 亚洲综合激情五月久久| 五月丁香成人网| 欧洲色区| 99热 日韩| 色9999综合久久| 九九热99久久99| 色婷婷激情五月天| 亚洲情色一区| 久久久婷婷| 色五月涩涩婷婷蜜桃| 日日干夜夜撸夜夜骑| 天天爽综合| 秋霞影音91人妻久久| 久久精品亚洲一级牲爱综合| 另类视频五月天| 婷婷欧美激情综合| 96丁香六月婷婷蜜桃综合久久| 在线婷婷| 六月丁丁香| 色五月亚洲| 欧美日韩中国| 任我肏| 色播五月婷婷综合| 狠狠va| 激情五月天www| 五月丁香综合激情| 丁香婷婷六月天| 婷婷五月偷拍| 久久丁香综合| 激情五月婷婷| 99久久综合狠狠综合久久| 六月丁香成人| 国产亚洲色婷婷久久99精品91| 青草性爱视频| 五月天六月婷| 五月丁婷香| 亚洲99在线| 五月丁香影视| 色五月综合| 99热在线观看成人| 色综合天堂| 五月综合婷婷开心网| 久久精品亚洲一级牲爱综合| 欧美日韩123| 深爱激情五月网| 色五月播五月| 国产日产亚洲系列最新| 狠狠五月婷婷| 丁香婷婷激情四射五月| 99精品自拍视频| 激情婷婷综合| 这里只有精彩视频| 婷婷五月天AV| 伊人热婷婷| 婷五月丁香俺| 色婷婷五月天激情在线观看| 99无码精品| 9久热在线视频| 久久久激情视频| 人妻操在线看| 色色色999| 五月婷婷影视| 久久xx| 五月婷婷说| 丁香五月色| 骚逼视频一区2区| 天天摸天天肏| 79色色色色| 丁香五月大香蕉| 色色9 9| 99精品久久久久久久婷婷| 人人看人人草人人摸| 久久久这里有精品| 强壮公让我夜夜高潮A片视频| WWW色色色COM| 五月噜噜噜色综合| jiZZdr| 蜜桃五月天| 色v综合网| 久草xx性爱视频| 婷婷六月天| 日韩成人精品中文字幕电影| 狠狠色婷婷7777久| av狠狠操| 久久国产色| 99资源人人| 天天色月| 欧美va视频| 99re热久久| 婷婷六月丁| 九九九九中文字幕| 9l视频自拍9l九色成人| 欧美噜一噜| www.超碰| 国产综合婷婷| 天天色综合网1| 色五月激情五月天| 五月婷婷综合影院| 丁香婷婷六月激情| 久久机热/这里只有精品| 亚洲mm免费| 亚洲小视频免费播放| 天天日天天干天天操| 婷色天堂| 婷婷色中文字幕| 国产欧美va| 91日在线视频| 五月婷婷六月激情在线| 九久久九精品视频| 婷婷五月丁香五月基地| 五月天涩涩| 色色操| 久久婷婷色| 久色欧美| 婷婷五月天综合亚洲| 青草性爱视频| 婷婷婷婷色| 日本三久久| 99精品在线| 久久伊人五月天| www.99情趣网| 91狠狠色丁香| 日日日天天干| 亚洲激情视频网| 欧美精品XXXXBBBB| 五月婷婷狠天天色综合| 婷婷综合中文| 色婷婷aV四虎| 国产偷人爽久久久久久老妇APP| 色愛综合网| 99热99干| 超碰色热| 99亚洲综合| 色五月天电影| 天天色天天搡| 无码色色色| 五月丁香啪啪综合| 91chinese在线| 色色婷婷丁香五月天| 99资源在线| 91色情播放| 亚洲123区高清入口| 99久久免费精品| www99在线观看视频| wwww.9免费视频| 玖玖资源站蜜臀| 综合另类激情| 午夜做爱影院| www亚洲无码| 色小说五月天| 五月五月婷婷| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 天天干,夜夜爽| 五月天开心婷婷久久| CHINESE熟女老女人HD视频| 99er6| 天天日日夜夜| 五月丁香婷中文字幕| 五月天婷婷综合色| 久久66精品| 五月丁香 狠狠爱| 色爱亚洲| 亚洲免费观看高清完整版AV线| 日本系列_4页_777FP| 97干欧美| 六月丁香五月婷婷| 五月婷婷色丁香| 成人无码髙潮喷水A片| 六月婷婷激情小说网| 97人人妻人人艹| 色婷婷六月丁香综合欲精品| 99五月婷| 五月天婷婷久久| 久久久久婷婷五月热综合| 国产在线aaa片一区二区99| 开心五月婷婷激情网| 亚洲人成网站999综合| 五月丁香花激情综合网| 色婷婷色和| 五月天丁香综合久久国产| 色色色色色色色色五月先| 五月综合激情网| 很很干五月天| 牛牛热这里只有jingpin| 六月色国内综合| 99视频在线啪| 99ri视频| 九九婷婷五月天影视| 波多野结衣不卡AV| 四色五月婷婷在线观看| www.maotanji.com| 婷婷六月色| 色了色综合| 久久亚洲天堂| 五月天婷婷色色| 丁香五月综合福利视频导航| 色丁香五月婷婷综合久久| 久久综合丁香| 性一交一乱一交A片久| 色噜噜狠狠狠综合曰曰曰| 黄色AAAA韩国guochansanji | 欧美人人操| 搡BBBB搡BBB搡18| 五月丁香六月婷婷视频| 中文字幕高清av| 婷婷久久亚洲| 九九久久99| 色和综合网| 婷婷情色五月天| 狠狠干2007| 日hao1区| 99热91| 成人五月天视频| 99热在线播放| 狠狠色综合图片| 久草A片| 综合久久五月| 99热碰碰热| 字幕网AV中文字幕| 久婷婷婷| 日本在线噜噜| 网色99| 婷婷丁香五月天激情四射| 97干视频在线| 成人色五月天| 五月丁香网站| 国产在线激情视频| 草草操操| 婷婷丁香色五月久久88| 婷婷五月天久久久| 操逼电影免费看| 久久久久9999| 国产色色色色| 日韩人妻无码一区二区| 免费观看高清无码| 天天做天天爱天天高潮| www.av视频xx999.com| 日本色色影院| 69精品人人人人| 久大香蕉| 亚洲第一色区| 日日噜狠狠色综| av一区免费看| 91se在线视频| 国产成人99久久亚洲综合精品| 久久久思思热| 久久超级碰视频| 久久久亚洲精品一区二区三区浴池| 五月花综合视频| 99热成人精品| 成人婷99最新| 超碰97色| 日本黄色三级片内射| 久久丁香五月天| 婷婷五月天中文字幕| 亚洲综合激情五月久久| 综合www色| 又大又粗九一在线| 99热这里是精品| 俺去也五月| 5月婷婷六月丁香| 婷婷五月色| 另类国产区| 亚洲九九视频| 丁香五月色综合色播五月| 激情久久久久久久久久久| 依人大香蕉在钱1| 婷婷久久综合久| 五月婷婷丁香综合| 操操操Av| 天天爽天天摸| 婷婷开心青青草| 五月天激情综合在线| 亚洲婷婷激情综合激情999精品| 五月天婷婷色播综合在线| 91久热| 亚洲色五月| 婷婷激情六月综合| 99热在这里只有精品| 5月丁香六月情| 国产永久一二一起草| 丁香婷婷性爱| 久久9热| 激情九月婷婷九月| 国产欧美日韩综合精品一区二区| 五月丁香亚洲综合| 色哟哟精品| 丁香五月婷在线观看| 色久五月| 久久av电影| 日操| 丁香五月天欧美成人| 玖玖爱资源站| 操逼六区| 丁香五月婷婷Av| 天天肏天天舔AV| www.婷婷com| 色一情一乱一伦一区二区三区| 九九热在线视频| 婷婷五月天精品| 99性视频| 91se在线观看| 天天噜| 久久久久久人妻| 婷婷五月天开心网| 色五月婷婷在线观看| www.99成人视频| 色五月丁香六月婷婷| 婷婷丁香五月天狠狠| 99热这里只有精品69| 五月激情综合五月| 九九九午夜影院成人| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 婷婷丁香五另类网站| 丁香五月婷婷综合视频| 婷婷5月色| 大香蕉五月丁香| 99碰超| 99色视频| 久色视频在线| 亚洲亚洲激情| 四五月婷婷| 丁香五月综合激情久久潮喷| 丁香六月婷婷高清| 五月婷婷免费视频| 97韩国久久电影院| 色播五月丁香| 夜夜操夜夜操| 天天干天天色综合| 九九热最新| 五月婷婷偷拍| 九色无码| 色99在线视频| 激情www.98com| 操逼123网| 婷婷六月花| 天天色天天舔天天爱天天爽| 久久这里只有欧美| 真实亲子乱子伦高清在线观看| 丁香五月天婷婷激情| 91碰在线| 久久怕怕视频| 亚洲第一成人无码A片| 激情色播| 这里只有精品视频免费在线观看| 五月天婷婷基地| 青青草伊人婷婷| 久久99免费视频| 日本理论久久| 美女精品一级不卡视频| 丁香婷婷人妻| 俺五月| 狠狠色综合久久| 中文字幕av在线播放| 天天爱天天做天天操| 国产精品久久久久久久久久免费| 五月丁香久久综合91| 色婷婷最新域名| 婷婷激情综合色五月久久图片| 色五月婷婷影院| 亚洲成人网站在线观看| 如何安全看伊人婷婷| 精品一区二区三区四区五区六区介绍| 激情婷婷六月| 色99在线| 婷婷五月天福利| 伊人色综合网| 日韩青青| 午夜微拍福利| 久99在线视频| 青青草搞屄视频网站| 性生活视频98791| 色五月婷婷91| 久操操| 无毒黄色网址| 免费婷婷| 天天摸.天天mo| 爱之国产色情综合| 二人电影免费版在线观看| 日日夜夜小色哥| 中文字幕av在线| 久久精品一区二区三区四区| 天综合日日夜综合7799| 久久亚洲婷婷| 六月丁香婷婷在线波多| 婷婷综合97| 精品国产乱码久久久久夜深人妻| 色射7856五月天激情四射| 丁香婷婷六月激情文学| 五月丁香欧美在线| 丁香色五月 97干| 久久五月婷天天干| 99大香蕉| 精品成人无码A片观看香草视频| 噜噜狠狠色综合久| 99这里有精品| 婷婷玖玖丁香| 色色网站在线免费观看视频| 另类激情五月天| 91婷婷| OYIWbGcPu8H| 色婷婷香蕉| 五月婷婷激情色情网| 狠狠狠色激情综合适合| 婷婷色婷婷| 影音先锋一区二区资源站| 六月丁香停| 操逼福利视频| 九热免费视频| 婷婷五月丁香激情| 丁香五月婷婷激情尤物| 色久五月| 思思热在线观看| 风流少妇A片一区二区蜜桃 | 99久久国产综合精品五月天喷水\| 色五月天丁香婷婷色| 婷婷丁香色五月亚洲| 夜丁香综合| wwwxxx五月婷婷小说| 超碰97免费在线| 婷婷啪啪| 成人电影AV在线观看| 天天成人丁香美女AV| 色五月婷婷丁香五月| 久久亭亭电影| 激情婷婷人妻| 色婷婷久久综合| 九九精品re免费视频| 成人做爰A片免费看网站找不到了| 九九热99热| 白人荫道BBWBBB大荫道| 婷婷丁香激情综合色情| 深爱五月网| CHINESE熟女老女人HD视频| 日韩美一级毛卡片| 亚洲瑟瑟精品在线| 日本99视频| 91人人操| 五月天社区狠狠| 天天插天天干| 免费AV播放| 五月天婷婷成人网| 国产在线网址1| 五月天播播综合| 色五月婷婷久久| 丁香五月婷婷Av| 丁香网五月天激情| 婷婷激情图片| 97视频.干com| 色播五月婷婷| 婷婷影视久久| 天天激情视频| 五月丁香六月在线| 九九热10| 天天做天天爱天天爽| 五月天另类小说久久小说网| 一区二区三区四区五区| 婷婷伊人| 色色五月天网站| 五月丁香婷婷综合| 五月婷婷黄网站大全| 人妻在线中文字幕久久| 色色无码| 五月丁香婷婷色| 9精品在线| 2016日日夜夜操| 五月综合婷婷五月| 人妻在线观看视频| 九九热在这里只有精品| 公的粗大挺进了我的密道| 亚洲婷婷在线播放十月| 51XX午夜影福利| WWW.99视频| 色播播五月天| 高清a片基地| 亚州激情在线视频| 91久久久久久久久18| 热99在线精品| 99精品免费欧美小视频| 国产干逼片| 亭亭五月激情亚洲在线| 国产XXXX搡XXXXX搡麻豆| aaa久久| 婷婷五月激情的图片| 9 7总站超级碰免费视频| 久久国产性爱A V| 五月丁香婷婷成人网| 91色久| 日本99久久| 日韩婷婷| 91chinese在线| 91一起操| 色色射| 丁香六月婷婷综合色| 精品久久人妻| 精品在线| 成功精品影院| 天天草婷婷五月| 亚洲亚洲人成综合网络| 亚洲欧洲自拍图片专区五月天| 五月激情六月丁香| 五月天丁香啪啪综合| 操91| 日本在线视频手机播放五月婷| 日本精品久久久久中文字幕| 激情5月婷婷狠狠干| 亚洲亚洲人成综合网络| 激情狠狠丁香月| 婷婷五月,综合伊人| 亚洲色A| 2022久久婷婷| 激情五月综合网| 五月婷婷狠狠干| 亚洲无码色色| 九九热在视频| 五月婷婷视频| 狠狠狠夜夜夜| 在线看黄色| 91人人网| 天天做天天爱天天搞| 天天操夜夜操| 色五月婷婷天天干| 国产乱妇乱子在线播视频播放网站 | 婷婷 激情 五月| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 天天射影院| 思思热再线视频| 久久激情婷婷| 日本久久婷| 天天狠天天狠| 久久久久久久久月丁| 五月天综合区| 色婷大香蕉| 亚洲成人高清在线| 最新热中文字幕| 97亚洲视频在线| 丁香桃色综合网| jiujiuxiangjiaowang| 99热在线播放| 久久婷婷六月综合| 日韩成人无码| 99热精品在线播放| 91视频一起草| 26uuu亚洲| 五月人妻婷婷| 丁香激情综合| 狠狠综合网| 久久久人妻人伦| 色香蕉影院| 丁香色五月直播| 五月婷婷六月综合| 激情无码网| 色九区| www.五月丁香av| 久草五月天| 久久精彩免费视频| 六月丁香婷婷在线波多 | 婷婷丁香红五月91C| 丁香五月六月综合欧美| 91一起操| 97久久人人人干| 天天插天天插| 韩国情人在线电视剧免费观看高清版全集| 伊人五月婷| 五月婷婷激情久久| 五月激情综合婷婷| 五月丁香六月婷婷综合| 色欲色香综合网| 日逼免费视频| 色呦呦美女| 亚洲亚洲人成综合网络| 丁香五月婷婷六月丁香| 99久久66| 激情国产五月| 黄网免费看| 天天日夜夜操五月| 婷婷久久色| 婷婷丁香18| 人人草人人视| 思思99热这里只有精品| 久久五月天影院| 91大神操美女| 婷婷色五月综合丁香| 亚洲最大视频网站| 激情五月天影院| jiqingliuyuetian| 久久九九中文字幕| 婷婷不干网| 99人妻碰碰碰久久久久视| 69五月天视频| 久久精品99久久| 丁香网五月天| 五月婷婷丁香六月| 五月激情综合网| 国产亚洲99久久精品熟| 第四色激情网| 色永久| WWW.激情| 99热加勒比| 激情操逼婷婷| 思思热在线播放| 五月丁香另类网| 天天日天天舔天天摸| 婷婷五月天综合久久日| 五月丁香激情啪啪| 亭亭社区五月天| 久久五月婷婷电影| 欧美色必爱| 超碰在线看| 五月天社区狠狠| 韩国情人在线电视剧免费观看高清版全集 | 天天爽天天操| 爱之国产色情综合| 玖玖色资源| 久久ri精品| 久久久中文| 亚洲AV网址| 色噜噜狠狠插综合| 五月婷婷色男女| 超碰人人操人人干| 久久网婷婷| 久草婷婷网| 丁香九月婷| 五月天婷久精视频| 26uuu国产精品| 99操| 综合一区二区三区| 亚洲情欲久久| 黑人巨粗进入警花疼哭A片| 97人人射| 日韩在线一级| 久久久久久久合一狠狠做深爱| 婷婷 久综合| 人人插9| 久久久久久99日本| 婷婷五月天影院| 丁香六月婷婷综合缴| 六月天丁婷婷| 五月婷婷久久综合| 丁香久久| 欧美日韩123| 久久影视婷婷五月| 人妻视频一区而且二区| 被强行糟蹋的女人A片| 99精品在这里| 亚韩在线视频| 囯产精品久久欠久久久久久九大| 婷婷五月天综合色| 丁香六月 人妻| 欧美狠狠一在草| 婷婷久热| 97干综合网| 俺去也婷婷| 五月婷婷激情综合网| 激情五月,色播五月| 狠狠狠狠狠草| 天天草天天日| 狠狠狠五月婷婷六月丁香| 国产婷婷五月中文字幕高清 | 国产综合A片| 激情综合网激情五月婷婷| 色级停停| 大香蕉AV电影在线| 97操操网| 丁香花社区av| 婷婷在线日韩综合| 五月Huangsewang| 婷婷六月激情综合| 99热在线极品极品| 色婷婷丁香女女| 五月丁香婷婷激情图片| 九九久久偷拍| 激情综合丁香|