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

ARTICLE DETAIL

資訊詳情

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

MR25H40CDF + STM32L073RZ:工業(yè)級(jí)MRAM存儲(chǔ)方案設(shè)計(jì)與實(shí)現(xiàn)

MR25H40CDF + STM32L073RZ:工業(yè)級(jí)MRAM存儲(chǔ)方案設(shè)計(jì)與實(shí)現(xiàn) 在工業(yè)設(shè)備里做數(shù)據(jù)存儲(chǔ)最煩的不是“存不下來”而是“存了不敢用”。我以前做過一臺(tái)控制柜數(shù)據(jù)記錄儀要存運(yùn)行參數(shù)、故障碼、累計(jì)運(yùn)行時(shí)間系統(tǒng)隨時(shí)可能掉電數(shù)據(jù)必須一掉電就能留住。用EEPROM壽命撐不住頻繁寫入用NOR Flash又有塊擦除和磨損均衡的問題后來直接換了 Everspin 的 SPI MRAM 芯片 MR25H40CDF搭配 STM32L073RZ 這顆低功耗 MCU一次把讀寫驅(qū)動(dòng)、掉電保護(hù)和數(shù)據(jù)一致性全部做完了。這篇就把這個(gè)組合從選型到硬件、從驅(qū)動(dòng)到調(diào)試的完整過程寫出來給做工業(yè)控制器、數(shù)據(jù)記錄儀、電池設(shè)備或者任何需要高速頻繁寫非易失數(shù)據(jù)的嵌入式項(xiàng)目當(dāng)參考。1. 為什么最后選了 MR25H40CDF工業(yè)存儲(chǔ)選型的底層邏輯1.1 三種常見非易失存儲(chǔ)的特性差異工業(yè)設(shè)備里用到非易失存儲(chǔ)最常見的三個(gè)選項(xiàng)是 EEPROM、NOR Flash 和 MRAM。很多人第一反應(yīng)是“EEPROM 便宜”“NOR Flash 容量大”但真放到項(xiàng)目里每個(gè)都有讓你難受的地方。EEPROM 的問題在于壽命。常規(guī) SPI EEPROM 寫入擦除壽命也就是 100 萬次左右看著挺多但設(shè)備每秒鐘要寫一次當(dāng)前狀態(tài)連續(xù)跑半個(gè)月就逼近極限。我上一臺(tái)設(shè)備就是這么踩坑的兩個(gè)月后數(shù)據(jù)區(qū)偶發(fā)讀回 0xFF排查到最后發(fā)現(xiàn)是 EEPROM 某塊地址壞了。而且 EEPROM 頁寫入有限制跨頁寫還得拆開處理。NOR Flash 的問題是擦除。寫數(shù)據(jù)之前必須先把目標(biāo)塊擦成 0xFF一次擦除最小單位是一個(gè)扇區(qū)通常 4KB 起步。假如你只想修改一個(gè) 16 字節(jié)的參數(shù)也要先讀出整個(gè) 4KB、擦除、再寫回去。這不僅慢還引入掉電風(fēng)險(xiǎn)——擦完了寫一半斷電現(xiàn)場(chǎng)數(shù)據(jù)直接飛了。要規(guī)避就得做雙備份、操作日志軟件復(fù)雜度一下子上去。MRAM 的工作原理完全不同它靠磁阻狀態(tài)保存數(shù)據(jù)而不是靠電荷。磁存儲(chǔ)不存在電荷泄漏所以數(shù)據(jù)保持不依賴刷新也不存在擦除過程寫入可以直接把 0 寫成 1、把 1 寫成 0。它本質(zhì)上是一顆“速度像 SRAM、斷電保留像 Flash”的存儲(chǔ)芯片。MR25H40CDF 就是 Everspin 串行 MRAM 家族里容量 4Mbit、SPI 接口的型號(hào)工業(yè)溫度范圍8 引腳 DFN 封裝非常對(duì)工業(yè)場(chǎng)景的口味。1.2 為什么不是 FRAM有人會(huì)問FRAM鐵電存儲(chǔ)不也是按字節(jié)寫、不需擦除嗎FRAM 確實(shí)有同樣的優(yōu)點(diǎn)我也在別的項(xiàng)目里用過富士通那顆 MB85RS256。但 MR25H40 在某些維度上更香。FRAM 常見容量做到 256Kbit、1Mbit 就算大了4Mbit 的 FRAM 不是主流價(jià)格也不友好。MR25H40CDF 是 4Mbit存日志緩沖、存曲線數(shù)據(jù)、存多份參數(shù)備份都有富余。MRAM 的讀改寫接口是 SRAM 兼容的SPI 時(shí)鐘可以跑到 40MHz而不少 SPI FRAM 官方上限在 25MHz 左右對(duì) MCU 應(yīng)用差別不大但持續(xù)高頻讀改寫時(shí) MRAM 的時(shí)序余量更充足。另外從供應(yīng)鏈角度看Everspin 這顆料在很多工業(yè)存儲(chǔ)板卡上用了很多年工業(yè)級(jí)后綴的供貨穩(wěn)定不像某些消費(fèi)級(jí) FRAM 容易停產(chǎn)換料。所以最終我的選擇是常規(guī)參數(shù)存儲(chǔ)用 MRAM不需要到底層文件系統(tǒng)。1.3 這顆芯片到底解決了什么問題把需求拆開看MR25H40CDF 主要替我解決了三件事。第一寫入延遲幾乎為零。SPI 發(fā)完寫命令和數(shù)據(jù)數(shù)據(jù)立刻進(jìn)存儲(chǔ)陣列不用像 Flash 那樣等內(nèi)部 program 狀態(tài)機(jī)跑完。對(duì)掉電保存場(chǎng)景非常關(guān)鍵掉電瞬間你根本沒有幾百毫秒慢慢等擦寫完成。第二寫入壽命長(zhǎng)到不用考慮。EEPROM 要算壽命余量Flash 要做磨損均衡MRAM 不需要。數(shù)據(jù)手冊(cè)標(biāo)稱讀出改寫次數(shù)在 10 的 14 次方量級(jí)工程上等于無限次。我可以放心地每秒刷一次運(yùn)行計(jì)數(shù)器不用設(shè)計(jì)磨損均衡算法。第三按字節(jié)寫。想改哪個(gè)地址就寫哪個(gè)地址沒有頁、沒有扇區(qū)、沒有擦除。代碼寫起來直白很多邏輯也少很多。2. MR25H40CDF 的硬指標(biāo)解讀讀數(shù)據(jù)手冊(cè)時(shí)最容易忽略的幾處2.1 容量、地址與指令集MR25H40CDF 容量 4Mbit也就是 512KB按字節(jié)尋址。雖然地址線邏輯上只需要 19 位但 SPI 傳輸?shù)刂窌r(shí)約定用 3 個(gè)字節(jié)也就是 24 位地址幀。高 5 位必須填 0如果你把地址寄存器清零習(xí)慣性寫成 4 字節(jié)地址多出來的字節(jié)會(huì)被當(dāng)作第一個(gè)數(shù)據(jù)字節(jié)整幀數(shù)據(jù)就錯(cuò)位了。這是這類 SPI MRAM 和某些支持 4 字節(jié)地址模式的 SPI NOR Flash 不一樣的地方代碼里要盯緊。指令集和大多數(shù) SPI 存儲(chǔ)兼容核心就這幾個(gè)WREN0x06寫使能WRDI0x04寫禁止RDSR0x05讀狀態(tài)寄存器WRSR0x01寫狀態(tài)寄存器READ0x03讀數(shù)據(jù)WRITE0x02寫數(shù)據(jù)其中 WRITE 指令可以連續(xù)寫任意字節(jié)數(shù)地址會(huì)自動(dòng)遞增到最高地址后回繞。沒有 Flash 那種“必須寫滿一頁”的限制。這一點(diǎn)在驅(qū)動(dòng)設(shè)計(jì)里非常舒服我后面連續(xù)寫幾百字節(jié)故障記錄時(shí)根本不用管頁邊界。2.2 速度、壽命與保持特性MR25H40C 這個(gè)后綴的 SPI 時(shí)鐘上限是 40MHz但 STM32L073RZ 的 SPI 最高主頻到不了那么高所以瓶頸在 MCU 側(cè)不在存儲(chǔ)側(cè)。實(shí)測(cè)里我用 16MHz SPI 時(shí)鐘跑讀寫512KB 全量重寫大概兩三百毫秒這個(gè)速度對(duì)工業(yè)現(xiàn)場(chǎng)參數(shù)保存來說已經(jīng)快到?jīng)]感知了。數(shù)據(jù)保持特性手冊(cè)上給的是 20 年以上實(shí)際上磁存儲(chǔ)的保持特性在常溫下非常保守我見過的老工業(yè)板卡上十幾年前的 MRAM 數(shù)據(jù)讀出來原封不動(dòng)。注意一點(diǎn)如果環(huán)境溫度長(zhǎng)期超過 85℃保持時(shí)間會(huì)打折扣選料時(shí)要確認(rèn)后綴對(duì)應(yīng)的工業(yè)溫度等級(jí)不要拿商業(yè)級(jí)硬頂。另外 MR25H40CDF 沒有 Flash 那種塊擦除也不存在讀改寫比較慢的問題。它的寫周期結(jié)束后狀態(tài)寄存器 WIP 位自動(dòng)清零代碼里輪詢一下是為了時(shí)序嚴(yán)謹(jǐn)實(shí)際寫操作快得經(jīng)常第一次讀狀態(tài)就發(fā)現(xiàn)已經(jīng)不忙了。2.3 WP、HOLD 引腳的坑很多人在 SPI MRAM 上第一次翻車都是因?yàn)?HOLD 引腳。MR25H40CDF 的 HOLD 引腳低電平有效一旦拉低芯片會(huì)暫停當(dāng)前 SPI 通信此時(shí)時(shí)鐘邊沿再多數(shù)據(jù)也不進(jìn)。問題是這顆引腳在 DFN 封裝里如果不處理懸空受到干擾自動(dòng)拉低就會(huì)出現(xiàn)“偶爾整段數(shù)據(jù)讀出來是舊值、主機(jī)也沒報(bào)錯(cuò)”的詭異故障。正確做法是 HOLD 直接接 VCC不通過 GPIO 控制。WP 引腳是寫保護(hù)。系統(tǒng)里如果希望軟件能改狀態(tài)寄存器就把 WP 拉高如果希望關(guān)鍵區(qū)域硬件鎖定可以用 GPIO 控制 WP正常運(yùn)行時(shí)拉高需要解保護(hù)時(shí)再拉低。注意 WP 只保護(hù)狀態(tài)寄存器里的塊保護(hù)位對(duì)應(yīng)的區(qū)域不是把整片寫死具體保護(hù)范圍和位配置要看手冊(cè)里狀態(tài)寄存器的定義。3. STM32L073RZ 與 MR25H40CDF 的硬件對(duì)接原理圖、引腳與總線設(shè)計(jì)3.1 引腳分配建議STM32L073RZ 是 Cortex-M0 內(nèi)核的超低功耗 MCU192KB Flash、20KB RAM自帶 3 個(gè) SPI 外設(shè)性能夠用而且待機(jī)功耗低很適合做工業(yè)數(shù)據(jù)記錄主控。我用的是 SPI1引腳分配如下信號(hào)MCU 引腳說明SCKPA5SPI1 時(shí)鐘MOSIPA7主機(jī)輸出、存儲(chǔ)輸入MISOPA6存儲(chǔ)輸出、主機(jī)輸入NSS/CSPA4片選GPIO 軟件控制WPPC0可選GPIO 輸出默認(rèn)拉高HOLD接 VCC硬上拉不做 GPIO片選建議用 GPIO 軟件控制而不是開硬件 NSS。原因很簡(jiǎn)單軟件控制 CS 可以在任何時(shí)刻精確拉高拉低方便做 WREN 和后續(xù)指令之間的時(shí)序控制硬件 NSS 在某些外設(shè)配置下會(huì)在傳輸開始前自動(dòng)觸發(fā)行為不如軟件直接。如果你非要用硬件 NSS務(wù)必把 NSS 配置成硬件模式并確認(rèn)極性和時(shí)序一致否則容易踩坑。MISO 是存儲(chǔ)芯片輸出不能只上拉或者懸空正常 MCU 的 SPI 輸入引腳要配成浮空輸入。SCK 和 MOSI 在 MCU 側(cè)是輸出我一般配上拉關(guān)閉速度等級(jí)選 High保證 SPI 時(shí)鐘 16MHz 時(shí)邊沿不夠肉。3.2 電源與 PCB 布線MR25H40CDF 工作電壓范圍 2.7V 到 3.6VSTM32L073RZ 同樣運(yùn)行在 3.3V所以直接共用電源域不需要電平轉(zhuǎn)換。供電電路在芯片 VCC 附近放一個(gè) 100nF 去耦電容電源入口再放一個(gè) 10μF 鉭電容或者陶瓷電容把紋波壓住。這里有個(gè)工業(yè)設(shè)計(jì)常見的坑如果系統(tǒng)里有繼電器、接觸器、電機(jī)這類感性負(fù)載母線電源跌落瞬間會(huì)直接砸到 MRAM 供電上。MRAM 本身沒有 Flash 那種內(nèi)部高壓泵對(duì)電源要求不算苛刻但 VCC 掉到欠壓閾值以下再恢復(fù)可能出現(xiàn)上電復(fù)位不完全的情況。穩(wěn)妥做法是給存儲(chǔ)芯片單獨(dú)加一個(gè)小 RC 濾波或者在 VCC 路徑串一個(gè)磁珠同時(shí)保證 MCU 的 BOR欠壓復(fù)位閾值高于存儲(chǔ)芯片的最低工作電壓讓 MCU 先復(fù)位存儲(chǔ)芯片不會(huì)處于不確定狀態(tài)。PCB 布局上SPI 信號(hào)線要短特別是 MISO 回傳線不要繞遠(yuǎn)。十幾MHz 的 SPI 信號(hào)在工業(yè)設(shè)備里不算高速但如果線走得很長(zhǎng)建議 SCK 上串聯(lián)一個(gè) 22Ω 電阻用于抑制振鈴。CS 線上我額外加了一個(gè) 1nF 電容到地防止上電瞬間毛刺誤觸發(fā)片選。實(shí)測(cè)下來這樣處理后即使旁邊有接觸器動(dòng)作也沒有出現(xiàn)過傳輸錯(cuò)誤。3.3 和 Flash 或 SD 卡共享 SPI 總線MR25H40CDF 是標(biāo)準(zhǔn) SPI 設(shè)備可以和 SPI NOR Flash、SD 卡共享同一路 SPI 總線只要片選分開即可。共享總線時(shí)唯一要注意的是不同芯片的最高 SPI 頻率可能不同。如果 Flash 只支持 50MHzMRAM 能跑 40MHz但你的 MCU 只能跑 16MHz那大家統(tǒng)一跑 16MHz 就行反而最省事。我在一個(gè)項(xiàng)目里同時(shí)掛了 W25Q64 和 MR25H40CDF代碼里給兩個(gè)設(shè)備分別封裝了 read/write 函數(shù)底層共用同一個(gè) SPI 句柄切換設(shè)備時(shí)先拉高當(dāng)前 CS再拉低目標(biāo) CS避免片選競(jìng)爭(zhēng)。還有一個(gè)細(xì)節(jié)如果 CS 拉高之后立刻拉低中間最好加幾個(gè)空指令周期延時(shí)。某些存儲(chǔ)芯片在 CS 拉高后需要 tHSL片選高電平最小時(shí)間才能進(jìn)入下一幀MR25H40 手冊(cè)里也有類似要求。我的驅(qū)動(dòng)里統(tǒng)一在每次片選翻轉(zhuǎn)之間加了一個(gè) 1μs 的延時(shí)成本幾乎為零但能避免很多邊界時(shí)序問題。4. 讀寫驅(qū)動(dòng)的完整實(shí)現(xiàn)SPI 時(shí)序與關(guān)鍵函數(shù)拆解4.1 SPI 外設(shè)初始化SPI 初始化先要確認(rèn)工作模式。MR25H40CDF 支持 SPI Mode 0CPOL0CPHA0和 Mode 3CPOL1CPHA1我統(tǒng)一用 Mode 0和大多數(shù) SPI 從設(shè)備一致也方便和其他外設(shè)復(fù)用。時(shí)鐘極性極性低、第一邊沿采樣MSB 先行8 位數(shù)據(jù)寬度。這是標(biāo)準(zhǔn)配置不用為 MRAM 做額外改動(dòng)。SPI_HandleTypeDef hspi1; void MRAM_SPI_Init(void) { hspi1.Instance SPI1; hspi1.Init.Mode SPI_MODE_MASTER; hspi1.Init.Direction SPI_DIRECTION_2LINES; hspi1.Init.DataSize SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity SPI_POLARITY_LOW; hspi1.Init.CLKPhase SPI_PHASE_1EDGE; hspi1.Init.NSS SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler SPI_BAUDRATEPRESCALER_2; hspi1.Init.FirstBit SPI_FIRSTBIT_MSB; HAL_SPI_Init(hspi1); }時(shí)鐘分頻系數(shù)取決于 APB 總線時(shí)鐘。STM32L073 的 SPI 外設(shè)雖然掛在 APB 上但分頻后實(shí)際 SPI 時(shí)鐘最好控制在 16MHz 以內(nèi)留出信號(hào)完整性余量。如果 PCB 走線短、環(huán)境噪聲小可以試著把分頻系數(shù)降下來跑滿如果現(xiàn)場(chǎng)有強(qiáng)干擾保守一點(diǎn)跑 8MHz 更穩(wěn)。4.2 寫使能與狀態(tài)輪詢寫數(shù)據(jù)之前必須先發(fā) WREN。這個(gè)邏輯和很多 SPI 存儲(chǔ)一樣每次寫序列前都要發(fā)送 0x06把芯片內(nèi)部寫使能鎖存置 1。之后才能執(zhí)行 WRITE 或 WRSR 指令。完整流程是CS 拉低發(fā) 0x06CS 拉高這是獨(dú)立的指令幀。void MRAM_WriteEnable(void) { uint8_t cmd 0x06; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 100); MRAM_CS_HIGH(); }狀態(tài)寄存器輪詢?cè)趯懭氪罅繑?shù)據(jù)時(shí)也要帶上。雖然 MRAM 寫入幾乎瞬間完成但嚴(yán)謹(jǐn)?shù)尿?qū)動(dòng)還是應(yīng)該在每次寫指令發(fā)出后讀取狀態(tài)寄存器直到 WIP 位清零。HAL 的阻塞傳輸函數(shù)實(shí)際上已經(jīng)包含了等待 SPI 空閑但這不等同于等待存儲(chǔ)芯片非忙兩者是不一樣的。void MRAM_WaitNotBusy(void) { uint8_t cmd 0x05; uint8_t sr 0x80; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 100); while (sr 0x01) { HAL_SPI_Receive(hspi1, sr, 1, 100); } MRAM_CS_HIGH(); }4.3 讀寫函數(shù)實(shí)現(xiàn)寫數(shù)據(jù)函數(shù)以 4 字節(jié)命令幀開頭指令 0x0224 位地址高字節(jié)、中字節(jié)、低字節(jié)隨后直接跟數(shù)據(jù)。連續(xù)寫任意字節(jié)不需要額外的頁編程結(jié)束命令CS 拉高就是結(jié)束。要注意地址高字節(jié)必須清零否則會(huì)覆蓋到其他地址空間。void MRAM_WriteBytes(uint32_t addr, uint8_t *buf, uint32_t len) { uint8_t header[4]; uint32_t i; MRAM_WriteEnable(); header[0] 0x02; header[1] (addr 16) 0xFF; header[2] (addr 8) 0xFF; header[3] addr 0xFF; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, header, 4, 1000); for (i 0; i len; i) { HAL_SPI_Transmit(hspi1, buf[i], 1, 1000); } MRAM_CS_HIGH(); MRAM_WaitNotBusy(); }讀數(shù)據(jù)函數(shù)同理指令 0x03 加 24 位地址然后連續(xù)接收數(shù)據(jù)。唯一要注意的是讀操作不會(huì)改變狀態(tài)寄存器的 WIP 位所以讀之前不用發(fā) WREN。void MRAM_ReadBytes(uint32_t addr, uint8_t *buf, uint32_t len) { uint8_t header[4]; header[0] 0x03; header[1] (addr 16) 0xFF; header[2] (addr 8) 0xFF; header[3] addr 0xFF; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, header, 4, 1000); HAL_SPI_Receive(hspi1, buf, len, 1000); MRAM_CS_HIGH(); }如果使用的是嵌入式 Linux 環(huán)境SPI 外設(shè)換成設(shè)備樹里的 spidev 節(jié)點(diǎn)設(shè)置 spi-max-frequency 和 spi-cpol、spi-cpha 屬性即可芯片側(cè)的讀寫時(shí)序完全一致上述邏輯可以直接翻譯成 ioctl 讀寫幀。4.4 驅(qū)動(dòng)層的一些小細(xì)節(jié)第一個(gè)細(xì)節(jié)不要依賴 HAL 的 HAL_SPI_TransmitReceive 連續(xù)收發(fā)同一個(gè)數(shù)組。MRAM 讀操作需要先發(fā)地址幀再收數(shù)據(jù)中間不要拉高 CS我上面的實(shí)現(xiàn)是先單獨(dú)發(fā) 4 字節(jié)再單獨(dú)收數(shù)據(jù)保持一致。HAL 的 Transmit 和 Receive 之間 CS 不能拉高否則芯片認(rèn)為這一幀結(jié)束了后面接收的全是無效數(shù)據(jù)。第二個(gè)細(xì)節(jié)MRAM 地址遞增到最高地址后回繞。如果連續(xù)寫長(zhǎng)度超過剩余地址空間后面的數(shù)據(jù)會(huì)寫到 0x00000。這不是錯(cuò)誤是芯片行為。工業(yè)日志存儲(chǔ)里如果一定要求不覆蓋要自己在驅(qū)動(dòng)層限制長(zhǎng)度判斷 addr len 是否超過 0x80000512KB。第三個(gè)細(xì)節(jié)MR25H40CDF 沒有壞塊概念不需要做壞塊管理。這一點(diǎn)和 NAND Flash 完全不同。驅(qū)動(dòng)層只要保證地址不越界、數(shù)據(jù)幀完整就不會(huì)出現(xiàn)“某塊地址寫不進(jìn)去”的問題。做文件系統(tǒng)也不是不行但沒必要我用裸地址加一個(gè)頭部結(jié)構(gòu)體做參數(shù)管理簡(jiǎn)單直接。5. 工業(yè)現(xiàn)場(chǎng)的可靠性設(shè)計(jì)掉電、數(shù)據(jù)一致性與低功耗配合5.1 掉電保存在斷電瞬間搶時(shí)間寫數(shù)據(jù)工業(yè)設(shè)備里最危險(xiǎn)的時(shí)刻就是掉電瞬間。PLC 或伺服驅(qū)動(dòng)器主回路斷電控制板還在慢慢放電留給 MCU 保存關(guān)鍵數(shù)據(jù)的時(shí)間窗口通常只有幾毫秒到幾十毫秒。這時(shí)候 Flash 的擦除機(jī)制就是災(zāi)難扇區(qū)擦除可能就要 50ms還沒等寫完電壓就掉沒了。MRAM 在掉電場(chǎng)景的優(yōu)勢(shì)是先天性的。寫入不需要擦除也不存在內(nèi)部編程狀態(tài)機(jī)SPI 發(fā)完數(shù)據(jù)數(shù)據(jù)就已經(jīng)在存儲(chǔ)陣列里了。我的掉電保護(hù)流程是這樣設(shè)計(jì)的配置 STM32L073 的 PVD可編程電壓檢測(cè)器閾值設(shè)在 2.9V。當(dāng) VDD 跌到 2.9V 以下觸發(fā) PVD 中斷。在 PVD 中斷服務(wù)函數(shù)里立刻保存關(guān)鍵運(yùn)行參數(shù)。因?yàn)?3.3V 供電掉到 2.9V 時(shí)還有足夠余量維持 MCU 運(yùn)行幾百微秒到幾毫秒這個(gè)窗口足夠把幾十字節(jié)參數(shù)寫完。寫完最后一條狀態(tài)后把“掉電標(biāo)志”置位然后等待復(fù)位或進(jìn)入停機(jī)。實(shí)測(cè)中我在 PVD 中斷里用 16MHz SPI 寫 64 字節(jié)參數(shù)加上 WREN、地址幀、狀態(tài)輪詢總耗時(shí)不到 100μs對(duì)電源余量來說毫無壓力。同樣的數(shù)據(jù)量如果用 SPI Flash光擦除就至少消耗 200ms還沒算寫入根本做不完。要注意的是 PVD 中斷服務(wù)函數(shù)里盡量不要調(diào)用 HAL_Delay 這類依賴 SysTick 的函數(shù)。掉電時(shí)主時(shí)鐘可能不穩(wěn)定實(shí)時(shí)性優(yōu)先直接用寄存器操作發(fā)送 SPI 數(shù)據(jù)更可靠。如果項(xiàng)目對(duì)響應(yīng)時(shí)間敏感可以做一個(gè)簡(jiǎn)單的宏讓 SPI 發(fā)送在中斷里快速執(zhí)行。5.2 數(shù)據(jù)一致性多份備份加 CRC掉電保存不等于數(shù)據(jù)一定不丟。雖然 MRAM 寫字節(jié)很可靠但如果你一次要寫多個(gè)字節(jié)的數(shù)據(jù)塊中途掉電可能導(dǎo)致這幀數(shù)據(jù)只寫了一半。這種情況在 EEPROM 和 Flash 上靠頁寫入和塊擦除也不能完全避免我的做法是雙備份加校驗(yàn)。參數(shù)區(qū)劃成兩份A 區(qū)和 B 區(qū)每份頭部存 16 位 CRC、數(shù)據(jù)長(zhǎng)度和遞增序號(hào)。寫入流程是先寫 A 區(qū)再寫 B 區(qū)每次比較兩個(gè)區(qū)域的序號(hào)序號(hào)大的認(rèn)為最新。當(dāng) A 區(qū)寫了一半掉電B 區(qū)還是完整的舊數(shù)據(jù)上電后能識(shí)別出 A 區(qū) CRC 校驗(yàn)失敗直接用 B 區(qū)。這個(gè)方案在 Flash 上會(huì)因?yàn)椴脸蛯懛糯笞兊卯惓?fù)雜但在 MRAM 上實(shí)現(xiàn)起來非常輕松。沒有塊擦除就沒有“擦一半掉電”的問題沒有頁寫限制數(shù)據(jù)塊大小隨便定義。我最終用了一個(gè) 512 字節(jié)的頭部結(jié)構(gòu)體存設(shè)備參數(shù)A/B 雙份加上 CRC32上電啟動(dòng)時(shí)校驗(yàn)一次最多浪費(fèi) 1KB 空間換來的是數(shù)據(jù)絕對(duì)可靠。5.3 低功耗模式的配合STM32L073RZ 是超低功耗 MCU很多項(xiàng)目要求休眠時(shí)整機(jī)電流做到微安級(jí)。MR25H40CDF 的工作電流和待機(jī)電流大概在毫安級(jí)比普通 SPI Flash 的微安待機(jī)高這一點(diǎn)必須在電源設(shè)計(jì)里處理否則整機(jī)休眠電流會(huì)超標(biāo)。我的建議是給 MRAM 加一個(gè)獨(dú)立的負(fù)載開關(guān)。用一個(gè) GPIO 控制 P-MOSFET 或負(fù)載開關(guān)芯片給 MRAM 供電系統(tǒng)進(jìn)入低功耗模式前先把 MRAM 的 CS 拉高、SPI 引腳拉成固定電平再關(guān)掉 MRAM 電源。喚醒后再上電重新初始化 SPI。MRAM 上電后數(shù)據(jù)仍然保留不需要額外恢復(fù)過程這一點(diǎn)也比 SRAM 加電池的方案省心。除非項(xiàng)目對(duì)休眠電流完全無所謂否則不要把 MRAM 直接接在常供電源上。工業(yè)設(shè)備上電后一直工作不在乎那幾毫安但電池供電的便攜儀表就是另一回事了。5.4 文件系統(tǒng)與日志存儲(chǔ)如果只是配置參數(shù)存儲(chǔ)裸地址管理就夠了。但如果要存歷史曲線、操作日志這類持續(xù)寫入的數(shù)據(jù)建議在 MRAM 上做一個(gè)簡(jiǎn)單的環(huán)形緩沖。因?yàn)椴恍枰脸h(huán)形緩沖的實(shí)現(xiàn)比 Flash 簡(jiǎn)單太多了寫指針從 0 增長(zhǎng)到末尾就回繞讀指針跟著走。MRAM 允許覆蓋寫任意地址不存在“塊擦除后寫入失敗”的問題。我在一個(gè)數(shù)據(jù)記錄項(xiàng)目里做了一個(gè)環(huán)形日志每條記錄 128 字節(jié)每 100ms 寫一條用 512KB 空間可以存 32K 條記錄也就是 53 分鐘的連續(xù)記錄。循環(huán)寫入完全靠地址取模沒有任何磨損均衡邏輯跑了一個(gè)星期沒有異常。如果換 Flash這種高頻度循環(huán)寫入早就把壽命耗光了。6. 實(shí)測(cè)記錄與調(diào)試踩坑幾個(gè)值得提前避開的細(xì)節(jié)6.1 HOLD 引腳懸空導(dǎo)致偶發(fā)通信失敗第一次焊接測(cè)試板時(shí)MRAM 的 HOLD 引腳沒接因?yàn)槲耶?dāng)時(shí)想“不用的引腳懸空就行”。結(jié)果板子跑起來之后連續(xù)讀寫幾百次之后偶爾一次讀回來全是舊數(shù)據(jù)。用邏輯分析儀抓 SPI 波形看到 CS 正常拉低、SCK 正常翻轉(zhuǎn)、MOSI 數(shù)據(jù)正常但 MISO 就是沒有響應(yīng)。最后查手冊(cè)確認(rèn)問題就是 HOLD 引腳懸空干擾把它拉低芯片把后續(xù)時(shí)鐘當(dāng)作暫停信號(hào)處理。定位過程持續(xù)了一個(gè)多小時(shí)其實(shí)一開始就應(yīng)該按手冊(cè)把 HOLD 接 VCC。這個(gè)教訓(xùn)值三百字給后來者提個(gè)醒MRAM 的 HOLD 引腳和 WP 引腳都不是普通 GPIOHOLD 必須接死WP 要么上拉到 VCC 要么接 GPIO絕不能懸空。6.2 SPI Mode 接反產(chǎn)生全 0xFF另一個(gè)低級(jí)但常見的錯(cuò)誤是 SPI Mode 配置反了。MR25H40CDF 支持 Mode 0 和 Mode 3但如果你配置成 Mode 2讀狀態(tài)寄存器會(huì)一直讀到 0xFF寫數(shù)據(jù)后回讀也全是 0xFF看起來像“芯片沒焊好”或者“片選沒拉低”。其實(shí)問題只是時(shí)鐘極性和相位不匹配而已。遇到這種癥狀先別懷疑芯片翻開手冊(cè)對(duì)照 CPOL/CPHA 和實(shí)際初始化代碼。我建議統(tǒng)一用 Mode 0也就是 CPOL0、CPHA0因?yàn)檫@是絕大多數(shù) SPI 從設(shè)備的默認(rèn)模式后續(xù)復(fù)用總線也更不容易出錯(cuò)。6.3 地址高字節(jié)沒清零導(dǎo)致寫入錯(cuò)位早期驅(qū)動(dòng)里我寫的地址幀是把 uint32_t 地址直接拆成三個(gè)字節(jié)沒有屏蔽高字節(jié)。結(jié)果地址 0x10000 寫入時(shí)高字節(jié)變成 0x01芯片把這個(gè) 24 位地址按 19 位有效位截?cái)嗪笥成涞搅说投说刂窋?shù)據(jù)存到了一個(gè)奇怪的位置回讀參數(shù)時(shí)總以為是存儲(chǔ)內(nèi)容被篡改了。后來在驅(qū)動(dòng)層加了一行header[1] (addr 16) 0xFF;把高 5 位強(qiáng)制清零問題立刻消失。這種低級(jí)錯(cuò)誤在調(diào)試時(shí)非常惡心因?yàn)榘Y狀很隨機(jī)你得反復(fù)對(duì)照地址映射才能發(fā)現(xiàn)。6.4 信號(hào)完整性長(zhǎng)走線和時(shí)鐘邊沿第三版 PCB 為了布線方便SPI 線繞了比較遠(yuǎn)MRAM 離 MCU 大概有 5cm。跑 16MHz 時(shí)示波器看 SCK 波形有振鈴MISO 數(shù)據(jù)在采樣點(diǎn)附近出現(xiàn)抖動(dòng)偶發(fā)讀錯(cuò)位。后來把 SPI 時(shí)鐘降到 8MHz同時(shí)在 TCP 焊接引腳附近的 MISO 線上加了一個(gè) 10pF 電容做濾波波形立刻干凈了。如果項(xiàng)目對(duì)寫速度沒有極致要求16MHz 和 8MHz 的差異基本無感。工業(yè)設(shè)備里穩(wěn)定比速度快重要得多我現(xiàn)在的習(xí)慣是SPI NOR Flash 能跑多快跑多快MRAM 統(tǒng)一保守用 8MHz因?yàn)樗膬?yōu)勢(shì)本來就不在極限速度而在字節(jié)寫能力、壽命和掉電可靠性。6.5 上電時(shí)序不要和 MCU 同時(shí)復(fù)讀還有一個(gè)比較少人提的坑MRAM 和 MCU 共用一個(gè)電源時(shí)如果上電過程 VCC 斜率太慢MRAM 可能進(jìn)入不確定狀態(tài)首次讀數(shù)據(jù)會(huì)讀到隨機(jī)值。這不是數(shù)據(jù)丟是芯片還沒準(zhǔn)備好。解法是在驅(qū)動(dòng)初始化時(shí)做一個(gè)“偽讀操作”上電后延時(shí)至少 1ms發(fā)一次 0x03 讀地址 0x00000 的數(shù)據(jù)丟棄結(jié)果然后再正常讀寫。我甚至在正式讀關(guān)鍵參數(shù)前加了一個(gè)簡(jiǎn)單的自檢流程寫一個(gè) magic 字節(jié)到固定地址回讀對(duì)比再寫回原值。MRAM 沒有磨損顧慮這種自檢可以隨便做對(duì)排查上電時(shí)序問題特別有用。最后的實(shí)際體會(huì)做完整套系統(tǒng)之后我的感受是MR25H40CDF 和 STM32L073RZ 的組合最舒服的不是某個(gè)單一指標(biāo)而是它把存儲(chǔ)這件事徹底簡(jiǎn)化了。我可以像操作 RAM 一樣操作非易失數(shù)據(jù)不需要關(guān)心擦除、不需要關(guān)心壽命、不需要擔(dān)心寫一半掉電丟數(shù)據(jù)。后面再讓我接手需要頻繁寫參數(shù)的工業(yè)項(xiàng)目我大概率會(huì)直接沿用這套方案。最后再分享一個(gè)可執(zhí)行的小技巧新板子到手后先不用寫復(fù)雜業(yè)務(wù)邏輯就寫一個(gè)循環(huán)隨機(jī)地址寫隨機(jī)長(zhǎng)度數(shù)據(jù)再回讀比對(duì)跑上三五萬次能快速暴露硬件焊接、SPI 時(shí)區(qū)和引腳配置的所有問題。比直接調(diào)應(yīng)用代碼省心得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97干网站| 日韩另类在线观看| 色五月激情五月天| 婷婷成人丁香色情基地30| 成人精品免费在线观看| 久久女婷| 色色婷婷五月天| 五月丁六月婷| 色色亚洲无码| 色啪网| 91久久久久久久久久18| 五月天色综合| 色婷婷欧美| 人妻操操色| 大香蕉五月| 国产精产国品一二三在观看| 五月丁香在线观看| PORNY九色9l自拍视频成人| 天天人人天天爽| 久婷婷五月天影院| 黄页免费一级视频懂色| 五月天婷a在线| 五月婷网| 97久久久| 高清无码入口| 26uuu成人网| 亚洲热综合| 狠狠干激情五月| 五月天久久久| 免费操超碰| www.五月婷婷| 色大综合| 色婷婷五月影视| 亚卅毛片| 日本五月丁香| 色婷婷五月天中文字幕| 涩综合婷婷| 毛片新网地| 91热er| 在线观看日韩12345区| 玖玖在线视| 久久金品黃色| 婷婷五月天AV在线| 五月丁香777| 久久婷婷色色| 狠狠插狠狠插| 九九九激情综合| 五月天啪啪| 9久久久久久久久久久| 六月综合在线| 97干在线视频| 免费无码毛片一区二区A片| 五月天婷婷无码| 99九九热在线观看| 国产精品久久欧美久久一区| 九九色插| 丁香蜜臀黄色婷婷五月天| 丁香青青五月天| 超碰色热| 9l视频自拍9l视频自拍九色学生| 嫩草AV久久伊人妇女超级A| 婷婷成人五月天成人文学| 六月婷婷无码| 激情婷婷丁香色情五月天| 深爱激情九九五月天| 五月激情综合五月| 99r久久这里只有精品| 激情综合婷婷久久| a在线免费v| 日本乱论99| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 婷婷五月天av| 91婷婷视频| 色综合9| 91干网| 久久综合播放| 激情com| 5月婷婷六月丁香| 婷婷五月天99| 婷婷久久99| 日韩啪啪视频| 亚洲不卡123| 97资源欧美日韩大香蕉超碰一区| 99免费视频精品| 久久综合激情婷婷激情| 六月婷婷综合| 99男人天堂| 激情五月丁香婷婷夜夜操| 夜夜天天天天天干天天爽| 丁香六月成人| AA片在线观看视频在线播放| 综合色五月天| 婷婷无码五月天| 一区二区成人电影| 色护士综合| AV在线中文| 九九在线免费观看| 九九无码| 99久久久免费| 人妻性爱av网站| 97成人超碰免| 99色在线观看| 天天插天天插| 久草A片| 午夜九九电影| 亚洲激情五月天| 婷婷影院A成人| 人人插9| 人妻久久久久久久久妻久久久久久久久| 丁香五月人妻| 婷婷五月天色综合翘| 五月婷婷在线播放| 久久久全国免费视频| 精品在线网站| 日韩久热| 色欲九区| 久久色五月| 610018岁成人视频| 玖玖色资源站| www.婷婷六月天| 色射7856五月天激情四射| 爱爱色五月天| 久热无码| 很很操96| 久久五月天婷婷| 日本高清久| 九九热手机在线视频| 91啪啪| 婷婷丁香五月天色色| 婷婷五月天渟渟| 激情综合国产| 九九九九综合| 97色啪| 五月婷婷九| 亚洲色婷婷| www激情网站| 欧美激情五月天| 五月丁香啪综合| 婷婷丁香五月综合激情小说| 日韩AV在线免费| 深爱激情四射| 99综合| 日本三级片片| www.婷婷六月天| 久久久精品99| 婷婷五月色色| 99热e| 五月婷婷激情网| 伊人激情综合| 在线观看亚洲AV| 色婷婷AⅤ| 婷婷五月六月丁香综合| 婷婷久久婷婷色五月| 亚洲 无码 中文字幕 中出| 久色网| 久久xx| 美女网黄| 欧美性猛交99久久久久99按摩| 丁香五月网站| 天天日天天肏天天奸| 狠狠999| 小香蕉av| 思思久久精品| 九九热只有这里精品| 五月天婷婷影院| 五月丁香久久综合| A片天天| 久久久久久综合五月婷婷| 怡红院院在线导航网| 一区视频网站| 青草性爱视频| 99九九免费精品| 天天天天操| 丁香玖玖| 99热91| 色五月婷婷丁香国产在线| 五月丁香色色网| 五月天综合缴情网网站0| 精品人妻伦九区久久AAA片| 五月色情网| 思思9久久| 丁香六月亭亭久久综合| 九色七七| 欧美69久成人做爰视频| 五月天婷婷激情网| 五月丁香中文字幕| 亚洲爱婷婷| 99噜噜噜在线播放| 二区成人视频| 九九热免费视频| 99精品久久久久久久婷婷久久| 久草五月丁香婷婷综合| 亚洲无码另类| 五月天色婷婷成人| 婷婷激情小说网| 国产又爽又猛又粗的视频A片| 五月婷婷自拍视频| 狠狠色丁香五月婷巨| 99精品视频免费观看近期发布| 综合色色色色色色| 26uuu淫色| 九九色插| 欧美成人精品A片免费一区99 | 九九热视频这里只有精品| 图片区 小说区 区 亚洲五月 | 任你艹| 玩熟女五十AV一二三区| 综合色情网| 678五月丁香亚洲综合| 99超碰欧美| 激情六月天婷婷| 婷婷五月欧美综合| 久久激情网| 天天日色情| 国产美女主播vip| 欧美大肥婆大肥BBBBB| 久久综合影院| 国产激情久久久| 大香蕉婷婷| 99热久草| 色情五月丁香婷婷网| 操老逼综合网| 综合激情视频| 婷婷成年人免费视频| 成片免费播放| 色婷大香蕉| 欧美色色色色色| 天天爱天天做天天舔| 色99久草在线| 婷婷久久综合久| 99在线精品免费视频| 99自拍视频在线| 久9久视频精品| 日本超碰在线| 五月天婷婷在线播放| jiujiu热在线视频| 香蕉视频91| 综合五月天亚洲婷婷| 大香蕉婷婷婷| 亚洲乱码日产精品BD| 无码色| 五月激情五月丁香| 另类A片| 久久看九九90| 国自产拍偷拍精品啪啪一区二区| 色综合网址| 玖玖资源天天无码| 色五月婷婷丁香国产在线| 91在线操| 九 九九九AV| 久色激情| 色五月天成人| 天天操天天操天天操| wWW九九在线播放| 噼里啪啦完整版中文在线观看 | 丁香 亚洲 久久| 九九综合| 色色丁香| 大香蕉啪啪| 五月天激情无码| 色综久久AV| 大香蕉狠狠爱主页| 拍色综合| 开心色色五月天综合| 91丨九色丨熟女丰满| 久久狠狠色| 丁香五月婷婷激情四射| 91丨九色丨国产在线| 俺五月| 超碰不卡在线| www91色网站| 五月天大香蕉| 狠狠操狠狠操AV| 婷婷五月天综合在线 | 丁香六月成人网| 免费啪啪亚州视频| 婷婷六月色情| 丁香五月www| 久草热8精品视频在线观看 | 97日本操| 91se视频| 亚洲综合色网| 五月婷婷婷| 国产综合婷婷| 五月丁香婷婷色色色| 婷婷五月天在线综合| 色欲五月天| 日本人妻丁香婷婷久久寝取熟女五月| 九月丁香婷婷| 在线五月婷婷小电影| 色五月色图| 激情五月天色色色| 金品在线视频99| 888久久久| 国产一级黄色影片,| 午夜69成人做爰视频| 久久怕怕视频| 婷婷啪啪| 综合色色五月| 日韩三十六页| 岛国资源站| www激情婷婷com| 天天干天天 亚洲| 蜜桃婷婷五月| 丁香六月成人网| 久久婷婷六月| 婷婷五月天激情综合婷婷五月天激情综合| 色爱综合视频| 成年人99热| 婷婷色日本| 色人妻五月| 丁香五月开心婷婷| 亚洲这里只有精品| 色婷婷AAA| 一本久道综合色婷婷五月| 天天肏在线观看| 九九热99热| 色99色| 99热地址| 五月桃花网综合| 91夫妻网站九色| 亚洲在线网站| 丁香五月综合激情啪啪| 婷婷色在线| 激情综合五月激情17| 亚洲 日韩色色| 欧美噜一噜| 欧美婷婷五月天| 婷婷欧美| 激情五月天网站| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 色VA| 激情婷婷综合五月少妇| 激情婷婷在线中文字幕| site:xmssd.com| 天天婷婷天天| 成人va视频| 99热精品在线| 亚洲狠狠色丁香婷婷综合久久| 综合久久五| 日韩成人AV在线| 婷婷激情五月吧| 乱岳熟女50岁| 热久久婷婷| 97色婷婷在线观看| 五月婷婷香蕉| 久久五月天综合| 99热综合网| 人妻熟人中文字幕一区二区 | 99操逼| 蜜臀av粉嫩av懂色av| 深爱激情综合网| 国产精产国品一二三在观看 | 久婷| 亚洲另类噜噜| 亚洲综合激情五月久久| av五月天婷婷丁香| 丁香五月亚洲AV| 国产精品A片| 欧美性爱一区| 伊人久久婷婷五月综合97色| 91婷婷丁香| 2020久久婷婷五月| 91色五月| 亚洲婷婷丁香五月| 五月丁香在线视频观看| 99热色精品| www色色com| www综合久久| 99,色| 夜夜夜夜夜操| 国产乱子轮XXX农村| 色婷婷久久综| 丁香五月欧美激情| 女婷久久| 激情五月婷婷色色| 5月色婷婷| 久久思思热| 最近中文字幕大全免费版在线| www综合久久| 国产午夜精品一区二区三区四区| 欧美婷婷丁香五月| 66精品成人免费网站在线观看| 婷婷五月天激情网| 九色地址91视频| 99er免费在线观看| 五月天大香蕉| 日本一级| 激情五月综合婷婷| 99九九99九九九视频精品| 99热这里在线精品| 91久久综合亚洲鲁鲁五月天| 色五月婷婷AV| 人人射人人高潮| 国产欧美精品AAAAAA片| 99er这里只有精品视频| 九月婷婷久久久| 在线观看亚洲AV| 91大屁股| 性生生活大片又黄又| 成人丁香五月| 五月婷婷久久久| 99内射视频| 天堂AV在线看| 一级片操逼视频| 天天日天天干天天爱| 五月婷婷激情| 7777激情基地| 91 九色 熟女| 欧美日韩99| 激情综合五月婷婷| 欧美婷婷精品激| se99视频| Caoporn公开| 人人看人人要| 久久人妻超碰一区| www.99热. com这里只有精品| 国产偷人爽久久久久久老妇APP | 99色综合| 婷婷伊人| 91狠狠色丁香婷婷综合久久精品| 婷婷丁香77777| 天天射综合网站| 九月婷婷激情| 五月丁香综合啪啪| 国产无套精品一区二区| 深爱开心五月天| www.夜夜操.com| 亚洲AV成人在线| 久久三级视频| 久久er免费视频| 色五月天丁香| 77799热| 99爱爱| 天天五月香欧美| 99色天堂| 天天上天天爽| 久久R激情| 天天干、天天日日| 天天艹| 色色色色色网| 婷婷五月69| 爱射综合| 伊人午夜综合色啪| 精品99在线观看| 天天爽综合| 五月天丁香综合久久国产| 美女视频图片久久91| A网在线欧洲| 亚洲韩国日产综合AV| 五月草视频| 综合玖玖偷拍| 五月婷婷在线视频观看| 亚洲色五月| 精品人妻伦九区久久AAA片| 激情综合网,婷婷五月天| 中文字幕视频色婷婷| 思思久久青草热| 精品久久婷婷| 国产精品18久久久| 最新丁香六月婷婷| www.99热| 五月婷婷影视| 婷婷色综合| 婷婷六月综合在线| AV免费在线网站| 97视频久久| 丁香五月激情综合在线观看| 婷婷五月天干干| 婷婷丁香五月色偷偷| 人人摸人人搞| 五月丁香花婷婷玉莉AV| 91狠狠色丁香婷婷综合久久精品| 婷婷五月综合国产精品| 99精品久久久久| 99这里是99在线视频| 天天色中文字幕女优AV| 日本三级大片| 毛片色五月| 日韩九九视频| 亚洲视频1区| 天天弄天天操| 99热这里只有精品免费| 《战争与艾拉》完整版| 婷婷五月激情五月丁香五月| 国产99热| 久久精典| 99热这里只有精品18| 亚洲综合五月天婷婷丁香| 99热这里有精品| 96精品久久久久久久久| 欧美狠狠地| www.99色| 丁香五月激情综合婷综| 婷婷99视频精品| 国产精品A片| 亚洲精品亚洲人成人网| 影音先锋综合网| 99婷婷| 欧美大香蕉视频| 色五月婷婷视频| 婷婷成人综合| 色婷九九九| 97caop| 丁香激情网| 婷婷五月丁香六月天亚洲综合| 狠狠色综合网| 爆乳熟女一区二区三区爆乳| 九九久久9 9在线观看| 26uuu亚洲| 五月婷婷开心六月激情小说| 婷婷色色狠狠| 亚洲综合99| 嫩草视频观看| 国产色色小草视频| 久久色大香蕉| 俺也去色| 中文字幕人妻熟女在线| 天天噜噜| 玖玖热视频| 五月天婷婷成人网| 噜噜国产| 丁香六月激情国产| 丁香 婷婷 亚洲 熟女| 激情精品久久| 欧洲亚洲免费视频9 | 99热在线观看精品| 人人添人人| 亚洲这里只有精品| 久9视频| 五月婷婷婷自由综合| 99综合成人视频在线观看| 五月婷婷大香蕉| 大天天伊人| 六月丁香五月婷婷| 99热只有| 人人播| 丁香五月婷婷激情中文| 国产精品久久久久久五月天加勒比| 日本婷婷网| 色九月| 九色婷婷| 中文字幕永久在线| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 99视频这里有精品| 婷婷八月丁香激情综合| 婷婷五月天六月丁香| 人妻内射视频| 99精品无码| 丁香五月天无码AV| 成人综合网站| 三级三久久线久久99久目本WW| 色色色激情网| 五月视频日本免费观看| 新久久五月天激情| 99 频99热国里只有精品| 狠狠大香婷婷爱| 五月婷婷狠狠干| 99riAV国产精品视频| 色私五月婷婷| 99九九久久| 日韩欧美五月丁综合| wwW天天干| 五月 丁香 欧美| 99综合99| 色五月婷婷小说亚洲中文字幕组| 丁香五月影视| 亚洲综合五月天| 成人做爰A片免费看视频| 大战熟女丰满人妻AV| 91色综合网站在线| 久久视频婷婷| 婷婷五月天成人导航| www.狠狠操.co m| 99人人操人人摸| 这里只有精品2| 天天做天天爽| 伊人五月天在线| 粉嫩AV久久一区二区三区| 熟女强人妻一区二区三区四区无| 日韩久操婷婷| 久久久18| 一起草无码视频| 丁香五月久久综合| 婷丁香五月天| 六月婷婷五月丁香| 爱爱网址9| 九九人人看| 九九亚洲视频| 色综色五月天婷婷| 婷婷社区五月天| 色五月激情五月| 丁香五月天大香蕉啪啪| 二级黄色毛片| 午夜理论片最新午夜理论剧| 色五月综合网| 亚洲免费观看高清完整版AV线| 99精品视频网站| 天天日天天肏天天奸| 操碰久| 丁香六月色婷婷欧美| 五月天激情综合10p| 激情 婷婷| 八戒青柠影视剧在线观看 | 最近中文字幕大全免费版在线 | 国产一区18| 五月色色网| 色婷婷婷av| 成人性爱无码| 99热超碰在线| 91九色国产熟女| 天天做天天双| 五月丁香无码| 丁香五月激情五月| 色五月丁香总合网| 激情网五月| 99无码| 涩涩婷婷五月| 五月婷婷深爱六月| 99热这里只有精品青草| 99热在线极品极品| 人人爱干人人爱草| 色玖玖综合| 亚洲成人AV高清字幕| 久婷| 久久久久人妻精品| 99自拍视频在线| 亚洲无aV在线中文字幕| 日日射天天射| 欧美激情综合色综合啪啪五月| 中文字幕av网站| 99re这里只有精品免费| 天天综合在线网| 婷婷成人在线| 夜夜骑天天玩天天日| 综合五月天| 大香蕉久久久久| 丁香五月婷老师| 日日影院 | 五月天社区| 99热亚洲精品| 久久大香免费| 这里只有精品9| 色噜噜狠狠色综合日日| 久久久久久久久久8888| 女人被男人吃奶到高潮| 激情五月瑟瑟| 亭亭五月天黑人2014| 久久草大香蕉| 色婷婷五月天av在线| 久久久.COM| 婷婷在线日韩综合| 99色色最新视频| 六月激情婷婷| 色六月婷婷| 色色A| 丁香影院五月综合| 久久人妻在线| 激情色五月天| 五月网网站| 色婷婷丁香女女| 狠狠色丁香婷婷综合久久97AV| 91色久| 精品视频这里只有精品| 99这里有精品| 婷婷久久五月| EEUSS鲁片一区二区三区| 五月天婷婷色五月天| 九九aV| 日韩免费乱轮网站| 色欲Av五月天| 久久99国产综合精品免费| 99在线视频免费| 99视频内射三四| www.天天干.com| 丁香六月婷婷久久综合| 人人色人人摸人人看| 夜夜操狠狠操| 狠狠狠狠狠狠狠狠草| 无码少妇高潮喷水A片免费| 五月婷婷成人w| 色情五月婷婷| 性色欲情 网站| 国产67194| 2025最新亚洲激情在线| 亚洲综合网在线| 伊人五月天男人的天堂在线| 伊人婷婷五月天| 99热热这里只精品996小说| 丝袜激情网| 九九精品99| 99热这里有精品| 五月丁香六月婷婷亚洲激情综合| 五月激情综合网婷婷| 草逼大片| 亚洲人妻Av| 婷香五月激情视频| 狠狠色激情综合| 超级碰碰一区| 九九色色网| 久久久色婷婷五月天| 亚洲 在线 另类| 性爱视频久久| 色婷婷六月性 | 狠狠色丁香| 97操在线| http:色情日本com| 九九热在线观看视频| 婷婷亚洲五| 成人国产欧美大片一区| 五月综合色| 九九热亚洲中文在线观看免费| 伊人在线视频| 少妇人妻人伦A片| 欧美成性色| 亚洲AV日韩在线观看| 中文AV在线观看| 99热永久在线观看| 欧美日韩国产成人在线| 色综合久| 操你av| 亚洲综合在线播放| 国产乱人偷精品人妻A片| 亚洲人妻一区二区 | 色蜜婷婷| 欧美色五月| 成人丁香五月天| WWW,激情五月天,COM| 久久月天堂| 色噜噜狠狠一区二区三区| 亚洲99在线视频| 亚洲AV综合网| 日本色99网站| 99免费| 人人操人人爱丁香五月| 婷婷五月激情综合| 日韩啪图| www.久久爱.com| 日韩按摩二区| 激情综合网五月婷婷| 伊人大香蕉爱聚| 99天堂网| 色久女| 亚洲va在线| 国产伦理精品高清在线观看网站一区二区 | 五月婷人妻| 丁香五月激情啪| Www.Av网9| 久久综合九九| 天天肏视频| 五月天另类小说| 激情小说五月天中文字幕| 超碰二区| 69精品无码一区二区三区| 亚洲国产无线乱码在线观看| 亚洲婷婷91丁香| 五月在在观看| 日韩色色色99| 五月丁香六月婷婷啪啪| 日韩在线看AV| 三男玩一女三A片| 久久久久婷婷| 婷婷五月色色| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 色偷偷狠狠| 激情五月丁香综合蜜桃| 超碰99久久| www激情网站| 欧美色必爱| 操老逼综合网| 日韩av变天就操逼不卡区| 久久激情网| 激情丁香五月天| 色 五月俺去也| 亭亭五月丁香综合欧美| 国产综合色婷婷精品久久| 国产成人AV不卡| 久久er99热精品一区二区| 六月婷婷中文字幕| 九色PORNY9l原创自拍| 婷婷色综合av| 五月丁香激情综合| 久久激情五月婷婷| 操骚货在线| 亚洲色爱综合| 黄色激情五月天| 五月婷婷开心综合| 午夜丁香五月天综合| 国际国外精品欧洲南美洲专区无码不卡| 五月深爱婷婷| 欧洲日韩一区二区三区| VA国产在线综合网站| 天天插天天玩天天干| 丁香五月婷婷激情网| 色三级色三级| 99视频色在线观看| 久热视频A.| 大香蕉精品视频| 色婷操逼| 色婷婷导航| 九九99免费视频| 光棍影院日韩精品| 99日本黄站| 狠狠色综合网| 色久婷婷网| 青草久久五月婷伊人| 天天综合图片| 天天摸天天日天天舔| 日本成人噜噜| 五月色综合网| 日韩黄黄| 五月天伊人| 乱精品一区字幕二区| 久操香蕉| 丁香六月激情毛片| 婷婷情色五月天| 99色视| 亚洲无码成人性爰网| 99色在线观看| 97色色色| 热99在线| 韩国中文字幕91| 丁香五月婷婷少妇| 在线观看免费狠狠色丁香香综合| 亚洲精品乱码久久久久久按摩观| 色五月开心五月激情五月| 色五月开心开心五月激情五月| 五月天 另类图片| 九月色婷婷综合| 五月婷婷香| 激情五月丁香五月综合| 婷婷性爱视频在线| 五月丁香六月在线欧美| 色婷五月天网站| 亚洲天天| 玖玖综合色| 99热99极品观看| 欧美色色色色色色色| 色色色五月婷| 日韩aaaaa| 婷婷五月综合丁香久久| 操人久久| 久99久在线观看| 婷婷久久五月| 婷婷瑟瑟五月天| 六月色播| 丁香五月av| 婷婷色资源| www婷婷| 深爱丁香激情| 天天五月天综合网址| 99福利导航| WWW久久久| 九九色情网站| 丁香五月九九| www.色婷婷。com| 99热天堂| 在线成人va| 色噜噜综合网| 99热这里只有精品国产首页| 99热精品在线观看| 超碰在线个人观看| 99久久精彩视频。| 精品成人无码A片观看香草视频| 久久激情天堂| 日韩丁香涩| 国产欧美日韩综合精品一区二区| 欧美日韩999| 婷婷五月丁香五月丁香| 99热在线这里| 天天日日夜夜| 99玖玖人人| 亚洲婷婷丁香五月视频| 五月丁香六月婷婷欧美综合| 激情小说五月天| 亚洲情色一区| 天天色色天天| 琪琪色网在线| 五月网激情| 久操97| 综合久久激情久久| 婷婷五月激情四月综合 | 久9视频免费播放| 亚洲视频a| 色婷婷激情| 天天激情站| 精a品a视a频| 天天做天天爽| 99色| 色婷婷先锋| 久久免费干| 白人荫道BBWBBB大荫道| 五月天婷综合| 另类五月激情| 98国产精品综合一区二区三区| 欧美熟女99| 开心五月婷| 六月色色| 久久亚洲A| 婷婷五月香蕉| 日亚二欧美| 色综合开心五月深爱五月| 五月激情六月综合| 激情久久久久久久久久久| 五月天亚洲色| 99re视频在线精品| 一本伊人色婷| 三十熟女| 另类小说五月天综合| 日日夜夜干| 91狠狠色丁香婷婷综合久久精品| 综合婷婷五月丁香在线观看| 五月天福利影院导航| www.激情.com.| 日本综合久久| 日韩精品999| 夜夜大香蕉婷婷丁香| 国产肏屄大片| 婷婷午夜综合| 99精品在线观看视频| 五月丁香激情在线| 99久久超级| www.夜夜騎夜夜狠| 久久久久久久久月丁| 伊人狠狠综合| 久久五月婷6 9| 狠狠狠狠狠操| 色五月丁香com| 亚洲成人网址在线观看| 亚洲va综合va国产va中文| 日日干天天| 中文字幕av亚洲| 能直接看的av网站| 亚洲激情五月| www.日本91| 一二区成人电影| 色九九九九| 欧美大香蕉视频| 婷婷激情性爱| 日本怕怕视频| 97精品综合| 激情五月天在线| 精品香蕉99久久久久网站| 五月丁香六月综合情在线观看| 99色综合| 中文aV网| 日本大逼91| 天天综合精品| 色色爽爽天天| 婷婷网五月天| 婷婷5月开心6月| 99热在线播放精品| 五月丁香成人网| 综合久久五月天| 啪啪激情网| 欧美丁香婷婷天天操| 久草热久草在线视频| 色色婷婷综合网| 日本操B视频| 亭亭五月色男人| 丁香五月熟女| 99精品在线观看视频| 综合亚洲六月婷婷在线| 99无码视频| 婷婷六月婷婷| 99re久热| 婷婷中文在线| 天天操夜夜玩!| 色五月中文字幕| 9久久精品| 色综合久久88色综合天天人守婷| AV片在线观看| 亚洲区视频| 人人综合五月人人婷婷| 激情熟女网| 亚洲丁香花色| 色婷婷五月天视频在线| 色域五月婷婷丁香| WWW嗯嗯啊啊啊啊| 99热97| 婷婷五六月丁香| 国产成人精品一区二三区熟女在线| 五月丁香啪啪激情| 一区三区视频有限公司| 九九色精品| 国产偷人妻精品一区| 国产成人网址| 97人人干。| 热99在线| 九九热经典视频在线观看| 97色干| 丁香五月激情综合久久| 色色色色色色网| 激情五月天色婷婷| 色色日韩| 91刘玥视频在线观看| 站长推荐无码播放| 偷拍视频五月天| 99操中文视频| av在线观看网址| 中文字幕在线观看视频www| 99在线精品在线视频| 26UUU一区二区| se色婷婷视频| 91久热| 婷五月天| 超PEN精品在线| 一区二区三区视频| av操一操| 99热视| 超碰在线个人观看| 五月天激情小说| 99久超碰| 狠狠五月综合在线| 婷婷欧美色| 日韩精品超碰在线观看| 日韩成人中文| 操91| 亚洲成人av在线| 九九视频在线免费视频| 狠狠舔| 99亚洲精美视频在线观看| 丁香五月大香蕉在线99| 六月色婷婷| 日韩啪啪视频| 欧美婷婷综合| 婷婷五月18永久免费视频| 夜夜骑操AV| 激情久久五月天| 中文在线视频久9| 久久女婷| 六月丁香av| 天天干天天操天天爽| 99视频在线观看视频| 亚洲热手机在线观看| 日韩AV中文字幕在线| 丁香久久在线| 无码日本精品XXXXXXXXX | 91中文在线| 殴美综合激情五月天免费视频| 就爱啪啪婷婷| 欧美激情五月天婷婷| 99热99ai| 亚洲天堂99| 亚洲av成人在线| 色99无码| 成人在线免费网址| 午夜成人av在线| 97精品人人A片免费看| 97超碰在线免费观看| 日韩精品一区二区亚洲AV观看| 丁香五月激情五月| 五月丁香啪啪啪| 日日夜夜天天综合| 99精品自拍| 538在线精品| 亚州色综合| 91人人妻人人操人人爽| 91碰碰碰| 色婷婷基地 | 99色综合| 免费观看全黄做爰的视频| 超碰在线人妻| 久热99| 亚洲成人免费电影| 99精品国产热久久91色欲| 一区二区免费看| 五月丁香婷婷成人网| 亚洲色婷婷视频| 狠狠色噜噜狠狠| 男人综合网| 久热中文字幕在线线观看 | 婷婷亚洲在线| 亚洲人妻av伦理| 久久人人超| www.婷婷五月| 内射综合网| 99久久久久| 九九无码| 9999久久久久| 色色婷婷丁香| 久久精品99国产精品日本| 日韩一本操| 色综合久久8| 色婷亚洲| 91超碰在线播放| 3pAV| 国产午夜精品一区二区三区四区| 综合图区激情| 五月天精品视频| 色婷婷亚洲五月天| 婷婷丁香五另类网站| 五月天激情婷婷| 狠狠做六月爱婷婷综合aⅴ| 丁香六月色婷婷| 婷婷5月色| 亚洲综合丁香婷婷六月天| 五月婷综合网| 激情五月丁香五月| 日韩爱操视频| 久久99网| 性婷婷| 久操大屁股女人av| 蜜桃婷婷丁香五月天狠狠久久综合| sewuyue第四色| 久久开心五月婷婷| 日日噜噜夜夜狠狠久久丁香五月| 狠狠爱激情网| 六月激情婷婷| 国产女人十八水真多1| 色吊丝永久访问网址| 激情五月天婷婷图| 婷婷开心综合人妻小说网址| 亚洲射激情| 色屌丝中文字幕| 久9热| 蜜臀av 粉嫩av 懂色av| 丁香婷婷六月天| 五月丁香亭亭成人电影| 国产精品香蕉| 色丁香婷婷| 婷婷最新地址| 人人人操| 亚洲中文乱字字幕线在永久| 天天干天天干天天干| www.91久久| 超碰在线资源| 视频综合网| 天天综合网亚洲网站| 久久久久er热| 五月色亭丁香| 69精品人人人人| 婷婷射婷婷舔| 亚洲婷婷五月草久| 26uuu亚洲精品国产| 激情五月久久| 婷婷综合伊人| 激情婷婷五月亚洲| 99视频精品在线| 欧美人与性动交CCOO| 波多野结衣不卡AV| 九九日本视频| 丁香五月,激情五月,深爱五月| 色九九综合| 五月天婷婷涩涩| 99rewww| 99九九视频精彩在线| 刘玥av在线| 99操99| 综合色色色| 五月婷婷影视| 婷婷丁香人妻天久久| 亚洲第一精品成人999久久精品| 国产成人亚洲综合A∨婷婷| 久久伊人婷| 五月天婷婷六月| 五月天大香蕉| 免费超碰在线| 丁香五月婷婷激情123| 另类激情五月在线视频欧美| 五月婷婷六月激情| 26uuu国自产精品| 丁香五月激情五月| 97超级碰| 色插综合网| 色狠狠综合| 91视频精品99| 五月婷婷六月丁香色| 欧美三级巜人妻互换| 色10月婷婷视频| 丁香五月激情婷婷| 99精品视频在线观看| 婷婷导航| www.婷婷五月天| 色综合色综合色综合| 丁香久久五月天视频在线观看| 丁香五月AV| 色婷婷中文在线| 色婷婷六月| 国产色色色色色| Jh7Uf088VHafNm| 丁香五月激情五月| 亚洲成人网无码| 五月婷婷激情日本| 色色影院黄大片| 日韩无码色色| 麻豆AV一区二区三区| 蜜臀av无码久久久久久久久| 九月婷婷久久久| 日本久热| 丁香色成人| 99日精品视频| 激情五月天激情综合网| 91人久| 久久婷婷一级片| 粉嫩AV久久一区二区三区| 国产色色在线| 99操逼| 91超级碰碰| 婷婷亚洲综合| 超碰人人艹| 欧美日韩99| 二色AV| 六月天丁婷婷| 五月天开心网| 成人av播放| 久久视频婷婷视频| 99热久| 可以看的av网站| 99在线观看视频免费| 99热地址| aaaaaa片| 国产精品99久久久久久久女警| 婷婷色啪| 夜夜干天天操| 综合激情在线观看| 丁香五月天婷婷中文字幕| 九九综合88| 九艹在线| 婷婷精品免费久久| 久久五月丁香| 日本本土色网第一区| 丰满女老板BD高清A片| 激情黄色小说五月天| 久久婷婷免费| 天天色天天日| 欧美三级黄色片久久| 丁香五月播播| 99热综合网| 久99热| 天天射影视综合网| 熟妇高潮一区av| 久久精彩视频| 色婷婷免费观看| 丁香五月成人| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | www.爱操com.| 丁香六月天婷婷色| 激情六月日韩| 玖玖婷婷综合| 国产激情综合五月久久| 色九月婷婷丁香| 丁香婷婷色五月| 婷婷丁香五月天色区| 淫视馆av三区| 思思热在线| 综合色五月| 欧美色片中文字幕久久久久| 天天日天天草| 99啪啪视频| 久久婷婷五月丁香蜜桃网| 日韩五月丁香| 午夜九九九九九九| 99精品视频免费观看| 激情小说五月天社区丁香 | 色色99| 婷婷五月免费在线| 五月久久婷婷| 丁香花操逼| 色停停影院五月天| 激情98色婷婷五| 夜精品无码A片一区二区蜜桃 | 日韩av干| 色青青五月| 91视频五月丁香| 90色免费视频|