久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

STM32F334R8 驅(qū)動(dòng) MR25H40CDF MRAM:SPI 接口與掉電保護(hù)實(shí)戰(zhàn)

STM32F334R8 驅(qū)動(dòng) MR25H40CDF MRAM:SPI 接口與掉電保護(hù)實(shí)戰(zhàn) 1. 項(xiàng)目緣起與方案選型1.1 為什么要在工業(yè)場(chǎng)景里折騰 MRAM做嵌入式這行十幾年存儲(chǔ)方案的選擇一直是個(gè)繞不開(kāi)的話題。早些年做工業(yè)數(shù)據(jù)采集器EEPROM 擦寫(xiě)壽命不夠用FRAM 容量又上不去NOR Flash 寫(xiě)入前還得先擦除整個(gè)扇區(qū)掉電保護(hù)邏輯寫(xiě)得人頭大。直到 MRAM磁性隨機(jī)存儲(chǔ)器這類器件逐漸成熟才算找到一種能兼顧速度、壽命和掉電安全性的方案。MR25H40CDF 是 Everspin 推出的一款 4Mbit 串行 MRAMSPI 接口40MHz 時(shí)鐘最讓人省心的是它沒(méi)有寫(xiě)入延遲——數(shù)據(jù)寫(xiě)進(jìn)去就落盤(pán)不需要像 Flash 那樣等待內(nèi)部編程周期。這一點(diǎn)在工業(yè)現(xiàn)場(chǎng)特別關(guān)鍵設(shè)備可能隨時(shí)斷電如果寫(xiě)入過(guò)程中掉電Flash 方案很容易丟數(shù)據(jù)甚至損壞扇區(qū)而 MRAM 的物理機(jī)制決定了它寫(xiě)入即持久。STM32F334R8 則是 ST 家的一款 Cortex-M4 內(nèi)核 MCU72MHz 主頻帶 FPU 和 HRTIM高分辨率定時(shí)器在數(shù)字電源、電機(jī)控制、工業(yè)傳感器采集這些場(chǎng)景里出鏡率很高。它片內(nèi) Flash 只有 64KBRAM 12KB跑復(fù)雜應(yīng)用時(shí)經(jīng)常捉襟見(jiàn)肘外掛一顆 MRAM 來(lái)存參數(shù)、日志、校準(zhǔn)數(shù)據(jù)是很自然的思路。這個(gè)組合的核心價(jià)值在于用 SPI 接口把非易失存儲(chǔ)擴(kuò)展到 MCU 外部同時(shí)保留 MRAM 的字節(jié)級(jí)隨機(jī)寫(xiě)入、近乎無(wú)限的擦寫(xiě)壽命和即時(shí)持久化特性。適合做工業(yè)儀表、數(shù)據(jù)記錄儀、電機(jī)驅(qū)動(dòng)器參數(shù)存儲(chǔ)、以及任何對(duì)掉電數(shù)據(jù)完整性有要求的嵌入式項(xiàng)目。1.2 SPI 接口選型背后的考量MR25H40CDF 只提供 SPI 接口沒(méi)有并口版本。為什么選 SPI 而不是 I2C 或者并口這里有幾個(gè)實(shí)際考量。SPI 是全雙工同步串行總線速率比 I2C 高一個(gè)數(shù)量級(jí)。MR25H40CDF 支持最高 40MHz 時(shí)鐘STM32F334R8 的 SPI1 掛在 APB2 上最高能跑到 36MHz72MHz 二分頻SPI2 掛在 APB1 上最高 18MHz。用 SPI1 的話理論傳輸速率能到 4.5MB/s讀 4Mbit512KB全部?jī)?nèi)容也就一百多毫秒。I2C 最快 400kHz 或者 1MHz差距明顯。并口雖然更快但引腳多、PCB 布線復(fù)雜在小型工業(yè)模塊里不劃算。SPI 只要四根線SCK、MOSI、MISO、CS加上電源和地六根線搞定PCB 走線清爽。還有一個(gè)容易被忽略的點(diǎn)MRAM 的 SPI 協(xié)議和普通 SPI Flash 高度兼容命令集類似READ、WRITE、WREN、RDSR 等但去掉了擦除相關(guān)的命令。這意味著如果你之前用 W25Q64 這類 Flash 寫(xiě)過(guò)代碼遷移到 MR25H40CDF 時(shí)上層邏輯改動(dòng)很小主要就是把擦除步驟刪掉寫(xiě)入前不需要 WREN 之外的額外準(zhǔn)備。注意MR25H40CDF 的寫(xiě)操作不需要先擦除但每次寫(xiě)入前仍然需要發(fā)送 WRENWrite Enable命令這一點(diǎn)和 Flash 一致。寫(xiě)完一個(gè)字節(jié)或一頁(yè)后WREN 自動(dòng)復(fù)位下次寫(xiě)入要重新發(fā)。1.3 硬件連接與引腳規(guī)劃STM32F334R8 有多個(gè) SPI 外設(shè)我一般優(yōu)先用 SPI1因?yàn)樗臅r(shí)鐘源是 APB2頻率更高。具體引腳分配如下STM32 引腳功能MR25H40CDF 引腳說(shuō)明PA5SPI1_SCKSCK時(shí)鐘建議串聯(lián) 22Ω 電阻PA6SPI1_MISOSO主入從出PA7SPI1_MOSISI主出從入PA4GPIO_OutputCS片選軟件控制3.3V電源VDD加 0.1uF 去耦電容GND地VSS靠近芯片放置CS 片選我用的是軟件控制沒(méi)有用 SPI 外設(shè)的硬件 NSS。原因很簡(jiǎn)單硬件 NSS 在多從機(jī)場(chǎng)景下容易出問(wèn)題而且 STM32 的硬件 NSS 在某些模式下會(huì)自己抖動(dòng)調(diào)試起來(lái)費(fèi)勁。軟件控制雖然多一行代碼但時(shí)序完全可控想什么時(shí)候拉低就什么時(shí)候拉低配合 MRAM 的高速寫(xiě)入反而更穩(wěn)。PCB 布線方面SPI 信號(hào)線盡量等長(zhǎng)SCK 作為時(shí)鐘線要遠(yuǎn)離模擬信號(hào)。如果板上還有 ADC 或者運(yùn)放SPI 走線最好包地處理。MRAM 芯片靠近 MCU 放置走線不超過(guò) 10cm超過(guò)這個(gè)距離就要考慮信號(hào)完整性問(wèn)題可能需要降低 SPI 時(shí)鐘或者加緩沖。2. MR25H40CDF 核心機(jī)制與操作要點(diǎn)2.1 MRAM 的物理原理與性能邊界MRAM 的全稱是 Magnetoresistive Random Access Memory磁性隨機(jī)存儲(chǔ)器。它的存儲(chǔ)單元是一個(gè)磁性隧道結(jié)MTJ由兩層鐵磁材料夾一層極薄的絕緣層構(gòu)成。一層是固定磁化方向另一層是自由磁化方向。當(dāng)兩層磁化方向平行時(shí)電阻低代表邏輯 0反平行時(shí)電阻高代表邏輯 1。寫(xiě)入時(shí)通過(guò)自旋極化電流改變自由層磁化方向讀取時(shí)測(cè)量隧道結(jié)電阻。這個(gè)機(jī)制帶來(lái)幾個(gè)關(guān)鍵特性。第一寫(xiě)入沒(méi)有延遲電流脈沖結(jié)束數(shù)據(jù)就穩(wěn)定了不需要像 Flash 那樣等待電荷注入浮柵。第二擦寫(xiě)壽命近乎無(wú)限Everspin 標(biāo)稱 10^14 次以上實(shí)際測(cè)試中基本不用擔(dān)心寫(xiě)壞。第三數(shù)據(jù)保持時(shí)間超過(guò) 20 年而且不需要供電維持。第四抗輻射、抗磁場(chǎng)干擾能力比 Flash 強(qiáng)在工業(yè)電磁環(huán)境里更可靠。但 MRAM 也不是沒(méi)有短板。容量密度比 NAND Flash 低成本高4Mbit 的芯片價(jià)格能買(mǎi)幾十兆的 Flash。所以它適合存關(guān)鍵數(shù)據(jù)不適合存大塊日志或者固件。另外MRAM 的寫(xiě)入電流相對(duì)較大高頻連續(xù)寫(xiě)入時(shí)功耗會(huì)比 Flash 高一些電池供電場(chǎng)景要算一下功耗預(yù)算。MR25H40CDF 的具體參數(shù)如下參數(shù)數(shù)值說(shuō)明容量4Mbit (512K x 8)字節(jié)尋址接口SPI模式 0 和模式 3 都支持最高時(shí)鐘40MHz讀操作寫(xiě)入周期無(wú)延遲字節(jié)/頁(yè)寫(xiě)入擦寫(xiě)壽命10^14幾乎無(wú)限數(shù)據(jù)保持20 年工業(yè)級(jí)工作電壓2.7V ~ 3.6V典型 3.3V工作溫度-40°C ~ 85°C工業(yè)級(jí)封裝DFN-85mm x 6mm2.2 SPI 通信協(xié)議與時(shí)序細(xì)節(jié)MR25H40CDF 的 SPI 協(xié)議和標(biāo)準(zhǔn) SPI Flash 非常接近支持模式 0CPOL0, CPHA0和模式 3CPOL1, CPHA1。我一般用模式 0因?yàn)?STM32 的 SPI 默認(rèn)配置就是模式 0省得改。命令集方面常用的有這幾個(gè)WREN (0x06)寫(xiě)使能寫(xiě)入前必須發(fā)WRDI (0x04)寫(xiě)禁止一般不用主動(dòng)發(fā)RDSR (0x05)讀狀態(tài)寄存器WRSR (0x01)寫(xiě)狀態(tài)寄存器READ (0x03)讀數(shù)據(jù)任意地址WRITE (0x02)寫(xiě)數(shù)據(jù)頁(yè)內(nèi)寫(xiě)入FAST_READ (0x0B)快速讀支持更高時(shí)鐘狀態(tài)寄存器只有一位有用WELWrite Enable Latchbit 1。寫(xiě)入前發(fā) WRENWEL 置 1寫(xiě)入完成后 WEL 自動(dòng)清 0。其他位是只讀或者保留位不用管。時(shí)序上要注意幾個(gè)點(diǎn)。CS 拉低到第一個(gè) SCK 上升沿之間要有至少 5ns 的建立時(shí)間STM32 的 GPIO 翻轉(zhuǎn)速度足夠快但如果你用 HAL 庫(kù)的HAL_GPIO_WritePin函數(shù)調(diào)用開(kāi)銷(xiāo)可能就有幾百納秒所以 CS 操作最好用寄存器直接寫(xiě)或者用__NOP()配合。寫(xiě)入時(shí)序是這樣的CS 拉低 → 發(fā) WREN (0x06) → CS 拉高 → CS 拉低 → 發(fā) WRITE (0x02) → 發(fā) 24 位地址MR25H40CDF 是 19 位地址但協(xié)議上發(fā) 24 位高 5 位忽略→ 發(fā)數(shù)據(jù)字節(jié) → CS 拉高。注意 WREN 和 WRITE 之間必須拉高 CS這是命令邊界。實(shí)操心得很多人第一次用 MRAM 會(huì)忘記 WREN 和 WRITE 之間要拉高 CS結(jié)果寫(xiě)不進(jìn)去。我當(dāng)年調(diào)這個(gè)的時(shí)候邏輯分析儀抓了半天發(fā)現(xiàn) WREN 命令被當(dāng)成 WRITE 的一部分了。記住每個(gè) SPI 命令都是獨(dú)立的 CS 周期。2.3 頁(yè)寫(xiě)入與地址邊界處理MR25H40CDF 支持頁(yè)寫(xiě)入一頁(yè) 256 字節(jié)。但和 Flash 不同的是MRAM 的頁(yè)寫(xiě)入沒(méi)有“頁(yè)對(duì)齊”的硬性要求你可以從任意地址開(kāi)始寫(xiě)任意長(zhǎng)度。不過(guò)如果寫(xiě)入跨越 256 字節(jié)邊界地址會(huì)回卷到頁(yè)首覆蓋之前的數(shù)據(jù)。這一點(diǎn)和 Flash 一樣是硬件行為不是 bug。舉個(gè)例子從地址 0x00FF 開(kāi)始寫(xiě) 10 個(gè)字節(jié)實(shí)際會(huì)寫(xiě)到 0x00FF 到 0x0008其中 0x0100 回卷到 0x0000。所以寫(xiě)跨頁(yè)數(shù)據(jù)時(shí)要么分兩次寫(xiě)要么確保起始地址和長(zhǎng)度不跨頁(yè)。我的做法是封裝一個(gè)MRAM_Write函數(shù)內(nèi)部自動(dòng)處理跨頁(yè)拆分void MRAM_Write(uint32_t addr, uint8_t *buf, uint32_t len) { while (len 0) { uint32_t page_remain 256 - (addr % 256); uint32_t write_len (len page_remain) ? len : page_remain; MRAM_WritePage(addr, buf, write_len); addr write_len; buf write_len; len - write_len; } }這樣上層調(diào)用就不用關(guān)心頁(yè)邊界了。MRAM_WritePage內(nèi)部就是標(biāo)準(zhǔn)的 WREN WRITE 流程。讀操作就簡(jiǎn)單多了READ 命令 (0x03) 可以從任意地址連續(xù)讀沒(méi)有頁(yè)限制地址自動(dòng)遞增讀到 0x7FFFF 后回卷到 0x00000。如果你要讀整個(gè)芯片直接發(fā)一個(gè) READ 命令然后連續(xù)讀 524288 個(gè)字節(jié)就行。3. STM32F334R8 端驅(qū)動(dòng)實(shí)現(xiàn)3.1 CubeMX 配置與 SPI 初始化用 STM32CubeMX 配置 SPI1 的步驟不復(fù)雜但有幾個(gè)參數(shù)容易設(shè)錯(cuò)。我一般這樣配Mode: Full-Duplex MasterData Size: 8 BitsClock Polarity: LowClock Phase: 1 EdgeNSS: SoftwareBaud Rate Prescaler: 2APB2 72MHz / 2 36MHzFirst Bit: MSBCRC: Disabled36MHz 是 SPI1 在 72MHz 主頻下的最高速率MR25H40CDF 支持 40MHz所以 36MHz 完全在規(guī)格內(nèi)。如果你發(fā)現(xiàn)通信不穩(wěn)定先把預(yù)分頻改成 4 或者 8降到 18MHz 或 9MHz 試試排除信號(hào)完整性問(wèn)題。GPIO 配置方面SCK、MOSI、MISO 設(shè)為 Alternate Function Push-PullVery High Speed。CS 設(shè)為 GPIO Output初始電平 High。這里有個(gè)細(xì)節(jié)CS 的 GPIO 速度也要設(shè)成 Very High否則拉低和拉高的邊沿不夠陡高速 SPI 下可能被從機(jī)誤判。初始化代碼用 HAL 庫(kù)生成后我一般會(huì)加一個(gè)MRAM_Init函數(shù)做兩件事拉高 CS然后讀一次狀態(tài)寄存器確認(rèn)通信正常。uint8_t MRAM_Init(void) { MRAM_CS_HIGH(); HAL_Delay(1); uint8_t status MRAM_ReadStatus(); if (status 0xFF || status 0x00) { return 1; // 通信失敗 } return 0; // 成功 }讀狀態(tài)寄存器返回 0xFF 通常意味著 MISO 一直高可能是芯片沒(méi)供電或者 CS 沒(méi)接對(duì)。返回 0x00 可能是 MISO 一直低檢查一下是不是短路了。3.2 底層讀寫(xiě)函數(shù)實(shí)現(xiàn)底層函數(shù)我分成四個(gè)MRAM_WriteEnable、MRAM_ReadStatus、MRAM_Read、MRAM_WritePage。每個(gè)函數(shù)都直接操作 SPI 和 GPIO不依賴 HAL 的 SPI 傳輸函數(shù)因?yàn)?HAL 的函數(shù)調(diào)用開(kāi)銷(xiāo)在高速場(chǎng)景下有點(diǎn)大。#define MRAM_CS_LOW() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET) #define MRAM_CS_HIGH() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET) static void MRAM_WriteEnable(void) { MRAM_CS_LOW(); uint8_t cmd 0x06; HAL_SPI_Transmit(hspi1, cmd, 1, 10); MRAM_CS_HIGH(); } static uint8_t MRAM_ReadStatus(void) { uint8_t cmd 0x05; uint8_t status; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 10); HAL_SPI_Receive(hspi1, status, 1, 10); MRAM_CS_HIGH(); return status; } void MRAM_Read(uint32_t addr, uint8_t *buf, uint32_t len) { uint8_t cmd[4]; cmd[0] 0x03; cmd[1] (addr 16) 0xFF; cmd[2] (addr 8) 0xFF; cmd[3] addr 0xFF; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 4, 10); HAL_SPI_Receive(hspi1, buf, len, 1000); MRAM_CS_HIGH(); } void MRAM_WritePage(uint32_t addr, uint8_t *buf, uint32_t len) { uint8_t cmd[4]; cmd[0] 0x02; cmd[1] (addr 16) 0xFF; cmd[2] (addr 8) 0xFF; cmd[3] addr 0xFF; MRAM_WriteEnable(); MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 4, 10); HAL_SPI_Transmit(hspi1, buf, len, 1000); MRAM_CS_HIGH(); }這里有個(gè)性能優(yōu)化的點(diǎn)HAL_SPI_Transmit和HAL_SPI_Receive在傳輸大量數(shù)據(jù)時(shí)內(nèi)部是逐字節(jié)輪詢的36MHz 下傳 512KB 大概要幾百毫秒。如果你追求極致速度可以用 DMA。SPI1 的 TX 和 RX 都支持 DMA配置好之后讀 512KB 數(shù)據(jù)能壓到幾十毫秒。不過(guò) DMA 配置復(fù)雜一些還要處理傳輸完成中斷看項(xiàng)目需求決定。注意MRAM 的寫(xiě)入速度受限于 SPI 時(shí)鐘和 MCU 的發(fā)送能力。36MHz 下理論寫(xiě)入速率是 4.5MB/s但實(shí)際因?yàn)?WREN 命令和 CS 翻轉(zhuǎn)的開(kāi)銷(xiāo)連續(xù)寫(xiě)入大概在 2-3MB/s。如果你要頻繁寫(xiě)大量數(shù)據(jù)算一下時(shí)間預(yù)算。3.3 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)外掛 MRAM 之后怎么組織數(shù)據(jù)是個(gè)需要提前想清楚的問(wèn)題。我一般把 512KB 的空間分成幾個(gè)區(qū)域區(qū)域起始地址大小用途配置區(qū)0x000004KB系統(tǒng)參數(shù)、校準(zhǔn)系數(shù)日志區(qū)0x01000256KB循環(huán)日志帶時(shí)間戳備份區(qū)0x41000252KB固件備份、大數(shù)據(jù)塊保留區(qū)0x7F0004KB魔術(shù)字、版本號(hào)、CRC配置區(qū)存結(jié)構(gòu)體每次修改后整體寫(xiě)入配合 CRC 校驗(yàn)。日志區(qū)用環(huán)形緩沖區(qū)寫(xiě)指針存在保留區(qū)每次寫(xiě)入后更新指針。備份區(qū)存不常變的數(shù)據(jù)比如出廠校準(zhǔn)表。結(jié)構(gòu)體定義要注意字節(jié)對(duì)齊。STM32 默認(rèn) 4 字節(jié)對(duì)齊如果結(jié)構(gòu)體里有uint8_t和uint32_t混用編譯器會(huì)插入填充字節(jié)。寫(xiě)入 MRAM 時(shí)是按字節(jié)流寫(xiě)的讀回來(lái)直接強(qiáng)轉(zhuǎn)指針可能因?yàn)閷?duì)齊問(wèn)題出錯(cuò)。我的做法是用__attribute__((packed))或者手動(dòng)序列化。typedef struct __attribute__((packed)) { uint32_t magic; uint16_t version; float calib_k; float calib_b; uint32_t crc; } Config_t;寫(xiě)入前算 CRC讀出來(lái)后校驗(yàn)不匹配就加載默認(rèn)值。這個(gè)套路在工業(yè)項(xiàng)目里很常見(jiàn)能有效防止數(shù)據(jù)損壞導(dǎo)致的異常行為。4. 實(shí)操驗(yàn)證與問(wèn)題排查4.1 讀寫(xiě)測(cè)試與性能實(shí)測(cè)驅(qū)動(dòng)寫(xiě)完之后第一步是跑一個(gè)全片讀寫(xiě)測(cè)試。我一般寫(xiě)一個(gè)測(cè)試函數(shù)先擦除...等等MRAM 不需要擦除。直接寫(xiě) 0x00 到 0xFF 的遞增模式然后讀回來(lái)對(duì)比。void MRAM_Test(void) { uint8_t wbuf[256], rbuf[256]; for (int i 0; i 256; i) wbuf[i] i; for (uint32_t addr 0; addr 0x80000; addr 256) { MRAM_WritePage(addr, wbuf, 256); MRAM_Read(addr, rbuf, 256); if (memcmp(wbuf, rbuf, 256) ! 0) { printf(Mismatch at 0x%05X\n, addr); return; } } printf(MRAM test passed\n); }實(shí)測(cè)下來(lái)36MHz SPI 時(shí)鐘全片 512KB 寫(xiě)入加讀取對(duì)比大概 1.2 秒完成。其中寫(xiě)入約 800ms讀取約 400ms。這個(gè)速度對(duì)于工業(yè)數(shù)據(jù)記錄完全夠用。如果你發(fā)現(xiàn)測(cè)試失敗先降低 SPI 時(shí)鐘到 9MHz 再試。如果低速能過(guò)高速不過(guò)基本是信號(hào)完整性問(wèn)題檢查一下 SCK 走線有沒(méi)有過(guò)長(zhǎng)、有沒(méi)有串?dāng)_。如果低速也失敗用邏輯分析儀抓 SPI 波形看命令和數(shù)據(jù)是否符合預(yù)期。4.2 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因排查方法解決措施讀回全 0xFFMISO 未連接或芯片未供電萬(wàn)用表測(cè) VDD 和 MISO 電壓檢查供電和焊接讀回全 0x00MISO 短路到地?cái)嚯姕y(cè) MISO 對(duì)地電阻修復(fù)短路寫(xiě)入后讀回不變WREN 未發(fā)或 CS 時(shí)序錯(cuò)誤邏輯分析儀抓 WREN 和 WRITE確保 WREN 和 WRITE 之間 CS 拉高跨頁(yè)寫(xiě)入數(shù)據(jù)錯(cuò)亂地址回卷檢查寫(xiě)入起始地址和長(zhǎng)度拆分跨頁(yè)寫(xiě)入高速下偶發(fā)錯(cuò)誤信號(hào)完整性降低 SPI 時(shí)鐘測(cè)試加串阻、縮短走線、包地?cái)?shù)據(jù)偶爾丟失電源波動(dòng)示波器看 VDD 紋波加去耦電容、穩(wěn)壓4.3 掉電保護(hù)與數(shù)據(jù)完整性MRAM 的最大賣(mài)點(diǎn)就是掉電安全但前提是寫(xiě)入操作已經(jīng)完成。如果 MCU 在發(fā) WRITE 命令的過(guò)程中掉電MRAM 可能只寫(xiě)了一半數(shù)據(jù)。雖然 MRAM 的寫(xiě)入是原子性的單個(gè)存儲(chǔ)單元要么寫(xiě)成功要么保持原值但多字節(jié)寫(xiě)入過(guò)程中掉電可能出現(xiàn)部分字節(jié)更新、部分字節(jié)未更新的情況。對(duì)于關(guān)鍵數(shù)據(jù)我的做法是雙備份加 CRC。比如配置區(qū)存兩份地址 0x00000 和 0x00800每份帶 CRC。讀取時(shí)先讀第一份CRC 通過(guò)就用不通過(guò)讀第二份都不通過(guò)加載默認(rèn)值。寫(xiě)入時(shí)先寫(xiě)第二份再寫(xiě)第一份確保任何時(shí)候至少有一份是完整的。日志區(qū)用環(huán)形緩沖區(qū)每條記錄帶序號(hào)和 CRC。上電后從保留區(qū)讀寫(xiě)指針然后掃描最近幾條記錄找到最后一條 CRC 正確的記錄從它后面繼續(xù)寫(xiě)。這樣即使掉電時(shí)正在寫(xiě)日志最多丟一條記錄不會(huì)影響整個(gè)日志區(qū)。實(shí)操心得MRAM 雖然寫(xiě)入快但不要在主循環(huán)里頻繁寫(xiě)。我見(jiàn)過(guò)一個(gè)項(xiàng)目每采集一次數(shù)據(jù)就寫(xiě)一次 MRAM結(jié)果 SPI 總線占用率太高影響了其他外設(shè)。后來(lái)改成攢夠 64 字節(jié)寫(xiě)一次或者定時(shí) 100ms 寫(xiě)一次問(wèn)題解決。存儲(chǔ)器件再快也要考慮總線帶寬和系統(tǒng)整體調(diào)度。4.4 與 Flash 方案的對(duì)比與遷移建議如果你之前用的是 W25Q64 這類 SPI Flash遷移到 MR25H40CDF 時(shí)硬件上基本兼容引腳定義幾乎一樣。軟件上主要改這幾個(gè)地方第一去掉所有擦除相關(guān)的代碼。Flash 寫(xiě)入前要發(fā) 0x06 WREN、0x20 扇區(qū)擦除、0x05 讀狀態(tài)等待擦除完成MRAM 全都不需要。第二寫(xiě)入前仍然要發(fā) WREN但不需要等待。第三地址范圍變了W25Q64 是 8MBMR25H40CDF 是 512KB如果你的代碼里有地址越界檢查記得改。第四性能特性不同。Flash 的擦除很慢幾十到幾百毫秒所以通常要攢一批數(shù)據(jù)再寫(xiě)。MRAM 沒(méi)有擦除寫(xiě)入也快可以更頻繁地寫(xiě)但要注意 SPI 總線占用。第五壽命不同。Flash 擦寫(xiě) 10 萬(wàn)次左右MRAM 是 10^14 次基本不用考慮磨損均衡。如果你之前為 Flash 寫(xiě)了磨損均衡算法遷移到 MRAM 后可以刪掉簡(jiǎn)化代碼。從成本角度看MR25H40CDF 比同容量 Flash 貴不少但比 FRAM 便宜而且容量更大。在需要頻繁寫(xiě)入、掉電保護(hù)、長(zhǎng)壽命的場(chǎng)景里這個(gè)成本是值得的。如果只是存固件或者不常改的參數(shù)用 Flash 更劃算。5. 工業(yè)場(chǎng)景下的擴(kuò)展思路5.1 多芯片級(jí)聯(lián)與容量擴(kuò)展512KB 在某些應(yīng)用里可能不夠用比如高頻數(shù)據(jù)記錄儀一天就能寫(xiě)滿。這時(shí)候可以掛多顆 MR25H40CDF用不同的 CS 引腳片選。STM32F334R8 的 GPIO 足夠多掛四顆就是 2MB掛八顆就是 4MB。多芯片管理的核心是地址映射。我一般定義一個(gè)邏輯地址空間比如 0x000000 到 0x3FFFFF 對(duì)應(yīng)四顆芯片每顆 512KB。讀寫(xiě)函數(shù)根據(jù)地址高兩位選擇 CS 引腳低 19 位作為芯片內(nèi)地址。#define MRAM_CHIP_SIZE 0x80000 #define MRAM_CHIP_NUM 4 void MRAM_SelectChip(uint32_t addr) { uint8_t chip addr / MRAM_CHIP_SIZE; switch (chip) { case 0: HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); break; case 1: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); break; // ... } }多芯片的缺點(diǎn)是 PCB 面積增大CS 走線增多。如果空間緊張可以考慮用 SPI 片選譯碼器用 3 根 GPIO 控制 8 個(gè) CS節(jié)省引腳。5.2 與 RTOS 結(jié)合的任務(wù)調(diào)度在跑 FreeRTOS 或者 RT-Thread 的項(xiàng)目里MRAM 讀寫(xiě)要加互斥鎖。SPI 總線是共享資源如果多個(gè)任務(wù)同時(shí)讀寫(xiě) MRAM不加鎖會(huì)導(dǎo)致 CS 時(shí)序混亂數(shù)據(jù)錯(cuò)位。我的做法是創(chuàng)建一個(gè)二值信號(hào)量每次 MRAM 操作前獲取操作后釋放。如果某個(gè)任務(wù)要寫(xiě)大量數(shù)據(jù)可以分塊寫(xiě)每塊之間釋放一下信號(hào)量避免長(zhǎng)時(shí)間占用總線導(dǎo)致其他任務(wù)超時(shí)。SemaphoreHandle_t mram_mutex; void MRAM_WriteTask(uint32_t addr, uint8_t *buf, uint32_t len) { xSemaphoreTake(mram_mutex, portMAX_DELAY); MRAM_Write(addr, buf, len); xSemaphoreGive(mram_mutex); }如果對(duì)實(shí)時(shí)性要求高可以把 MRAM 操作放到一個(gè)低優(yōu)先級(jí)任務(wù)里通過(guò)隊(duì)列接收寫(xiě)請(qǐng)求批量處理。這樣高優(yōu)先級(jí)任務(wù)不會(huì)被 SPI 傳輸阻塞。5.3 數(shù)據(jù)加密與安全存儲(chǔ)工業(yè)設(shè)備有時(shí)候需要存一些敏感數(shù)據(jù)比如校準(zhǔn)密鑰、設(shè)備證書(shū)。MRAM 本身沒(méi)有加密功能數(shù)據(jù)是明文存儲(chǔ)的。如果設(shè)備可能被物理拆解MRAM 里的數(shù)據(jù)能被直接讀取。簡(jiǎn)單的做法是在 MCU 端做加密后再寫(xiě)入。STM32F334R8 沒(méi)有硬件加密引擎但可以用軟件 AES。ST 的 CryptoLib 提供了 AES-128 的軟件實(shí)現(xiàn)加密 512KB 數(shù)據(jù)大概幾百毫秒對(duì)于不常寫(xiě)的數(shù)據(jù)可以接受。更安全的做法是用 STM32 的讀保護(hù)功能防止通過(guò)調(diào)試接口讀取 Flash 里的密鑰。但 MRAM 是外部芯片讀保護(hù)管不到。如果安全要求極高可以考慮用帶加密功能的存儲(chǔ)芯片或者把密鑰存在 MCU 內(nèi)部 Flash 的受保護(hù)區(qū)域MRAM 只存加密后的數(shù)據(jù)。注意軟件 AES 加密會(huì)消耗 CPU 時(shí)間如果寫(xiě)入頻繁可能影響系統(tǒng)實(shí)時(shí)性。建議只對(duì)關(guān)鍵數(shù)據(jù)加密日志和普通參數(shù)可以明文存儲(chǔ)。5.4 低功耗設(shè)計(jì)考量電池供電的工業(yè)傳感器功耗是核心指標(biāo)。MR25H40CDF 的待機(jī)電流典型值 10uA寫(xiě)入時(shí)峰值電流 15mA讀取時(shí) 5mA。STM32F334R8 在 Stop 模式下 1uA 左右。如果系統(tǒng)大部分時(shí)間在休眠M(jìn)RAM 的待機(jī)功耗可以忽略。但要注意 CS 引腳的狀態(tài)CS 拉高時(shí)芯片進(jìn)入待機(jī)拉低時(shí)即使沒(méi)有時(shí)鐘也在耗電。所以休眠前一定要把 CS 拉高。寫(xiě)入策略上不要頻繁喚醒寫(xiě) MRAM??梢詳€一批數(shù)據(jù)喚醒后一次性寫(xiě)入然后繼續(xù)休眠。MRAM 的寫(xiě)入速度快喚醒時(shí)間短整體功耗比 Flash 方案低因?yàn)?Flash 擦除要等很久MCU 得一直醒著。實(shí)測(cè)一個(gè)數(shù)據(jù)記錄儀方案每 10 分鐘喚醒一次采集 1KB 數(shù)據(jù)寫(xiě)入 MRAM然后休眠。平均功耗 50uA 左右兩節(jié) AA 電池能用兩年以上。如果換成 Flash擦除等待會(huì)讓平均功耗翻倍。6. 調(diào)試工具與實(shí)戰(zhàn)技巧6.1 邏輯分析儀抓包要點(diǎn)調(diào) SPI 器件邏輯分析儀是必備工具。我用的是 Saleae Logic 88 通道100MS/s 采樣率抓 36MHz SPI 夠用。抓包時(shí)注意幾點(diǎn)第一采樣率至少是 SPI 時(shí)鐘的 4 倍36MHz SPI 需要 144MS/s 以上Logic 8 的 100MS/s 在 36MHz 下只能看到大概波形細(xì)節(jié)可能失真。如果條件允許用 Logic Pro 16500MS/s能看清每個(gè)邊沿。第二觸發(fā)條件設(shè)成 CS 下降沿這樣每次命令都能抓到。解碼器選 SPI配置 CPOL0、CPHA0、MSB First位序和 MCU 配置一致。第三看波形時(shí)重點(diǎn)檢查 CS 和 SCK 的關(guān)系。CS 拉低后第一個(gè) SCK 邊沿之前MOSI 應(yīng)該已經(jīng)穩(wěn)定。如果 MOSI 變化和 SCK 邊沿太近可能是 GPIO 速度不夠或者代碼里操作順序有問(wèn)題。6.2 用 J-Link 調(diào)試 MRAM 讀寫(xiě)J-Link 不僅能燒錄 STM32還能通過(guò) RTTReal Time Transfer輸出調(diào)試信息。我在 MRAM 驅(qū)動(dòng)里加一些 RTT 打印實(shí)時(shí)看讀寫(xiě)地址和數(shù)據(jù)比串口方便不占用 UART 資源。#include SEGGER_RTT.h SEGGER_RTT_printf(0, MRAM write addr0x%05X len%d\n, addr, len);如果懷疑某個(gè)地址的數(shù)據(jù)不對(duì)可以用 J-Link 的 Memory Browser 直接看 MCU 內(nèi)存里的緩沖區(qū)對(duì)比 MRAM 讀回的數(shù)據(jù)。J-Link 還能測(cè) SPI 傳輸耗時(shí)在傳輸前后讀 DWT-CYCCNT算出實(shí)際時(shí)鐘周期數(shù)驗(yàn)證 SPI 速率是否符合預(yù)期。6.3 批量生產(chǎn)時(shí)的測(cè)試方案產(chǎn)品量產(chǎn)時(shí)每塊板子都要測(cè) MRAM。手動(dòng)跑測(cè)試函數(shù)太慢我一般做一個(gè)自動(dòng)化測(cè)試工裝MCU 上電后進(jìn)入測(cè)試模式通過(guò) UART 接收命令PC 端發(fā)指令跑全片讀寫(xiě)測(cè)試返回 PASS 或 FAIL。測(cè)試內(nèi)容至少包括芯片 ID 讀取如果有、全片寫(xiě)入遞增模式、全片讀取校驗(yàn)、邊界地址測(cè)試0x00000、0x7FFFF、跨頁(yè)寫(xiě)入測(cè)試。測(cè)試時(shí)間控制在 5 秒以內(nèi)產(chǎn)線能接受。如果發(fā)現(xiàn)不良品記錄故障地址和現(xiàn)象方便分析是焊接問(wèn)題還是芯片問(wèn)題。常見(jiàn)的不良是 CS 虛焊、MISO 和 MOSI 接反、電源濾波電容漏貼。這些在目檢時(shí)不容易發(fā)現(xiàn)但測(cè)試能抓出來(lái)。6.4 長(zhǎng)期運(yùn)行的數(shù)據(jù)可靠性驗(yàn)證工業(yè)設(shè)備可能連續(xù)運(yùn)行幾年MRAM 的數(shù)據(jù)保持能力需要驗(yàn)證。我做過(guò)一個(gè)加速測(cè)試在 85°C 環(huán)境下連續(xù)寫(xiě)入 100 萬(wàn)次然后讀取校驗(yàn)沒(méi)有出現(xiàn)錯(cuò)誤。Everspin 的 datasheet 標(biāo)稱 10^14 次實(shí)際使用中基本不用擔(dān)心壽命。但數(shù)據(jù)保持方面高溫會(huì)加速磁性退化。如果設(shè)備工作在高溫環(huán)境建議定期比如每月做一次數(shù)據(jù)巡檢讀出來(lái)校驗(yàn) CRC發(fā)現(xiàn)錯(cuò)誤就用備份恢復(fù)。這個(gè)邏輯可以放在系統(tǒng)空閑任務(wù)里不影響正常功能。另外MRAM 對(duì)強(qiáng)磁場(chǎng)敏感。如果設(shè)備附近有電機(jī)、繼電器或者大電流走線MRAM 要遠(yuǎn)離這些干擾源或者加磁屏蔽。實(shí)測(cè)中距離 10cm 以上的繼電器動(dòng)作對(duì) MRAM 沒(méi)有影響但如果貼著放寫(xiě)入時(shí)可能出現(xiàn)位翻轉(zhuǎn)。7. 個(gè)人實(shí)操體會(huì)與建議這個(gè)方案我從 2021 年開(kāi)始在幾個(gè)工業(yè)項(xiàng)目里用累計(jì)出貨幾千臺(tái)現(xiàn)場(chǎng)反饋很穩(wěn)。最大的感受是MRAM 的“寫(xiě)入即持久”特性讓掉電保護(hù)邏輯簡(jiǎn)化了至少一半。以前用 Flash 的時(shí)候要設(shè)計(jì)雙備份、寫(xiě)前擦除、掉電檢測(cè)、恢復(fù)流程代碼量大且容易出 bug。換成 MRAM 后寫(xiě)入就是寫(xiě)入掉電就掉電數(shù)據(jù)不會(huì)丟省心很多。選型上MR25H40CDF 的 4Mbit 容量在參數(shù)存儲(chǔ)場(chǎng)景夠用但如果要存大量日志建議選更大容量的型號(hào)比如 MR25H256256Kbit或者 MR4A16B16Mbit 并口。SPI 接口的 MRAM 目前最大到 4Mbit再大就要用并口或者換其他技術(shù)路線。驅(qū)動(dòng)開(kāi)發(fā)上我建議先把底層讀寫(xiě)調(diào)通用邏輯分析儀確認(rèn)時(shí)序正確再往上搭數(shù)據(jù)結(jié)構(gòu)和應(yīng)用邏輯。很多人一上來(lái)就寫(xiě)復(fù)雜的存儲(chǔ)管理結(jié)果底層有問(wèn)題查半天查不出來(lái)。分層調(diào)試逐層驗(yàn)證效率最高。最后分享一個(gè)小技巧MRAM 的 CS 引腳上拉一個(gè) 10k 電阻到 3.3V防止 MCU 復(fù)位期間 CS 浮空導(dǎo)致誤操作。雖然 MRAM 寫(xiě)入需要 WREN誤觸發(fā)的概率很低但加上拉電阻成本幾乎為零能提高可靠性。我在早期版本上沒(méi)加后來(lái)有一次現(xiàn)場(chǎng)設(shè)備頻繁復(fù)位懷疑是 CS 干擾加上拉后問(wèn)題消失。這種細(xì)節(jié)datasheet 上不會(huì)寫(xiě)但實(shí)際項(xiàng)目中很關(guān)鍵。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
西西美女视频网| 日韩操逼HD| 67194国产| 国产91影院| 久久久专区| 五月色综合| 国产操操日韩三级黄| 亚洲 欧美 色图| 99在线啪| 性生活无遮挡纯毛片在线看| 97热视频在线观看| 蜜乳av一区二区三区四区不卡| 男人的天堂网免费| 九九色热| 探花激情视频| 26uuu国产成人综合| 97天天| 国产第二页| 大香网伊人久久综合网eew| 性爱久久| 婷婷情色综合网| 韩日精品四区| 五月婷婷五月天| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 在线亚洲丝袜视频网站| 亚洲精品欧洲精品| 欧美曰韩国产精品| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 亚洲天堂自拍| AV老汉| 玖玖爱综合| 超踫中文字幕| 黄色AV影视| 五月丁香影视| 日本大片日本一区二区免费高清| 久久婷婷伊人| 99色综合| 国产怡红院| 九一亚洲国产免费| 婷婷精品国产一区二区三区日韩| 九九九九免费视频| 久久亚洲AV无码白度| 97香蕉网| 大香蕉久| 91香蕉视频在线观看免费| 97jingpin| 狠狠搞 亚洲91| 欧美日韩222| 成人精品视频一区二区| 怡春苑东京热| 久久AV色| 天天欧美| 色色五月婷| 日韩欧美视频青青| 99999精品成人| 国产成人天堂| 中出20p| 日本2020一区二区| 日韩一区二区精彩视频| 日本人人操人人操| 国产精品久久久视频| 青娱乐蜜桃臀AV色婷| 欲色啪| 中文字幕第2页| 男啪女色黄无遮挡免费观看| 国产美女销魂在线观看不卡| 色综合久| 欧美 日韩 另类 亚洲| 国产乱不卡| 999综合网| 国产日韩精品无码去免费专区国产| 色色网91| 九九热精品| 上床不卡网站| 久久久精品,3| 国产AV色黄看到爽| 天天操女人| 啊啊啊啊好大好硬啊啊啊啊啊| 亚洲第一视频 欧美风情 日韩| 99人妻| 国产精品熟女丝袜一区二区| 国产AV天美| 校园春色 亚洲| 欧美精品23| 欧美日韩成人在线| 骚熟女AV网| 日本性交操一区二区不卡系列| 日韩欧美中文| 91天美传媒在线观看| 青娱乐黄色录像| 又大又长又粗又爽又黄| 亚洲骚女一区二区三区| 久9爱精品| 熟妇xxxxx性春色| 综合网欧美在线| 欧美第二页午夜| 51国产午夜精品视频| 五月天成人综合| 精品人妻一区二区三区视频| 丰满人妻被猛烈进入中| 性色一线| 熟女人妻一区二区三区免费看| 任你爽视频| 粉嫩av一区二区三区四季| 日本孕妇一区二区视频操逼免费看 | 青青草好吊色| 大香蕉九九| 超碰97综合网| 日韩性爱播放| 久久久91| 97超碰资源网| 色网在线视频观看免费| 亚洲一本色码中文字幕| 999精品国产高清一区二区| 久热伊人99re| 最新无码国产| 亚洲男人的天堂AV| 国产最火爆久久国产网站网站| 青娱乐av在线| 在线观看色视频| 色五月激情AV在线| 久久精品性| 国产精品午夜福利| 丁香六月婷婷久久综合| 天天色欧美| 96精品在线| 国产精品久久久久久久久久久久| 狼人综合婷婷激情四射 | 色婷婷在线视频精品导航| 日韩人妻丝袜中文字幕| 一区二区三区国产精产| 天天做日日爱夜夜爽| 中文熟女五十乱码在线| 综合激情婷婷| 免费观看成人www精品视频| 中文字幕视频2区| 国产不良强奸视频免费看| 天天看特黄的免费网站| 亚洲精品中文字幕一区在线视频| 97操B| 精品区9| 乱性AV| 日韩人妻精品中文字幕| 天天躁日日躁XXXXYY| 亚洲午夜精品久久久中文影院| 天天天天操| 国内一区二区免费| 久久99草| 最新欧洲欧美日本激情网站| 8x福利精品第一福利视频导航| 国产情色在线| 天天综合色| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美日韩第一页| 久久91| 欧美日韩婷婷中文| 91久久久久久| 色综合久久av| 婷婷激情四射| 国产性爱欧美性爱在线| 日韩免费人妻色情网站| 一线黄色免费性爱片| 国产丁香精品露脸视频| 日日夜夜青青草母狗| 一区二区三区激情在线观看| 无遮挡男女激烈动态图| 色欲久久99精品久久| 日韩紧密久久| 五月天综合在线| 国产亚洲日韩欧| 一区二区三| 91精品久久久久久77777| 成人AV素股で擦久久| 久久久久九九九| 97欧美视频| 性欧美精| 双插在线| 精品国产99| 91啪啪视频| 黄色电影观看久久9| 久久久九九九| 嗯嗯啊啊好爽| 97狠狠| 日本不卡免费二区| 九九热午夜欧亚国产视频| 肥臀熟女福利视频一区二区| 九九色精品| 最新中文字幕在线亚洲| 草草影院日本第一页| 女人久久久| 欧美黑人与女人91| 大白逼三四级| 国产成人91一区二区三区| 免费观看欧美日韩操逼视频| 在线观看一卡二卡| 97人妻碰碰中文无码久热丝袜| 日本一区二区亚洲综合| 超碰美国| 美女网站91| 91精品国产91熟女| 肥佬影院91| 精品无av| 亚洲欧美色图片| 久久久91| 国产传媒日韩| 久久永久无码人妻视频| 人妻无一区二区三区| 麻豆国产97在线| 97综合久久| 东京热双插| 99re99| 四虎精品一区二区| 国产精品视频内谢女人| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 婷婷久久五月综合激情| 激情小说图片亚洲首页| 亚洲精品无码久久AV| 蜜乳av一区二区| 欧美性爱无码一区二区三区| 久久国产乱子伦精品免费女人| 人人操肉肉| 国产亚州精品美女久久久免费| www.色综合| 夜色AV无码手机在线影院| 亚洲精品性爱片| .精品人妻一区二区三| 天天视频网站黄| 天天操夜夜操狠很操| 亚洲欧美在线观看免费| 97任你吞精| 色色色色综合网| 狠狠干狠狠干| AV色天香在线| 亚洲影视高清第一页| 99re这里只有精品2| 男人的天堂免费| 13小男生GAY自慰脱裤子| 国产精品99精品视频网站| 丰满高潮18xxxx| 欧美激情综合色综合啪啪五月| 成年男人的天堂| 日本新免费二区三区| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 肏逼视频日本| 国产h片在线观看视频| 五月丁香婷婷综合| 国产99热| 玖玖玖玖精品国产剧情| 午夜精品一区二区三区三上悠亚| 熟妇精品juliaannAV| 欧美特黄视频网站| 精品人妻一区二区视频| 精品少妇后入一区二区三区四区人妻巨乳 | 国产原创自拍| 国产夫妻性生活视频| 日本一区二区亚洲综合| 99色在线观看| 欧美激色| 亚洲成aⅴ人片不卡无码| 五月婷婷六月色| 操逼精品视频| 免费一级a毛片久久久久久鸭绿欲| 静品嫩模一区二区| 婷婷九月丁香| 伊人激情五月天一区二区| 欧美性天天影视| 超碰一区二区| 亚洲精品官网在线观看| 91路www| 久久91| 久久老子无码午夜伦不卡| 99啪啪| 热热色色综合| 久久久久人| 久久亚洲中文字幕视频| 99久久婷婷| 97超碰久久色| 亚洲一区中文精品| 啪啪91| 久久国产精品一区二区| 日本高清一区二区在线| 夜夜操中文字幕| 国产日韩无码一区二区三区久久区| 久久婷婷五月| 久久精品熟妇丰满人妻99| 国产高潮AA片免费看| 麻豆人妻偷人精品无码视频| 伊人久操| 啊啊啊在线看| 亚欧Av| 日韩综合97P| 91成人久久| 9 9无尺码天堂网| 一级日本牲交大片好爽在线看| 99热综合在线| 国产二区三区免费视频| 久神马| 麻豆国产视频精品观看| 欧美日韩国产电影| 亚欧成人综合影院| 日日日色色色色色| 人人天天干干| 亚洲色图亚洲| 97爱b| 福利操逼| 中文字幕av片| 亚洲精品 大香蕉| 国产精品熟女一区二区三区| 欧美爆操91| 成人无码电影在线观看网| 国产美女91视频| 国产精品亚洲一级av第二区| 亚洲色图欧美色图制服诱惑| 午夜男人一级A片7777| 精品传媒在线一区| 人人操天天爽| 2021久久国产综合精品青草| 亚洲欧美伦综合| 大香蕉伊人网WWWn0n| 国产日韩手机视频在线| 玖玖超碰熟| 九九久久九九久久| 岛国激情视频在线观看| 天天干人妻视频| 中文字幕日韩国产传媒欧美精品| www.亚洲成人一区| 天天爱综合网| 三级网站超变态精品| 久久精品国产亚洲AV成人直播| 国产91美女视频| 超碰激情808| 日本欧美亚洲高清在线看| 2017,超碰| 精品久久久久久久久久久久 | 五月天激情婷婷| 八戒午夜福利理论片| 超碰97.com| 精品久久久久黄少妇| 国产区性爱在线视频秋霞豆| 国产午夜在线观看| 99re6在线视频播放免费精品| 麻豆AV一区二区| 天天干夜夜操网| 精品人妻一二三| AV色图| 蜜桃久久久久久久| 狠狠狠狠狠| 欧美的性爱网站免费| 91M一社| 91麻豆一二三区| 91亚洲黑人| 欧美精品久久久久久久久88| 亚洲春色一区二区三区| 91色欧美| 麻豆色约约| 嗯嗯啊啊视频一区二区三区| 五月婷婷无码| 亚洲一本大道中文字幕无码在线| 中文字幕一二区二三区人妻专区| 乱伦强奸区日韩| 九七超碰人人乐| 欧美999999| 青青草原狼av| 嗯~啊~快点 死我视频| 五月丁香| 九九在线精品| 色色激情| 呦女网站| 一区二区三区无卡视频在线观看| 99999精品成人| 人妻久久久久久久久久久久久久久| 国产女人91精品嗷嗷嗷嗷| 国产成年精品高清在线观看91| 日本不卡一区| 性猛交| 精品九九九| 久草这里只有精品| 午夜小电影在线插入淫高潮| 欧美加勒比| 97视频在线看| 人妻另类 专区 欧美 制服| 国产一区二区在线播放| 丰满人妻一区二区三区| AVE乱伦| 一区二区三| 亚洲色91| 香蕉黄色一级视频| 操逼逼福利视频| 夜间福利片1000无码| 亚洲 自拍偷拍 欧美| 懂色av色欲av蜜臀av| 九九热久久99精品re| 在线岛| 欧美另类精品xxxx| 国产精品一二三在线看| 狠狠狠狠狠| 97精品国产97久久久| 97日本超碰综合| 97se综合网| 亚州久久9| 岛国不卡超碰护士AV在线播放| 四虎精品一区| 国产精品久久久 | 麻豆国产第一| 欧美亚洲高清不卡| 91热| yw尤物av无码点击进入麻豆| WWW操逼| JIZZJIZZ国产精品喷水| 五月激情小说| 东京热亚洲一区二区| 2017av无码免费无线播| 国产精品不卡一区二区三区av| 97精品97久久| 青青草原香蕉日本Ap| 日韩无码第3页| 国产400孕妇孕交群| 思思热在线视频免费| 淫荡少妇免费| 大香樵伊人网| 蜜桃臀一区二区三区久久| 加勒比无码一区二区三区| 日本一级黄色电影| 亚洲97p| 亚洲图片欧美另类综合免费视频大大香| 超碰久久.com| 国产AV毛片| 久久午夜伦| 夜夜人妻爽| 欧美劲爆第一页| 久操操AV电影| 综精品久久久aaaa| 欧美日韩精品久久久久久久久东北老熟妇| 呻吟 欧美 日本 中出| 97在线免费| 欧美日韩亚洲天堂| 精品九九九| av网站在线看| 久操婷婷| 亚洲熟女乱熟乱熟妇综合网二区| 97超碰色中文字幕| 26UUU欧美日本| 欧美精品久久久久久久久88| 色欲久久99国产精品久久久久久| 一区不卡在线观看av| 色99在线| 91操熟妇| 国产 热久久久久国产精品| 久久色激情一区二区三区| 人妻少妇精品无码专区二区密桃| 日本精品无码三级网站| 96爱综合| 国产毛片毛片4p懂色| 五月丁香六月婷| 91n免费处女| 亚洲性网| 综合久久2017| 超碰 欧美| 人妻81p| 欧美一区二区在线资源| 试看60秒 爽| 九九99久久| 亚洲色棕合| 99色热国产视频精品| 成人久久无码www| 97爱综合| 中文字幕在在线观看网站| 9丨久久九九九 | 成人性生活高清视频在线播放| 欧美日韩国产高清在线一二三区| 亚洲国内精品成人不卡| 黄色在线网站| 欧美亚洲国产日本在线,久久精品国产| 波多野42部激情无码喷潮| 精品.99999| 国产精品ww久久| 久久国产精品91| 欧美精品三级黄片| 九月AV| 性爱乱伦视频免费| 四虎在线免费视频| 亚洲一区中文字幕一区| 国产精品噜噜噜日日日| 1956日韩精品| 涩涩这里只有精品视频| 青青草影视蜜久久| 中文字幕老熟妇黄色视频| 91综合网| 久久少妇人妻| 久/久精品99看9| 中文字幕在线免费观看 | 中日无幕一二三四区| 日韩性爱啪啪视频| 欧美在线视频播放| 丁香六月综合激情| 黄色AV免费| 亚洲图片 激情小说| 俺去俺来也在线www| 久久久久久久| 啊啊啊啊操死我了| 国产精品老师| 亚洲性爱成人| 色欧美色交综合| 亚洲图片 91| 亚洲精品三区在线观看| 老熟乱一区二区三区四区| 99久久无色码| 亚州AV无码国产精品| 91成人无码| 亚洲色情在线影视| 日韩人体偷拍| 日韩成人大片一区二区| 欧洲特黄毛片免费看欧洲毛片| 天天综合网1| 婷婷综合久久| 波多野42部无码喷潮在线观看 | 91丝袜美女视频| 天堂av最新电影网| 探花视频免费观看国产专区| 亚洲男人的天堂网| 熟女日韩| 强奸乱亚洲| 日韩熟女乱伦中出| 中文字幕欧美丝袜07资源| 国产精品久久久久999| 神马福利久草| 婷婷久久综合| 囯产乱伦一区二区三女| 91东京热男人的天堂| 夜夜爽夜夜操| 97射欧美| 黄色十八禁| 精品大久久| 色狠狠色| 国模精品一区二区三区苹果色戒 | 亚洲Av无码成人精品国产| 国内偷拍精品一区二区| 国产精品久久久久久久久久久久久久吹 | 宅男91视频在线播放| 国产免费久久久久| 一级久久久久久久久久久 | 成人十八禁日韩欧美一二三| sss视频华人在线| 久久人妻丝袜一区二区三| 女人双腿搬开让男人桶| 人人操人人摸人人看人人干| 99久久久久久亚洲精品不卡| 日韩欧美性爱电影在线观看| 啊啊啊啊网站| 91美女网站| 久久 精品| 午夜爽爽爽| 欧美东京热青青草| 中文字幕第2页| 欧美97网| 丰满人妻一区二区三区免费| 色欧美综合| 亚洲天堂2020| 亚洲啪啪综合?v一区综合精品区| 亚洲?V高清一区二区三区尤物| 九九热三级片| 欧美v日韩v亚洲v最新在线| 亚洲综合欧美| 国产av激情无码久久天堂| 操逼视频国产无套| 国产精品毛片?v一区二区三区| 日韩综合成人免费视频| 密乳无码| 国内自拍 日韩激情 99| 欧美日韩丝袜| 97超碰无码网| 国产性爱欧美性爱在线| 97日韩欧美亚洲| 久久东京热久久| 翔田千里A片一区二区| 91久久免费视频互動交流| 欧美精品久久久久久久久88| 天天影视综合色| 91欧美www| 九九九热| 久草免费福利在线播放| 国产欧美一区二区| 精品国产乱码久久久久久口爆网站 | 精品人妻av在线播放| 97人妻免费中文字幕| 97最新在线播放视频| 四虎AV在线观看| 香港成人一级视频在线青青草| 伊人国产视频| 97超碰精品图片| 日韩有码 一区二区三区| 成人亚欧免费视频| 亚洲国男人的天堂| 亚av顶级裸体一区二区三区四区五区| 日本不卡中文| 日韩性爱人人爱人人操| 深爱五月婷婷| 超碰这里只有精品| 资源新线在线天堂| 艹比视频国产精品| 亚洲s在线观看| 欧美色图在线视频少妇| 国产品精品自在在线午夜免费| 久久国产免费激情视频| 亚州国产精品乱| 91色色综合| 久久久久九九九| 国产午夜激片Av毛片不卡| 亚洲老司机123专区| www鬼畜国产男人的天堂| 日本中文字幕一区| 久草午夜| 日本人妻A片成人免费看片| 婷婷色香| 日韩超碰97| 色欲日韩欧美在线一区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国产吞精a级片激情电影| 欧美日韩免费专区在线| 欧美偷拍| 九九黄色网| 精品人妻视频一区二区在线播放| 翔田千里爆乳巨臀无码| 亚洲色图在线视频| 97久久久久| 亚洲国产一区二区三区四区国产| 伊人操操| 国产极品精品美女视频| 亚洲欧美综合色| 中文字幕乱码在线| 六月婷婷色综合| 亚洲九九视频| 国产超碰| 四虎精品亚洲| 日韩av在线播放不卡| 欧美97视频| 中文字幕精品一区欧美| 人妻无码后入| 26uuu国产亚洲综合| 久久久久久久少妇| 日韩操啪| 91国产大片| 翔田千里爆乳巨臀无码| 久久伊人网视频一区二区三区| 日本精品999| 超AV色女| 操人人| 欧美日韩亚洲天堂网| 少妇高潮流水av免费| 91日日| 狠狠操官网| 东京热熟女亚洲视频网站| 国内精品999| 日本高清_区二区三区| 免费成人在线观看91| 骚日日av| 亚洲欧美日韩激情不卡| 激情文学网伊人| 亚洲天堂男人的天堂| 草b在线| 12一15性XXXX粉嫩国产| 欧美色图天堂网m| 操逼免费视频无码国产| 丝袜狠狠草尤物 91| 俺去俺来也在线www| 操熟女91| 日韩三级在线观看mp4| 亚洲欧美综合区自拍另类| 91国产丝袜美女| 久热大香蕉| 97天堂| 欧美中文狠| 日韩精品一区的| 久久一区二区三区四区五区| 欧中日成人免费影视| 中文字幕亚洲热播人妻| 人妻激情视频| 打av高清| 日韩九区| 两女互慰AV高潮喷水在线观看| 成人片视频| 99无码视频| 黄片免费视频2019| 亚洲欧美综合图片| 啊啊啊好舒服好爽啊啊啊视频| 欧美日韩香蕉| 久久精品| 超碰在线成人电影| 超碰天天久久79| 99re国产中文字幕| 亚洲成aⅴ人片不卡无码| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 男人夜色天堂ss| 93人人操人人| 亚洲国产另类在线中文| 国产精品69久久久久孕妇欧美| www鬼畜国产男人的天堂| 福利色色| 日日操免费视频| 少妇三p| 性欧美精| 国产久久日韩网站导航| 久久久A∨| 在线强奷到舒服的无码视频 | 男女激烈网站最新| 综合久久2017| 十八禁电影伊人网| 亚洲自拍欧美国产首页网曝| 操久久久久久| 国产福利影视| 性爱Av免费| 日本爽爽爽爽爽爽免费视频| 日韩精品一二三| 97欧美色综合| 日韩精品大香蕉伊人在线| 国产极品999| 国产精品交换一区二区| 偷窥自拍亚洲天堂网爆| 无码日韩人妻av一| 中文字幕一二区二三区人妻专区| 小说区 图片区色 综合区| 色色九区| 亚洲另类色综合网站| 欧美精品久久| 久久久久元码视频| 久久久婷婷| 欧洲免费一区二| 国产欧美精品日韩区二区麻豆天美| 久久99人妖视频国产| 色婷婷视频| 久久毛卡| 亚洲AV无码黄色强奸| 手机在线A片| 久久美女国产| 欧美日韩 强奸乱伦| 亚洲精品xxx| 久操com| 国产成人一级av88| 男人a天堂手机在线版| 黄色在线网站| aaaa黄片| 色999五月色| 五月丁香大香蕉| 天天日天天色| 久久最新免费视频23| 日韩99999色| 男女91| 久久九精品| 久久久久久裸体| 亚洲双插| 97超碰欧美中文字幕| 欧美色图亚洲色| 国产强奸无码乱伦| 国产亚洲精品美女久久久| 熟女乱伦A| 久久性爱大全| 日本天天操| 中文字幕在线观看第二页| 啊好爽受不了无码| 搡老女人老91妇女老熟女| 一区=区三区视频| 热热热热日日漂亮永久永久国产日| 另类 综合 日韩 欧美 亚洲| 欧美激色| 人妻偷拍一区二区三区| 成人自拍三级在线观看| 91美女在线视频| 九九九九精品一区| 美女天天干| av黄图片在线观看| 色天使亚洲综合在线观看| 国产福利小视频高清在线观看| 五月丁香六月婷综合成人综合| 五月天激情网站| 午夜精品久久久99| 午夜福利一区二区三区四区五区色婷婷| 蜜臀99久久精品久久久久久| 97操| 亚洲午夜福利在线影院| 视频二区美腿丝袜制服人妻欧美 | 伊人国产视频| 超碰吊日色| 欧美性爱日韩高清| 国模精品娜娜一二三区| 少妇诱惑视频| 99在线精品观看视频中文| 国产精品九九九| 久久精品国产亚洲AV无码电影| 97亚洲综合电影| 青青草玖玖爱| 乱伦熟女论坛| 亚洲中文字幕精品久久久久久直播| 67194无码不卡| 欧美另类天堂| 日韩欧美大力操| 夜夜爽77777| 九草九九九| 国产精品探花色| 女优免费一区二区永久| 伊人午夜福利视频| 少妇高潮流水av免费| 91精品综合久久久久久五月丁香| 人妻少妇色综合| 秋霞色色影院| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产a级精品| 三四中文字幕| 亚洲黄网在哪免费看| 国产成自自拍在线观看| 一区二区高清视频| 91狠狠综合久久| 伊人96在线| 黄片色区软件| 亚州春色| 啪啪啪东京| 少妇99成人麻豆| 射综合网| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久婷五月天| 91黄射| 精品黑人一区二区| 亚洲丰满很很操| 色色福利| 91n免费处女| 国产成人手机视频激情| 麻豆成人av| 国内偷自视频区视频综合| 伊人国产av| 黄色免费一级在线毛片| 日韩AV中文字幕电影| 亚洲一区二区在线观看91| 天天色综合图片| 屁股久久久久久| 狠狠中文字幕| 男人的天堂网页| 蜜桃色色网站视频三区| 91另类| 九九热免费国产视频婷婷伊人五月 | 玖草在线视频| 欧美日韩人人精品| 国产亚洲福利第一页丝袜| 青苹果影院男人的天堂| 日韩操逼性鲍| 91性感网站| 日韩性爱电影一区| 国产乱码久久久| 天天舔天天| 成人羞羞视频国产| 99re69| 免费在线观看国内色片网站网址| 热久久无毒不卡| 亚洲av强奸乱伦| 国产精品白丝| 上床不卡网站| 强奸乱伦日韩AV| 熟女熟妇一区二区三四区| 亚洲色堂免费视频| 尤物黄色在线观看网站| 欧美色图小说综合| 嗯啊免费视频| 国产精品无码av在线| 99超碰网| 欧美熟妇乱码在线一区| 国模不卡| 国语精品对白| 吉川爱美98堂在线| 偷拍自拍在线视频观看| 日本色日夜干| 麻豆激情综合| 婷婷久久综合| 亚洲 自拍偷拍 欧美| yazhououmeizongya| 116美女午夜| 久久精品店| 国产精品久久久久久久久久久久| 青娱乐大香蕉| AA丁香综合激情| 国产在线激情视频| 精品少妇99| 人妻无码久久一区二区三区免费| 一区在线观看中文字幕| 日韩精品资源专区二区| 中文字幕精品亚洲熟女| 精品人妻二区三区| 一区在线国产播放| 久久午夜鲁丝片| 啊啊啊水好多| 超碰地址97| 久久久9视频| 国模吧 一区二区三区| 日本国产亚洲一区在线观看| 91蜜臀人妻中文字幕在线| 性色中出| 国产精品老熟女一区二区| 99精品视频在线观看免费| 中文字幕三四区| 久久久久久免费电影| 日产中文字幕2020| 加勒比无码一区二区三区| 免费作爱一级视频| 日韩有码 一区二区三区| 欧美色图20P| 99热国产精品| 久久久久ab| 九一综合精品视品av| 五月天精品| 午夜黄色免费在线观看| 亚洲一级性爱视频免费看| 91丨国产丨白浆秘 洗澡动漫| 欧美啪啪啪91| 亚洲男人天堂视频| 成人在线永久| 啊啊啊在线观看免费视频| 97久久精品亚洲| 91色久| 亚洲一区二区性爱电影| 国产精品999zyz| 伊人丁香五月婷婷| 中文字幕第9页萱萱影音先锋| 中文 人妻 制服| 欧美热图99| 一本大道青青| 天美久久久久| 久久精品女同亚洲女同13| 伦理日韩国产久久| 岛国不卡超碰护士AV在线播放| 亚洲欧洲无码97久久精品| 久艹伊人精品综合在线| 成年男人的天堂| 国产夜夜操| 欧美少妇第一页| 欧美一区二区三区大综合| 刺激性视频黄页| 亚洲中文字幕有码视频一区二区三区| 日韩草久视频| 欧美熟妇视频| 日本免费一区二| 麻豆AV一区二区| 亚洲淫乱骚妇AV| 韩国女主播青草在线| av麻豆啪啪| 91 丝袜在线观看| 职场同事知名国产国产精品久久欧美日韩| 91天天c| 中文日韩欧美熟| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 精品人妻一区二区三区免费视频| 午夜一区二区三区国产| 午夜美女诱惑电源网| 国产精品色哟哟| 国产精品久久久啊| 超碰久久草| 后入式视频国产自| 97超碰欧美手机在线| 欧美图片校园春色| 97超碰久久| 老熟女乱伦一区| 干日本人少妇午夜寂寞影院| 91操人| www久| 久久久久骚| 亚州 综合 色图| 国产97在线播放| 青青在线视频日韩欧美| 国内亚洲高清无码| 中文字幕一区电影在线观看 | m欧洲一级午老| 热久久无毒不卡| 天美传媒AV在线| 操操吧亚洲乱伦视频| 国产伦乱91| 青青欧美在线| 秋霞福利网| 久久黄人人爽视频| 在线岛| 色婷婷影院| 亚洲欧美setu| 97操b| 人人操肉肉| 五月婷婷五月天| 久久久久78| 天天操妹子| 老熟女搡BBBB搡BBBB视频| 国产无套粉嫩白浆在| 美女高潮视频91| 亚洲色图8| 国产欧美另类久久久精品课程| 国产精品免费1区2区视频| 无码99| 亚洲日韩欧美一区二区| 久久在肏| 看一级特黄a大一片| 91N欧美| 国产自啪精品视频网站黑丝| 久久精品国产亚洲AV清纯| 欧美国产伊人久久久久| 99999精品成人| 天天综合~91| 小视频玖玖| 蜜臀亚洲中文| 狠狠入| 蜜乳AV网址| 亚洲 欧美 另类 日韩 人妻一区| sewuyueav| 日本色色的视频| 久日91在线| 人人模人人看| 日韩乱码Av| 91 偷| 国产精品熟女丝袜一区二区| 日本一天色道久久久精品视频| 我要色综合网| 婷婷丁香五月综合| 一摸二插三插| 午夜电影在线观看无码专区| 大香蕉色网| 狠狠久久手机视频精品| 婷婷日韩一区二区三区中文字幕在线| 97视频在线免费| 国岛片视频| 是还免费视频1727我| 久久受www免费人成| 日本丝袜美腿人妻九九| 蜜臀99久久精品久久久懂爱| 日本在线一二| 精品国产乱码久久久久久蜜臀| 91一起操| 99精品无码| 欧美啪啪女女| 中文字幕日韩情色| 国产欧美亚洲精品a第2页| 日本加勒比无码专区一二三| 中文字幕aⅴ在线视频| 亚洲资源网| 久妇网| 欧美日本成人一区二区| 大香蕉伊利av| 无遮挡男女激烈动态图| 后入 亚洲 美女 射| 人妻一区二区三区四区视频| 久久9精品视频| 绯色一区二区三区不卡少妇| 丝袜狠狠草尤物人妻av91| 青娱乐淫乱1314| 女人一区| 亚洲日韩美女中文字幕乱| 久久成人网站| 99热这里只有精品99| 丁香九月婷婷| 91精品人妻一区二区三区蜜桃臀 | 把腿张开老子CAO烂你| 美女骚尻视频| 丁香五月久久| 少妇久久久久久| 久久久久久久久久久久黄色| 国产黄色影片在线观看| 1024午夜激情男人的天堂| www.色操逼| 久久春色| 嫩草影院在线观看精品 | 国产福利精品最新在线| 嗯嗯啊啊视频一区二区三区| 日本97久久久精品| 国产极品久久久| 国产精品高潮久久AV| 国产地址二三| 在线五区| 91中文字幕在线观看| 国产99热| 久久久国产亚洲精品系列| 久久精品人妻一区二区三区| 大香蕉伊人久久| 张柏芝国产一区在线观看| 色色综合97| 日韩av乱伦| 色波多| 激情四射婷婷六月天| 99色色网| 亚洲自拍天堂| 久草资源在线| 福利在线视频一区二区| 97人人操人人干| 1769一区| 夜夜高潮夜夜爽国产伦精品| 亚洲AV乱码专区国产噜噜亚洲| 久久夜黄色无码A级大片| 操熟女91| 国产精品久久久久久久免牛肉蒲团| www激情| 中国一级操逼视频| 久久αⅴ| 久草久日| 妇女视频网站| 婷婷六月天| 久久夜黄色无码A级大片| 欧美日韩中文视频播放| 亚洲中文字幕一区| 亚洲av热热色| 亚洲精品 大香蕉| 国产精品自在自拍视频| 青娱乐二区免费| 加勒比中文av| 天天操熟妇| 亚州 综合 色图| 一牛影视久久久一区二区三区| 探花一区在线| 岛国网址国产| 思思视频免费看网站| 超碰97综合| 成人精品久久| 国产人妻精品一区二区三区秋霞| 亚洲图片欧美制度| 亚洲天天艹| www99热| 国产一区二区视频在线播放| 日韩操逼HD| 国产精品久久久久久久电影渣男| 欧美懂色综合网| 凹凸 69堂 在线播放| 久久 久久国内精品亚洲| 激情欧美日韩女同久久| 91狠狠综| 久久成人东京热人妻| 国产热av| 欧美人人天天网| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 麻豆综合一区av| 午夜小电影在线插入淫高潮| 91成人无码| 91日韩国产欧美亚洲另类精盘州至城都| 麻豆区久久久久亚| 在线五区| 91亚洲狠狠色| 国内外毛片在线观看| 久草线上视频免费看| 丝袜狂射91| 青青草中日韩在线| 99热国产| 中文字幕一二三av| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91亚洲人| 97天堂| www熟女乱伦com| 国产美女口爆吞精视频| 黄片免费视频2019| 高潮毛片无遮挡高清免费| 99久久久无码精品国产人| 亚洲自拍天堂| 长久操视频| 东北丰满熟女国产一区| 97超碰超碰| 欧亚无码视频| 天天草夜夜草高潮片| 操高情无码| 欧美婷婷五月天| 久久精品欧美一区蜜桃| 天天综合97| 人人爱人人乐人人操| 久久在线观看免费视频| 国产精品爱欲|