免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
五月婷av| 玖玖资源天天无码| 久草视频大香蕉99| 国产精品人成A片一区二区| 99re这里只有精品首页| 9 大屁股在线视频精品| 五月天激情视频| 久久婷婷五月综合色奶水99啪| 婷婷五月天色网久| 亚洲另类日本| 成人av中文字幕| 天天草天天爽| 色婷婷88| 婷婷丁香五月综合激情视频| 99爱视频精品在线观看| 在线成人视频免费| 亚洲正能量欧美| 成人婷99最新| 女人天堂AV| 美女激情婷婷| 欧美又粗又大一区二区在线观看| 久久性刺激| 亚洲经典三级| 五月天成人综合| 九九热最新视频| 五月伊人婷婷| 青青草Avb在线| 玖玖在线视频福利| 偷偷操99| 婷婷伊人综合| 精品爆操| 丁香五月开心七月| 婷婷色情五月| 五月天操逼激情| 99人妻碰碰碰久久久久禁片| 天天日天天插| 婷婷五月天激情开心网| 丁香婷婷在线| 五月婷婷激情四月| 丁香激激情网| 丁香欧美| 亚洲五月天婷婷综合| 亚洲小视频免费看| 天天做天天爱天天搞| 中文字幕激情综合| 4438国产免费看| 成人在线二区| 极品精品一区二区三区在线| 五月丁香色停停啪啪啪| 日本eVa一区=区视频| 亚洲热综合| 色播五月综合网| 天天精品视频免费观看| 色五月婷婷亚洲| www.热99热| 这里只有精品视频国产| a69在线视频| 婷婷六月丁香激情| 天天日夜夜草进麻麻的子宫| 伊人狠狠狠综合| 欧美噜噜噜草| 2025中文在线视频字幕免费观看| 狠狠色丁香99| 五月婷丁香亚洲| 天天操天天操天天操| 欧美精品中文字幕亚洲专区| 欧美日韩中文国产一区发布| 亚洲视频综合网| 99在线观看| 午夜大香蕉| 色婷五月天| 婷婷涩五月| 国产激情在线| 亚洲无码色色| 亚洲综合网在线| ..真实国产乱子伦毛片| 亚洲欧美国产A片免费观看| 做爰丰满少妇1313| 亚洲综合碰| 91综合视频在线| 六月丁香AV| 91日本在线免费| 91porn一起草| 亚洲另类AV| 自拍视频在线观看9| 丰满少妇猛烈A片免费看观看 | 内射爽无广熟女亚洲| 五月婷婷综合网| 九九色婷婷| 色一情一乱一伦一区二区三区| 欧美成人AAA片一区国产精品| 99久久国产宗和精品1上映| 国产精自产拍久久久久久蜜| 欧美色必爱| 久久日曰| 婷婷五月天在线看| 99视频网| 深爱激情综合网| 99在线精品观看99| 亚洲av成人电影在线观看| 一级性感黄色内射视频| 伦乱美欧| 99精品免费| 色碰碰视频| 色婷婷六月天| 青青草激情网| 狠狠干,狠狠操| 丰满少妇乱A片无码| 男人的天堂av俄罗斯热| 丁香五月激情婷婷视频| 日韩色色视频www| 欧美影院| 狠狠色丁香乆乆| 97操碰在线视频| 婷婷五月在线综合| 免费看成人747474九号视频在线观看| 最近中文字幕大全免费版在线 | 久久婷婷五月天激情| 超碰成人免费| 五月激情婷婷国产精品久久久久久| 91综合国免费久入| 五月丁香久久激情综合| 丁香六月婷婷激情综合| 人人看人人草人人摸| 91seav| 六月丁香婷婷亚洲中文玖玖| 色情久久久| 色婷婷丁香A片区毛片区女人区| 91碰碰碰久久久久| 99色啊| 玖玖热视频| 久久免片| 五月丁香婷婷色播无码| 热99久久这里只有精品| www.婷婷五月| 久99久热| 婷婷五月激情丁香| 九月丁香婷婷基地| 在线色五月婷婷| 99热资源在线| 中文字幕无码成人电影| 99热这里只有国产精品| 加勒比色色| 深爱激情综合| 丁香婷婷综合色五月激情国产基地| 91啪啪| 久久婷五月婷| 日本天天综合| 玖玖综合色| 99热999| 99热国产国产| 99热这里只有精品1| www.五月婷| 五月亚洲激情| 无码人妻少妇色欲AV一区二区| 五月婷婷导航| 天天插,天天射| 天天干天天爽| 婷婷色五月综合丁香| 99ri精品在线| 欧美天堂久久| 亚洲乱码在线观看| 99玖玖人人| 色情播放| 久月久在线视频| 777.色色| 丰满少妇猛烈A片免费看观看 | 五月丁香婷庭在线| 无码91中文字幕| 日日干五月天婷婷| 91色婷婷综合久久中文字幕二区| 超碰人人色| 五月丁香六月| 九九热在线观看视频| 91se视频| 五月天激情小说网| 99热无码首页| 六月五月久久丁香| 国产成人高清| 五月丁香六月激情综合| 亚洲色婷婷五月天| 色婷婷五月色| 99热爱爱干干日| 丁香五月婷婷五月| a毛片二逼wwwwwwwwww| 五月五丁香婷婷| 色五月激情五月| 久久99热这里| 九九操屄| 五月丁香六月在线| 9 1超碰九色| 99操免费视频| 色婷五月| 中国女人内射6XXXXX| 玖月婷婷爱丁香| 99在线免费观看| 亚洲综合色网站| 99视频只有精品| 99视频色在线观看| 高清资源站日A美A欧亚…| 亚洲艹网| 1024欧美看片| 五月婷婷丁香啪啪| 丁香五月天欧洲在线| 久久综合婷婷| 激情五月黄色| 可以免费观看的av| 99这里只有精品视频免费| 六月婷婷激情| 亚洲五月天综合| 亚洲AV影片在线观看| 激情五月婷婷综合色播小说| 中文字幕成| 五月天天综合| www.av视频xx999.com| 国产av天堂| 爱草视频在线| 亚洲成人无码网站| www.色综合| 五月综合婷婷开心网| 这里只有精彩亚洲视频推荐| 小色小蛇伊人婷婷色香五月| 五月天婷婷色| 综合久久五月天| 亚洲AV第二区国产精品| 狠狠狠狠狠| 五月天激情婷婷小说| 中文网婷婷字幕婷| 五月丁香色综合| 色婷綜合网| 1024在线视频| 五月婷婷激情综合| 激情綜合W W W,激情五月天| 五月天婷婷色在线视频免费观看 | 亚洲精品字幕在线观看| 国产视频婷婷| 色综合xx| www99精品| 热99国产精品| 婷婷基地成人五月天| 91超碰人人操| 99热这里只有精品免费观看| 9久精品| 99无码视频| 色五月激情婷婷| 99色激| 丁香色婷婷色手机免费在线| 色婷婷网| 日本va欧美va国产激情| 欧洲亚洲欧洲99久久| 操逼巨乳91| 久99热| 婷婷五月天天天| 五月丁香久人妻中文| 婷婷色资源| 噜噜五月天综合| 伊人深爱综合| 婷婷六月久久| 激情q青青草在线婷婷| 一片AV片免费播放| 中文字幕丰满孑伦无码专区| 婷婷九月激情| 亚洲激情综合| 色色色色色网站| 婷婷亚洲日本| 在线中文字幕av| 97luluse| 午夜不卡久久精品无码免费| www.五月天| 几激情五月婷婷色五月色天堂| 最新午夜理论片| 91色逼| 亚洲色图五月丁香五月婷婷| 国产精品久久久爽爽爽麻豆色哟哟| 综合激情在线| 99re热在线视频观看| 五月丁香六月婷精品视频| 国产ava| Caoub青青超碰| 婷婷激情五月| 嫩草AV久久伊人妇女超级A| www婷婷| www.色五月天.com| 狠狠肏综合网| 新99色色色色色色| 丁香香五月激情免费视频| 射久久丁香五月| 色五月婷婷丁香凹凸| 九九av| 色综合久久久久| 深爱五月激情| 日本狠狠色| 五月丁香激情在线| 五月天激情社区| 丁香五月婷婷六月婷| 狠狠搞五月天| 激情五月深爱五月| 激情五月丁香综合蜜桃| 九九热这里都是精品6| 任你草| 大香蕉伊人99| 九九99免费视频| 狼人狠狠操| 久操香蕉| 壅壅儕家a| 涩丁香| 亚洲亚洲人成综合网络| 国产午夜成人免费看片无遮挡| 丁香五月性| 激情五月天小说网| 久久99国产综合精品免费| 久久婷婷五月天| www.色窝| 国产超碰在线| 久在热99| 思思热视频| 五月婷婷网五月在线| 深爱婷婷色| 人妻爽爽爽久久久久久久久| 激情网 五月天| 六月丁香婷婷网| 99热精品一区| 婷婷狠狠干| 五月婷婷色五月| 亚洲AAAA网| 六月婷婷网站| 99网99热| 丁香五月影院| 婷婷丁香激情五月天色色色| 五月天婷婷久草丁香| 日本色色网站| www久久99com| 五月天婷婷五月| www.五月天社区| 激情综合五月婷婷| 五月激情啪啪| 岛国在线观看91| 97碰 在线视频观看| 九九99九九精品视频| 99久操| 97人人操人人| 亚洲99手机免费看视频| 成人免费高清在线播放| 开心五月天激情网| 九九99九九精品视频| 逼里香不卡| 日日干天天| 久久久99视频| 青柠影视免费高清电视剧| 综合久久五| 丁香玖玖| 五月天婷婷伊人| 日韩爱操视频| 国产成人片| 激情五月天情色| 色综合久久88色综合天天99| 婷婷六月激情丁香| 丁香五月婷婷啪啪啪| 婷婷射丁香| 久99久在线| 色色色9| 色99在线| 亚洲成人AV在线| www.婷婷.com| 开心五月激情五月丁香五月婷婷| 精品久久9| 香蕉久久国产AV一区二区| 99re热视频这里只精品| 欧美色久| 五月丁香亚洲婷婷| 欧美性做爰大片免费看办公室 | 婷婷五月色亚洲| 91无码视频| 男女啪啪做爰高潮无遮挡| 五月婷久久综合| 五月婷五月婷伊人伊人五月婷| 五月综合六月婷婷| 亚洲精品一区无码A片| 日都一级A片| jiujiu无码五区| 九九久久99精品免费观看www| 97人人操人人| 久久婷婷视频| 97碰碰九九视频| 伊人久久艹| www.成人婷婷综合| 91男同视频| 亚洲午夜视频| 99精品在线| 精品欧美一区二区三区久久久 | www激情网| 91精品国产91久久久久青草| 人人操91色| 极品人妻videosss人妻| 在线不卡视频| 欧美久热| 大香蕉婷婷五月天| 午夜成人综合| 亚洲六月婷婷| 碰久久精品w| 激情综合网五月天天| 91色综合| 久久久99视频| 亚洲六月色婷婷| 麻豆123区| 九九在线免费观看| 麻豆AV一区二区三区| 996热re视频精品视频| 婷婷五月六月| 99国产欧美视频| 婷婷激情五月综合在线视频| 国产69久久久欧美黑人A片| 久综合九| 91久久色| 国产精品美女| www.99婷婷| 久久中文网| 高清激情av在线观看| 国产亚洲99久久精品| 免费播放片大片| 99热精品在线| 五月天激情图片| 91视频综合网| 情色五月天网站| 91在线看免费 九九九九| 五月开心激情网| 国产婷婷色综合AV蜜臀AV | 五月丁香久久网| 色五月激情婷婷| 丁香激情久久| 婷婷91| 就要去操亚洲成人精品五月天丁香婷婷| 91ncom.色| 五月丁香六月综合基地| 美日韩成人| 香焦网五月天| 操骚货在线| 六月丁香视频网站| 嫩草AV久久伊人妇女超级A| 亚洲激情亚洲激情| 少妇大叫太大太粗太爽了A片| 天天 日综合| 亚洲精品久久久久久久久久飞鱼| 婷婷操无码| 99re在线这里只有精品视频首页| 午夜丁香久久久久久| 开心五月色婷婷综合开心网| 婷婷色五月天色| 婷丁香五月天| 综合欧美五月婷婷| 99色嘟嘟精品网站| www.9797国产| 婷婷第六色| 中文字幕丰满孑伦无码专区| AAA亚洲AV| 四季AV综合网| 99网| 桃色激情婷婷伊人网| 91婷婷五月丁香碰| 五月天色播网| 成人国产欧美大片一区| 国产精品成人av在线观看春天| 91九色PORNY肉丝在线| 五月丁香六月在线| 99 热| 日日影院 | 天天综合网亚洲网站| 婷婷五月a| 黄色成人网站在线播放| 天天综合激情| 91在线看片| 五月天综合婷婷| 狠狠色 综合色区| www.jiujiujiu| 99九九视频精彩在线| 六月婷婷色综合| 五月激情六月宗合| 日本熟女视频一区二区| 爆乳熟女一区二区三区爆乳| 午夜精品久久久久久久爽| 五月丁香六月综合激情| 日日婷婷不卡| 97在线/亚洲| 天天日天天插| 久久婷婷内射| 久久96热| 成人精品在线观看| 大香蕉在线观看9| 久9精品视频| 加勒比色色| 啪精品| 99热青青草| 色婷婷综合五月| 干一干xxxx| www.五月天| 丁香五月色五月| 婷婷一本和五月丁香| 欧美丁香五月| 久久婷婷五月天激情新地址| 中文字幕成人| 五月婷视频在线| 五月天色婷婷av| 五月天丁香成人社| 香蕉五月婷婷| 国产亚洲精品AAAA片APP| 伊人婷婷大香蕉| 久久婷婷五月综合伊人| 激情亚洲色图片丁香综合| 日本色色色| 97色啪| 色约约视频一区二区三区四区五区 | 色视五月天婷婷| 久久婷婷五月天懂色| 五月丿香啪啪| 伊人影院久久网| 人妻日日日| 婷色五月| 亚洲色五月| 可以看的AV| 淫视馆AV在线| 91热99| 99久久www| 久久久久丁香婷婷五月天| 丁香色情五月综合网站| 99视频在线观看欧| 五月久久亚洲| 夜夜操天天爽| 色五月激情婷婷| 国产精品久久7777777精品无码| 五月色欧洲| 五月丁香亭亭成人电影| 亚洲综合干| 五月丁香狠狠爱婷婷综合| 丁香五月综合激情久久潮喷| 包操45分钟网站| VA五月激情在线| 五月丁香综合网色欲| 天天色情站| 久久er九九| 日日干夜夜撸夜夜骑| 五月丁香激情综合网官网| 人人色性网| 深爱激情五月天色婷婷| 久久这里99| 天天操夜夜爽| 日日夜夜狠狠| 九热视频| 蜜臀AV在线观看| 久久人妻熟女一区二区| 久久九九Com| 丁香五月婷婷高清| 99热新网址| 激情小说五月天| 做爱夜夜干天天操| 亚洲五月综合色播| 国产五月天欧美色| 五月色婷婷中文字幕| 青草激情综合| 天天日天天久久青青| 国产干逼片| 五月天基地| 丁香花五月天激情| 中文字幕+乱码+中文字幕在线观看| 日韩欧美四五区| 天堂AV在线看| 人妻综合网| 亚洲妇女熟BBW| 伊人久久丁香五月91| 婷婷中文网站| 九九精品网站| 五月丁香黄色| 九九色综合网| 97精品人人A片免费看| 婷婷色网址| 婷婷丁香五月91| 丁香六月AV| 蜜臀嫩草| 色色激情网| 大陆极品少妇内射AAAAAA| 91a片爽| 色色五月天丁香婷婷| 婷婷伊人无码| 91精品久久久久、久五月天| 亚洲色啪| 91疯狂操操操操| 97五月天婷婷午夜| 天天舔天天摸| 青草视频在线播放| 五月天婷婷操逼视频| 色色99色色| 婷婷狠狠干| 亚洲综合五月天| 丁香五月婷婷老师网站| 日本综合久| 免费五月婷婷网| 天天干天天色综合| 综合 蜜月 婷婷| 人人爽人人射-美女久久久久久久久久-成人AV | 大香蕉久艹| 国产片色| 丁香婷婷六月| 99超级碰碰| 99色热视频| 亲子乱AV一区二区三区下载| 婷婷日韩| 五月丁香少妇A| 色99自拍| 色黄啪啪| 久久五月天激情视频| 婷婷五月电影| 热婷婷久| 小视频一区 | 播五月开心婷婷欧美综合| 九九热九九热精品| 婷色五月天| 亚洲黄色操逼| 免費亭亭成人| 久久人人看| 国产免费av网站| 婷婷激情综合无月| 日本99热| 色碰碰| 五月婷婷综合久久| 国产伦亲子伦亲子视频观看| 久热这里只有国产| 婷婷五月天激情综合| 大鸡巴伊人网| 99爱视频在线免费观看| 91丨九色丨东北熟女| 97人人做| 欧美天堂久久| 国产资源在线视频| 这里精品| 久草婷| 思思热久久久久思思热| 色婷婷丁香五月| 激情久久久| 国产成人在线精品| 亚洲五月激情| 婷婷五月电影| av在线播放网址| 日韩三级高清无码| 国产综合丁香五月天| 亚洲天天综合| 99操不停| 激情五月六月婷婷| 亚洲激情Av| 俺来也综合网精品一区| 色色综合网www| 深爱五月激情| 色五月综合在线| 三级毛片视频| 久久婷婷五月天激情| 激情AV| av最新在线| 亚洲碰碰碰| 少妇人妻丰满做爰XXX| 国产亚洲精品人人| 国产 码在线成人网站| 综合狠狠伊人| 欧美日韩99| 激情久久四色| 国产乱子轮XXX农村| 干亚洲天堂| 五月激情综合网| 狠狠五月天婷婷| 丰满少妇猛烈A片免费看观看| www.狠狠狠.com| 成人AV在线中文版| 婷婷五月天激情在线| 午夜福利成人AV91| 久久伦乱| 久久99热只有精品| 中文毛片无遮挡高潮免费| 丁香六月婷婷综合网| 亚洲色无码A片一区二区麻豆| 亚洲第精品| 五月做爱| 五月天伊人综合| 综合激情五月丁香| 超pen个人视频97| 射久久丁香五月| 伊人成综合五月婷婷| 亚洲 激情 中文| 五月天伊人久久久久| 五月婷婷综合在线| 国模狼狼| 91九色视频在线观看| 97狠狠色| 大地资源色婷婷视频在线 | 五月丁香六月婷婷啪啪| 思思热在线| 99爱免费在线视频| 日韩肏屄网| 丁香五月偷拍| 97五月天婷婷| 色色色婷| 任你躁XXXXX麻豆精品| 欧州色色| 99这里只有精品视频免费| 中文字幕在线免费看线人| av操一操| 天天干,天天舔| 五月天丁香色色| 九九热re99re6在线精品| 丁香五月天色综合| 91在线观看www| 26UUU欧美| 色婷婷六月开心中文字| 久久精品91视频| 香蕉AV福利精品导航| 日本狠狠网| 婷婷日在线观看| 免费观看高清无码| 综合五月婷婷| www.狠狠| 开心日韩丁香婷婷五月| 狠狠第四色| 国产成人综合电影| 五月激情视频| 久久婷婷六月综合| 色婷婷丁香五月天在线视频| 激情无码网| 国产精品日本一区二区在线播放| 五月丁香色婷婷久久| 婷婷丁香五月天色区| 五月丁香黄色| 99热在线极品极品| 五月丁香啪啪| 免费AV在线| 色综合综合网| 亚洲另类婷婷五月丁香在线播放| 一起草av在线观看| co超碰在线观看| 天天干 夜夜爽| 五月天成人网在线观看| 激情五月综合ì香亚洲| 亚洲精品无码久久| 色天堂操| 久99婷婷色综合| 激情开心五月天| 九艹在线| 婷婷六月激情| 丁香五月六月欧美| 开心亚洲久久开心| 亚洲成人在线播放| 玖玖婷婷色五月| 五月天另类小说久久小说网| 亚洲妇女熟BBW| 色婷婷影院| 免费看成人747474九号视频在线观看| 懂色AⅤ| 欧美激情丁香五月天久久婷婷一区| 性生活视频98791| 色九综合| 人人操人人添人人摸97| 激情五月四色| 香蕉人妻AV久久久久天天| 99热97| 日韩亚洲视频| 激情床戏| 9久国产| 51国精产品自偷自偷综合| 99视频热| 天天肏天天爽夜夜爽| 欧美丁香六月在线观看视频| 丁香五月花婷婷开心| 一本久道综合色婷婷五月| 色色五月天com| 月丁香久久久| 九九久久久综合| 亚洲传媒在线观看| 热久久999| 丁香六月婷婷基地| 婷婷影院A成人| 91久久精品国产91性色TV| 搡BBBB搡BBB搡18| 大香蕉手机视频| 九九在线视频| 激情综合五月| 亚洲亚洲人成综合网络| 欧美性生交A片免费看| 福利视频在线播放| 五月天色小说| 91人妻人人操| 超碰京东热av男人的天堂| 日韩久久欧亚| 先锋资源婷婷| 婷婷五月天堂| 99久热| 激情小说五月丁香在线视频观看视频| 台湾综合丁香五月蜜桃| 日本在线视频手机播放五月婷| 国产色色网址网站| 思思热在线精品视频网站| 99色热综合| 九九热免费| 五月婷婷啪啪| 中文字幕av久久爽一区| 一级黄色影片| 亚洲妇女熟BBW| 婷婷五月丁香第四色超碰在线| 亚洲中文字幕翔田千里| 免费AV在线网址| 综合久久综合久久| 久久er免费视频| 深爱五月天 开心网| 婷婷五月天日本无码| 国产欧洲欧洲精品久久| 99在线资源| 色综合天天综合成人网| 精品成人无码A片观看香草视频| 五月天社区婷婷| 狠干综合| 婷婷色色网| 六月天无码网址| 久久人妻伦理| 超碰91在线| 无码少妇高潮喷水A片免费| 9久9久9久女女女九九九一九| 五月丁香在线观看99| 婷婷色网| 亚洲五月天婷婷综合| 99热色精品| 天天爽天天日| 中文字幕丰满乱孑伦无码专区 | 婷婷五月天福利| 丁香影院五月综合| 二色AV| 五月色欧美| 先锋资源91| 99热精品免费| 69久热| 性爱先锋AV| 五月婷婷网站| 五月丁香六月激情欧美综合| 久久婷婷老| 激情亚洲婷婷| 日韩按摩二区| 超碰在线视屏| 欧美A片在线视频免费观看| 五月天伊人综合| 丁香伊人激情| 991精品在线视频| 少妇出轨做爰高潮A片| 91在线操| 九九一综合精品| 国产成人在线精品| 亚洲无码影音| 无码地址| 亚洲第一综合| 国产精产国品一二三在观看| 91婷婷色| 色噜噜婷婷| 亚洲另类电影| 影音先锋91| 天天操天天日天天操| 激情五月天电影| 操逼综合网| 婷婷一本和五月丁香| 99九九综合久久九九| 色色色激情网| 国产亚洲精品人人| 99亚洲精品| 大香蕉久久视频久久视频| 国产在线中文字幕| av人人干| 五月天丁香婷婷久久九| 五月丁香婷婷爱激情综合网| 天天干天天插| 黄色av网站在线免费播放| 天天草人人摸| 久久精品五月天| 婷婷五月综合免费在线| 啄木鸟黑丝一区二区| 99久热| 99熟女啪啪视频| 无码 色| 婷婷五月天天| 丁香六月亚洲| 99亚州综合精品成人网| 色色九九五月天 | 亚洲精品永久久久久久| 任你干aa| 99惹精品视频| 天天射影院| 俺来也综合网精品一区| 婷婷射丁香| 无码橾| www.henhengan| 激情五月天婷婷播播久久综合91| 色色色视频| 第五色婷婷| 337p大胆噜噜噜噜噜91Av| 偷偷操99| 九九99男女视频在线观看| 婷婷干五月综合在线播放| 久久黄色片| 婷婷五月天综合蜜桃| 超碰免费人人| 婷婷,五月天,丁香,第一| 日本99久久| 丁香婷婷六月天| 色综合大香蕉| 国产综合视频婷婷| 久久婷丁香五月| 香蕉视频91| 超碰在线中文字幕| 99碰网站| 超碰操网| 99热自拍| 26uuu国产| 成人五月天在线观看| 精品人妻一区| 久久久久婷婷五月热综合| 五月丁香在线观看| 五月激情四射婷婷丁香| 色色激情五月天| 99超在线| 国产精品久久久爽爽爽麻豆色哟哟| 婷婷五月天777| 蜜桃人妻无码AV天堂三区 | 美腿丝袜AV天堂网| 日日夜夜干| 色琪琪一综合久久激情五月视频| 色色色国产| 九九人人精品| 亚洲 五月 婷婷 成人| 天天摸天天舔天天天天爽| 91一起操| 色婷婷五月影视| 色色五月婷婷| 巴基斯坦粉嫰无码视频| 五月婷婷很很色| 婷婷99狠狠躁| 丁香久久综合| 色999亚洲人成色| 六月婷婷俺也去| 影音先锋美国A| 另类五月激情| 91九色中文字幕女在线观看| 久久99视频| 79亚洲精品少妇| 91夫妻网站九色| 色五月 五月婷婷| 男女99免费视频| 欧美电影在线播放| 丁香六月激情综合啪啪| 欧美性久| 操一区| 蜜臀嫩草| 久久婷婷人人| 激情婷婷五月天| 五月丁香九九九综合| 婷婷五月精品中文| 久久久婷| 色五月婷婷久久大| 日韩精品成人在线| 丁香五月激情综合| 伊人五月成人| 黄网网站在线播放| 97在线观看| jiZZdr| VA婷婷| 五月激情久久综合网| 亚洲熟女乱色综合亚洲网站| 五月婷婷中文| 五月丁香激情欧洲啪啪| 1024婷婷综合久久五月天| 五月婷婷六月丁香| 五月婷婷激情久久| 色综合久| 免费色婷婷| 婷婷五月天色色| 99热只有精品在线观看| 九九热99免费视频| 男女啪啪做爰高潮无遮挡| 99无码黄色视频| 91色逼| 五月丁香在线精品| 久久黄色免费视频| 激情婷婷综合网| 99热 在线播放| 五月婷网| 99精品视频在线| 日本狠狠网| 中字幕视频在线永久在线观看免费| 婷婷五月天中文字幕| 99无码视频| 日日夜夜爽| 激情五月天影院| 久久丁香久久| 天天干天天拍| 六月丁香好婷婷| 九九Y精品热播| 久色视频| 久久久性爱视频| 插插干干干色| 久久五月激情综合| 岛囯综合激情网| 99碰碰| 国产亚洲精品久久一区二区三区| 婷婷五六日| 久久9精品| 久久中国毛毛片爱久久| 性按摩玩人妻HD中文字幕| 在线婷婷| 夜夜骑天天操| 婷婷五月综合啪| 欧洲精品欧洲情| 婷婷丁香激情综合色情| 丁香五月停停av| 无码人妻少妇色欲AV一区二区| 国产avapp 网| 99热.com| 99热这里只有精品33| 操91| 91九色熟女| 996热re视频在线观看视频| 777精品久无码人妻蜜桃| 激情综合五月| 久久色9| 狠狠草在线观看| www.99热. com这里只有精品| 色色色视频| 五月天丁香六月综合| 色情五月天丁香社区| 国产伊人大香蕉| 在线A色| oumeisesewang| 99re熱| 九九青青草成人| 日韩在线9| 2015超碰| 日本免费91| 888久久久| 色婷狠狠| 大香蕉丁香五月| 五月成人丁香av91| 丁香网五月天| 国产精产国品一二三在观看 | 九月激情综合| 久碰综合| 久啪欧美| 99热这只有| 激情丁香五月| 五月丁香婷婷综合在线| 中文字幕人成乱码在线观看| 婷婷五月天开心网| 538任你爽| AV在线大香蕉| 五月停停色色丁香| 97香蕉久久超级碰碰高清版 | 色综合大香蕉| 超碰在线国产9| 综激情网| 99碰超| 97超碰人人操| 五月丁香| 五月天婷婷基地丁香| 欧美成性色| 久久久久久久久久久久久久人妻视频 | 亚洲一区二区无码蜜乳av| 综合五月天天天天天五月| 国产99视频永久免费| 开心五月深爱五月婷| 一区二区三区四区无码| 99国产性感视频| 五月婷天天搞视频| 亚洲六月婷婷| 色婷婷免费观看| 99综合视频| 色色五月婷| 国产无套精品一区二区| 91se精品国产| 伊人丁香五月婷婷潮吹| 九九热婷婷| 97精品综合久久| eeuus五月婷| 人人操超踫| 亚洲va欧洲va国产va不卡| 日本五月天网站| 色色吧综合| 欧美大肥婆大肥BBBBB| 男人大jjc女人免费视频| 国产女人十八水真多1| 爆乳熟女一区二区三区爆乳| 色色综合网站| 五月丁香六月婷婷在线小说视频| 婷婷色Av| 偷拍91九色| 人妻少妇色综合| 国外亚洲成AV人片在线观看| 日本天堂网站99| 啪啪99| 六月综和久久| www激情com| 综合激情在线| 五月婷婷综合激情| 色五月丁香91| 视频一二区| 久久久久久久久久久久久久人妻视频| 亚洲五月天婷婷综合| 综合网啪| 香蕉AV福利精品导航| 六月婷婷日| 另类小说五月天| 日日激情网| 超碰色色综合| 国产欧美精品AAAAAA片| 2005天天干天天1| 亚洲一个色| 五月婷婷开心综合| 97人妻碰碰中文无码久热丝袜| 亚洲亚洲人成综合网络| 激情综合网色五月| 欧美激情xxxXX| 色婷婷的五月天| 五月婷婷色色| 九九综合图片网| WWW,激情五月天,COM| WWW色五月天| 成人丁香五月| 午夜丁香婷婷| 777久久久| 开心深爱五月天| 99爱在线视频| 中文字幕乱码亚洲精品一区| 9婷婷内射| 五月青青草综合| 久久性刺激| 激情婷婷丁香| 激情AV| 99热这里有精力| 五月开心网| 啪啪 综合网| 天天干天天色天天干| 日韩啪啪网| AV在线不卡网站| 婷婷五月丁香影院| 婷婷色在线播放| 青青草大香| 伊人婷婷青青cao| 五月婷婷在线免费观看| 中文字幕乱码亚洲精品一区 | 五月丁香六月婷婷欧美综合| 五月丁香影院| www.91在线观看| 丁香五月婷婷色| 激情综合五月| 超碰成人在线观看| 丁香色五月天| 密着浓厚中出乚交尾GvG935| 亚洲精品国产成人AV在线| 日屌日日操日日色| 日韩中文字幕| 色 免费网站视频| 色五月婷婷老师| 中文字幕丰满乱孑伦无码专区 | 99热99热在线| 久久久久久久综合狠狠综合| 丁香五月在线观看| 中文字幕视频色婷婷| 亚洲国产精品成人免费一区久久久在线观看AAAA | 乱码操操| 天天在线XXX| 亚洲AV成人无码精品| 激情婷婷五月女| 欧美操人| 五月婷婷激情性爱| 激情综合五月婷婷丁香| 七七色综合| 深爱激情网噜噜色| 久久久人妻| 丁香婷婷精品视频| 欧美久热| 婷婷精品在线| 激情五月天啪啪| 大香蕉狠狠爱主页| 99爱这里只有精品免费视频| 婷婷香蕉精品| 丁香五月婷婷88在线| 五月香婷婷| 丁香亭亭久久| 亚洲五月婷婷| 婷婷六月激情小说网| 九九色精品| 中文字幕av久久爽一区| 97久久精品| 亚洲婷婷丁香| 日韩色五月| 另类图片激情五月| 夜夜爱伊人| 久久婷婷丁香| 欧美天堂久久| 久久久久久久97| 亚洲色五月婷婷| XX色综合| 偷拍九九五月丁香婷婷| 激情网婷婷五月天| 欧美人人女女精品综合五月天| 亚洲色五月婷婷| 毛v一区二区视频| 天天插天天爽| 91|九色|动漫| 黄色成人网站在线播放| 99黄色在线视频精品熟女| 色色色婷| 日本综合久久| 99色色视频| 亚洲激情五月婷婷日日| ..真实国产乱子伦对白在线_欧| 无码激情精品色婷婷久久久久| AA片在线观看视频在线播放| 丁香五月激情视频在线| 亞洲自怕| 可以看的av网站| 99精品视频偷拍| 激情综合网五月激情| 狠狠操.com| 午夜精品人妻无码一区二区三区| 日韩av干| WWW色色色COM| 亚洲无码色| 久久99婷婷| 五月天伊人| 色欲资源网| 9999热在线观看| 欧美在线干| 草美女在线观看视频在线播放| 91中文狠狠综合| 女高怪谈在线观看| 天天操加勒比| 激情五月婷婷| 丁香五月婷在线| 人妻激情视频| 国产色色视频| 色婷婷五月网| 大香蕉七区| 亚洲最大视频| 情情五月天色| 日韩成人电影av| 一区二区三区视频| 色插综合网| 免费AV在线网址| 丁香色五月天| www开心激情网| 久久人人九| 日日夜夜狠狠| 26UUU欧美| AAA久久| 日韩国产在线精品| 激情综合一| 丁香六月天婷婷在线| 青青久久五月天丁香婷婷| 日韩综合久久| 五月丁香六月婷婷综合网| 中文字幕第四色.999| 色五月激情五月| 99热99热99热99热| 日良久久| 大香蕉在线99热| 91色综合| 六月丁香影院| 99色综合网| 人操人|