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

ARTICLE DETAIL

資訊詳情

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

STM32+MRAM替代SPI Flash:工業(yè)頻繁寫入存儲(chǔ)方案詳解

STM32+MRAM替代SPI Flash:工業(yè)頻繁寫入存儲(chǔ)方案詳解 前幾年接了塊返修的產(chǎn)線控制板現(xiàn)象很典型客戶說參數(shù)存不住有時(shí)候開機(jī)數(shù)據(jù)是上次的有時(shí)候直接恢復(fù)成出廠默認(rèn)值。板子主控就是STM32F446ZE程序里用一顆SPI NOR Flash存配方參數(shù)邏輯不復(fù)雜——上電讀、掉電寫??蓡栴}恰恰出在那個(gè)掉電寫上一天通斷幾十次每次都擦寫同一個(gè)扇區(qū)Flash的壽命很快見了底。后來我把方案換成了Everspin的MR25H40CDF一顆4Mbit的SPI接口MRAM和STM32F446ZE的SPI外設(shè)直接對(duì)接硬件改動(dòng)極小但存儲(chǔ)層的壽命問題一下就消失了。這篇文章就圍繞這個(gè)組合展開MR25H40CDF為什么適合工業(yè)現(xiàn)場(chǎng)頻繁寫入的場(chǎng)景它和STM32F446ZE怎么搭配驅(qū)動(dòng)怎么寫實(shí)測(cè)表現(xiàn)怎么樣以及我在實(shí)際部署里踩過的各種坑。如果你正在評(píng)估MRAM方案、準(zhǔn)備做參數(shù)存儲(chǔ)或工況記錄器或者只是單純想給嵌入式硬件知識(shí)補(bǔ)一塊拼圖這篇應(yīng)該能直接省去你翻手冊(cè)和反復(fù)試錯(cuò)的時(shí)間。1. 存儲(chǔ)選型背后的賬Flash的擦寫壽命扛不住工業(yè)現(xiàn)場(chǎng)1.1 一次真實(shí)的數(shù)據(jù)丟失排查先還原一下那臺(tái)設(shè)備的排查過程。板卡回來后我先量供電3.3V正常晶振正常SPI時(shí)鐘也有輸出。用示波器抓CS、SCK、MOSI看起來讀寫邏輯都在跑但讀回來的數(shù)據(jù)和寫入時(shí)對(duì)不上而且出錯(cuò)的地址每次都不一樣。后來我把SPI Flash單獨(dú)拆下來用編程器全片讀取發(fā)現(xiàn)好幾個(gè)扇區(qū)的狀態(tài)標(biāo)志位已經(jīng)異常部分頁編程后回讀就出錯(cuò)。這顆Flash規(guī)格書上寫的是十萬次擦寫壽命而設(shè)備一天開關(guān)機(jī)幾十次、每次掉電都要寫一小段運(yùn)行計(jì)數(shù)和參數(shù)滿打滿算一年下來同一個(gè)扇區(qū)就被擦寫了上萬次再加上程序里沒有做磨損均衡用一年出頭就接近壽命極限了。這其實(shí)是工業(yè)設(shè)備里很常見的隱性故障靜態(tài)壽命指標(biāo)看著夠動(dòng)態(tài)寫入頻率算一算就露餡了。我當(dāng)時(shí)還考慮過改固件加磨損均衡但產(chǎn)品已經(jīng)鋪出去了現(xiàn)場(chǎng)幾千塊板子要遠(yuǎn)程升級(jí)代價(jià)太大。最后決定在硬件層面換存儲(chǔ)介質(zhì)選型條件很明確SPI接口、掉電不丟、能扛高頻次寫入、容量不小于256KB。1.2 MRAM到底改了存儲(chǔ)機(jī)制的哪個(gè)環(huán)節(jié)MRAM的全稱是磁阻式隨機(jī)存取存儲(chǔ)器Magnetoresistive RAM核心存儲(chǔ)單元是磁性隧道結(jié)MTJ。每個(gè)bit存的是自由層磁化方向——一個(gè)方向代表0反方向代表1讀取時(shí)通過隧道磁阻效應(yīng)感知電阻高低。Flash和EEPROM存儲(chǔ)的是電荷寫入時(shí)要么需要先擦后寫Flash要么寫一個(gè)字節(jié)就要走一遍電荷泵EEPROM。電荷存久了會(huì)漏寫入大量電荷還會(huì)損耗氧化層壽命天然有限。MRAM不存電荷它存的是磁矩方向?qū)懭刖褪欠D(zhuǎn)自由層的磁化方向相當(dāng)于讓一個(gè)指南針指到新位置。這個(gè)翻轉(zhuǎn)過程不消耗存儲(chǔ)介質(zhì)本身所以擦寫壽命可以做到10的14次方量級(jí)而且寫入不需要先擦除直接覆蓋寫掉電后磁矩方向也不會(huì)憑空消失。用大白話理解Flash像一塊黑板寫新內(nèi)容之前必須先擦掉舊內(nèi)容而且黑板擦多了表面會(huì)壞MRAM像一排磁吸標(biāo)簽?zāi)阒恍枰褬?biāo)簽翻個(gè)面翻幾十億次標(biāo)簽本身也不會(huì)磨損。1.3 工業(yè)存儲(chǔ)方案對(duì)比MRAM并非唯一答案如果你在做選型我建議先把下面這張表看明白別一聽MRAM永不壞就無腦下單。MRAM貴而且貴得有理但很多場(chǎng)合其實(shí)用不上。特性MR25H40CDFMRAM常見SPI NOR FlashSPI EEPROM典型容量4Mbit512KB1Mbit~64Mbit16Kbit~2Mbit寫入方式字節(jié)/多字節(jié)直接覆蓋寫頁編程塊擦除字節(jié)寫但耗時(shí)較長擦寫壽命大于10^14次約10^5次/扇區(qū)約10^6次/字節(jié)寫入前是否需擦除不需要必須不需要掉電保持?jǐn)?shù)據(jù)保持能力強(qiáng)常溫約20年常溫約100年成本偏高低中等選型邏輯分三種情況只存配置文件一年改幾次那普通SPI Flash完全夠用別浪費(fèi)錢。需要頻繁記錄數(shù)據(jù)比如每秒寫一條工況記錄那Flash即便做磨損均衡也很痛苦EEPROM容量又太小MRAM是單芯片方案里最省心的。需要快速隨機(jī)改寫大塊數(shù)據(jù)同時(shí)要求掉電不丟MRAM幾乎是唯一不需要軟件做復(fù)雜均衡策略的選項(xiàng)。我當(dāng)時(shí)的核心需求就是高頻次、小數(shù)據(jù)量、持續(xù)多年跑MR25H40CDF的512KB容量又足夠我在里面做環(huán)形日志所以選它很自然。STM32F446ZE的SPI外設(shè)跑40MHz時(shí)鐘沒有壓力整張板子的BOM改動(dòng)也就是把一顆Flash換成一顆MRAM引腳兼容性稍作調(diào)整就行。2. MR25H40CDF與STM32F446ZE的硬件配合時(shí)鐘居然會(huì)超規(guī)格2.1 電氣連接與上電時(shí)序MR25H40CDF是標(biāo)準(zhǔn)SOIC-8封裝和常見SPI Flash的供電、地、SPI四線基本一致。我在STM32F446ZE上默認(rèn)用SPI1引腳分配如下STM32F446ZE引腳復(fù)用/模式MR25H40CDF引腳PA4GPIO輸出軟件NSSCS#PA5SPI1_SCKSCKPA6SPI1_MISOSOPA7SPI1_MOSISI3.3V—VDDGND—VSS注意MR25H40CDF的工作電壓是2.7V到3.6V和STM32F446ZE的3.3V供電域直接共用沒問題。VDD到GND之間要放一個(gè)0.1uF的去耦電容盡量靠近芯片引腳。原理圖上如果MRAM芯片有HOLD#和WP#引腳這兩個(gè)腳不能懸空分別用10k電阻上拉到3.3V。很多人在這一步偷懶結(jié)果現(xiàn)場(chǎng)出現(xiàn)莫名其妙的通信凍結(jié)或?qū)懕Wo(hù)后面第五章我會(huì)專門講。還有一個(gè)容易被忽略的上電時(shí)序問題MRAM內(nèi)部有上電復(fù)位邏輯主控剛上電的那幾百微秒里芯片可能還沒準(zhǔn)備好接收SPI命令。我的做法是在驅(qū)動(dòng)初始化函數(shù)里先延時(shí)10ms再發(fā)起第一次訪問。這個(gè)延時(shí)既照顧MRAM上電穩(wěn)定也覆蓋STM32F446ZE的復(fù)位和外設(shè)時(shí)鐘穩(wěn)定時(shí)間保守但可靠。2.2 SPI時(shí)鐘的超標(biāo)陷阱這里要重點(diǎn)說一個(gè)很多人踩過的坑SPI時(shí)鐘頻率配置。MR25H40CDF手冊(cè)明確最大SCK是40MHz3.3V供電時(shí)但STM32F446ZE的主頻是180MHzAPB2總線默認(rèn)90MHz。如果你在CubeMX里隨手把SPI1分頻設(shè)為2分頻SPI時(shí)鐘就是90/245MHz——超規(guī)格了。超2MHz聽起來不多但工業(yè)現(xiàn)場(chǎng)不是實(shí)驗(yàn)室溫度升高、線纜變長、信號(hào)完整性變差之后45MHz的時(shí)序余量會(huì)進(jìn)一步縮小。我之前調(diào)試時(shí)用40MHz跑沒問題換成另一批板子就偶發(fā)讀回0xFF最后查到是時(shí)鐘配置問題。要解決有兩種思路保守方案SPI1分頻設(shè)為4得到22.5MHz。對(duì)MRAM這種命令開銷很小的器件來說22.5MHz和40MHz的實(shí)際吞吐差距大約只有一倍記錄類應(yīng)用完全夠用。滿速方案把STM32F446ZE的系統(tǒng)主頻從180MHz降到160MHz此時(shí)APB280MHzSPI1設(shè)2分頻SPI時(shí)鐘正好40MHz。損失11%的CPU性能換SPI滿速對(duì)大多數(shù)數(shù)據(jù)采集類場(chǎng)景是劃算的。如果你的系統(tǒng)因?yàn)樗惴ㄅ芊直仨氭i在180MHz那就老老實(shí)實(shí)選22.5MHz不要賭超頻。MR25H40CDF在實(shí)驗(yàn)室里跑45MHz大概率也能工作但工業(yè)產(chǎn)品要的是所有樣本、全溫度范圍、全生命周期都穩(wěn)定超規(guī)格就意味著交付風(fēng)險(xiǎn)。2.3 PCB布局上的三條建議這塊板子后來改版時(shí)我在PCB布局上做了三件事SPI四條信號(hào)線遠(yuǎn)離電機(jī)驅(qū)動(dòng)、繼電器、開關(guān)電源的電感走線尤其SCK和MOSI。MRAM寫入動(dòng)作是通過電流翻轉(zhuǎn)磁矩實(shí)現(xiàn)的強(qiáng)干擾環(huán)境下如果時(shí)鐘沿被毛刺污染命令解析就會(huì)錯(cuò)位。每根SPI線上串聯(lián)33歐姆電阻靠近MCU端放置。這能抑制振鈴尤其是在線纜長度超過10cm的場(chǎng)景下效果比單純調(diào)低SPI時(shí)鐘更明顯。MRAM的VDD腳除了0.1uF退耦電容我再加了一顆4.7uF鉭電容。雖然這顆芯片本身功耗不高但STM32F446ZE在SPI傳輸時(shí)電平翻轉(zhuǎn)速度快電源紋波會(huì)通過VDD耦合到MRAM內(nèi)部參考電路加大電容后讀寫數(shù)據(jù)穩(wěn)定性有明顯改善。3. 驅(qū)動(dòng)代碼SPI讀寫MRAM的三板斧與三個(gè)坑3.1 先認(rèn)指令沒有擦除概念的SPI存儲(chǔ)MR25H40CDF的指令集和常見SPI Flash很接近如果你寫過W25Q系列上手基本無痛。核心指令如下指令名操作碼說明WREN0x06寫使能WRDI0x04寫禁止RDSR0x05讀狀態(tài)寄存器WRSR0x01寫狀態(tài)寄存器READ0x03讀數(shù)據(jù)WRITE0x02寫數(shù)據(jù)最大的區(qū)別就是MRAM沒有頁編程、沒有扇區(qū)擦除、沒有狀態(tài)寄存器里的BSY位。寫任何地址直接發(fā)WRITE指令寫完拉高CS就算完成不需要等待內(nèi)部擦寫完成。地址字段方面MR25H40雖然是4Mbit容量但指令格式使用的是24位地址字段其中只有低19位有效A23到A19填0。如果你的批次手冊(cè)寫明地址字段是2字節(jié)部分早期Everspin型號(hào)確實(shí)如此把地址發(fā)送次數(shù)改成2次即可這也是移植驅(qū)動(dòng)時(shí)第一個(gè)要核對(duì)的地方。3.2 驅(qū)動(dòng)代碼骨架下面是用STM32 HAL庫寫的驅(qū)動(dòng)骨架。我習(xí)慣把CS用普通GPIO控制而不是SPI外設(shè)的硬件NSS原因后面會(huì)說。#define MRAM_CMD_WREN 0x06 #define MRAM_CMD_WRDI 0x04 #define MRAM_CMD_RDSR 0x05 #define MRAM_CMD_WRSR 0x01 #define MRAM_CMD_READ 0x03 #define MRAM_CMD_WRITE 0x02 #define MRAM_CS_LOW() HAL_GPIO_WritePin(MRAM_CS_GPIO_Port, MRAM_CS_Pin, GPIO_PIN_RESET) #define MRAM_CS_HIGH() HAL_GPIO_WritePin(MRAM_CS_GPIO_Port, MRAM_CS_Pin, GPIO_PIN_SET) static void mram_delay_us(uint32_t us) { // 簡易阻塞延時(shí)也可以用定時(shí)器微秒延時(shí)替代 for (volatile uint32_t i 0; i us * 40; i) {} } static uint8_t mram_read_status(void) { uint8_t cmd MRAM_CMD_RDSR; uint8_t st 0xFF; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 10); HAL_SPI_Receive(hspi1, st, 1, 10); MRAM_CS_HIGH(); return st; } static void mram_write_enable(void) { uint8_t cmd MRAM_CMD_WREN; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 10); MRAM_CS_HIGH(); mram_delay_us(5); // 讓W(xué)REN指令在CS高電平后可靠鎖存 } static void mram_send_addr(uint32_t addr) { uint8_t buf[4] { (addr 16) 0xFF, (addr 8) 0xFF, addr 0xFF, 0 }; // 上面buf[3]是湊數(shù)實(shí)際發(fā)送前3字節(jié)即可 HAL_SPI_Transmit(hspi1, buf, 3, 10); } void mram_write_bytes(uint32_t addr, const uint8_t *data, uint32_t len) { uint8_t cmd; if (addr len 512 * 1024) return; mram_write_enable(); cmd MRAM_CMD_WRITE; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 10); mram_send_addr(addr); HAL_SPI_Transmit(hspi1, (uint8_t *)data, len, 1000); MRAM_CS_HIGH(); mram_delay_us(1); // 留出極短的內(nèi)部穩(wěn)定時(shí)間下一筆操作前CS已拉高 } void mram_read_bytes(uint32_t addr, uint8_t *buf, uint32_t len) { uint8_t cmd MRAM_CMD_READ; if (addr len 512 * 1024) return; MRAM_CS_LOW(); HAL_SPI_Transmit(hspi1, cmd, 1, 10); mram_send_addr(addr); HAL_SPI_Receive(hspi1, buf, len, 1000); MRAM_CS_HIGH(); }這里有一個(gè)和Flash驅(qū)動(dòng)很不一樣的地方Flash寫之前要等BSY位清0MRAM不需要。我在驅(qū)動(dòng)里保留了寫完之后的一個(gè)微秒級(jí)延遲純粹是為了讓CS拉高沿之前所有數(shù)據(jù)字節(jié)都已穩(wěn)定送入芯片這個(gè)習(xí)慣在多字節(jié)連續(xù)寫時(shí)能明顯減少偶發(fā)丟幀。3.3 CS/NSS管理的工程細(xì)節(jié)為什么我堅(jiān)持用GPIO控制CS而不是STM32的NSS硬件腳三個(gè)原因第一MRAM命令執(zhí)行要求CS在整個(gè)命令序列期間穩(wěn)定拉低如果硬件NSS配合不當(dāng)在SPI FIFO空、時(shí)鐘暫停時(shí)NSS的自動(dòng)翻轉(zhuǎn)可能會(huì)把MRAM的命令狀態(tài)機(jī)打斷。第二硬件NSS在多從設(shè)備掛同一SPI總線時(shí)很難管理而GPIO方式可以任意擴(kuò)展到掛Flash、掛SD卡、掛傳感器只要在切換CS之前確保上一個(gè)設(shè)備的CS已經(jīng)拉高總線就是干凈的。第三代碼調(diào)試方便。GPIO控制的CS在邏輯分析儀上一眼就能看出哪個(gè)階段拉低了、哪個(gè)階段拉高了排查問題比黑盒的硬件NSS直觀得多。另外寫使能指令和寫數(shù)據(jù)指令之間CS必須有一次拉高。這是MRAM和Flash的一致要求。我看到過不少剛接觸MRAM的工程師把WREN和WRITE連在一個(gè)CS低段里發(fā)結(jié)果寫入完全無效。我在上面代碼里特意把mram_write_enable()里的CS拉高和下一次CS拉低之間留了5us就是為了保證這一點(diǎn)。4. 實(shí)測(cè)數(shù)據(jù)讀得快、寫得穩(wěn)、掉電不丟4.1 吞吐性能實(shí)測(cè)我們?cè)谧约旱臏y(cè)試板上把MR25H40CDF用40MHz SPI時(shí)鐘接在STM32F446ZE上連續(xù)讀寫512字節(jié)塊做了一組測(cè)試操作耗時(shí)備注讀512字節(jié)約120us含CS切換和地址發(fā)送寫512字節(jié)約130us含WREN和CS切換寫1字節(jié)約8us純軟件調(diào)用開銷占比更大讀1字節(jié)約7us同上換算下來40MHz時(shí)鐘下寫512字節(jié)的吞吐量大約4MB/s。對(duì)于工況記錄、參數(shù)備份這類應(yīng)用完全夠用。我拿同樣場(chǎng)景對(duì)比過一顆常見的16Mbit串行Flash讀速度差不多但寫512字節(jié)需要先擦除一個(gè)4KB扇區(qū)再頁編程四次總耗時(shí)接近10ms是MRAM的七十多倍。這就是兩者在頻繁寫入場(chǎng)景下最本質(zhì)的差距。如果你用22.5MHz的SPI時(shí)鐘讀寫512字節(jié)大概會(huì)到200us左右也遠(yuǎn)快于Flash的擦寫路徑。所以在速度上MRAM比Flash更適合高頻小包寫入這一點(diǎn)實(shí)測(cè)下來非常明顯。4.2 掉電與數(shù)據(jù)保持實(shí)測(cè)掉電測(cè)試我做了兩組。第一組是正常寫數(shù)據(jù)等寫完拉高CS后立刻斷電再上電讀回全部正確。第二組是人為在SPI傳輸過程中切斷電源模擬最惡劣情況重新上電后發(fā)現(xiàn)已經(jīng)完整進(jìn)入芯片的數(shù)據(jù)段保持住了沒有出現(xiàn)整個(gè)扇區(qū)全毀的情況。這和Flash掉電損壞不太一樣。Flash在擦除過程中掉電整個(gè)扇區(qū)可能處于半擦狀態(tài)恢復(fù)過來往往是大面積的0xFF或亂碼。MRAM的寫入是每個(gè)bit獨(dú)立翻轉(zhuǎn)磁矩不會(huì)有擦除一半這種中間態(tài)所以掉電破壞范圍通常局限于正在傳輸?shù)哪且恍《螖?shù)據(jù)。但別高興太早。雖然硬件層面不容易全盤損壞但在傳輸中途掉電這一幀數(shù)據(jù)可能只有前幾個(gè)字節(jié)寫進(jìn)去了。所以我在應(yīng)用層做了一件事每條記錄都帶長度、序列號(hào)和CRC16讀回來先校驗(yàn)校驗(yàn)不過就丟棄或標(biāo)記為異常。MRAM省了擦除的麻煩但數(shù)據(jù)完整性校驗(yàn)還是得靠軟件來兜底。4.3 長期寫入后的磨損表現(xiàn)MR25H40CDF的擦寫壽命標(biāo)稱大于10的14次方次這是什么概念假設(shè)你每秒寫一次一年約3153萬次10的14次方次可以連續(xù)寫3萬多年。相比之下一顆Flash如果每秒寫同一個(gè)扇區(qū)一次十萬次壽命撐不過28小時(shí)。就算打個(gè)折按10的11次方次算也能寫三十年。在工業(yè)設(shè)備普遍設(shè)計(jì)壽命5到10年的背景下MRAM的磨損基本可以忽略不計(jì)不用再做磨損均衡。這讓代碼結(jié)構(gòu)變得異常簡單不需要建立塊的擦除隊(duì)列不需要維護(hù)磨損表直接把整個(gè)容量當(dāng)成一個(gè)大數(shù)組用就行。5. 工業(yè)現(xiàn)場(chǎng)的幾個(gè)隱藏坑版本、HOLD#、掉電競態(tài)5.1 溫度等級(jí)和絲印別選錯(cuò)MR25H40CDF這個(gè)后綴里的C在Everspin的命名規(guī)則里通常表示商業(yè)級(jí)溫度范圍0到70攝氏度。很多工業(yè)設(shè)備機(jī)箱夏天就能到60度如果板卡靠近發(fā)熱源芯片表面溫度很容易超過70度這時(shí)候商業(yè)級(jí)版本就在超范圍工作。選型時(shí)一定要確認(rèn)物料編碼對(duì)應(yīng)的溫度等級(jí)。工業(yè)級(jí)版本一般為-40到85攝氏度或者更寬價(jià)格會(huì)有差異但相比整機(jī)返修成本這點(diǎn)差價(jià)根本不值一提。我自己的習(xí)慣是在BOM表里把溫度等級(jí)寫進(jìn)型號(hào)備注防止采購替換成商業(yè)級(jí)版本。另外到貨后抽測(cè)幾顆在高溫箱里跑到85度連續(xù)讀寫確認(rèn)絲印和實(shí)際規(guī)格一致再批量上線。5.2 HOLD#與WP#不接就是給偶發(fā)故障留門這是我在第一版板子上踩過的實(shí)坑。MR25H40CDF的8腳封裝如果帶HOLD#這個(gè)引腳一旦被拉低SPI通信會(huì)暫停在當(dāng)時(shí)的電平狀態(tài)SCK繼續(xù)翻轉(zhuǎn)也沒用。如果板子上這個(gè)腳懸空遇到上電時(shí)序異常、外部干擾或者M(jìn)CU的IO口誤配置HOLD#就可能被噪聲拉到低電平結(jié)果就是通信偶發(fā)卡死復(fù)位后才能恢復(fù)。WP#腳同理。WP#拉低時(shí)如果狀態(tài)寄存器啟用了塊保護(hù)寫操作會(huì)被直接忽略。雖然我們初始化時(shí)序里一般會(huì)把狀態(tài)寄存器清0但懸空的WP#一旦受到干擾配合WRSR帶入的意外位可能出現(xiàn)寫操作完全無響應(yīng)但讀正常的詭異現(xiàn)象。所以我的方法是HOLD#和WP#都接10k電阻上拉到3.3V并且在原理圖評(píng)審時(shí)明確標(biāo)注此腳不可懸空。如果你手頭的封裝確實(shí)沒有這兩個(gè)腳那也要以數(shù)據(jù)手冊(cè)的引腳定義為準(zhǔn)確認(rèn)后再?zèng)Q定。5.3 傳輸競態(tài)與中斷打斷STM32F446ZE的SPI1支持DMA我最初圖省事直接把大塊數(shù)據(jù)讀寫放在中斷回調(diào)里做。結(jié)果發(fā)現(xiàn)一個(gè)競態(tài)當(dāng)MRAM正在通過DMA傳輸時(shí)如果高優(yōu)先級(jí)中斷比如定時(shí)器中斷打斷而驅(qū)動(dòng)代碼又沒有處理重入MRAM的片選可能被意外拉高或者SPI外設(shè)的FIFO被新的傳輸請(qǐng)求破壞。這里我的建議是分情況處理小數(shù)據(jù)量比如幾個(gè)字節(jié)的狀態(tài)記錄直接阻塞傳輸不需要DMA簡單可靠。大塊數(shù)據(jù)比如512字節(jié)日志導(dǎo)出用DMA傳輸?shù)珎鬏斊陂g關(guān)閉可能打斷SPI的外設(shè)中斷或者在SPI驅(qū)動(dòng)層加上互斥鎖。不要在定時(shí)器中斷里寫MRAM。定時(shí)器中斷的頻率往往不固定掉電瞬間可能正好撞上寫操作引入的不可控因素太多。掉電保存那點(diǎn)數(shù)據(jù)在主循環(huán)里處理就夠。5.4 數(shù)據(jù)完整性別把不掉電當(dāng)成不會(huì)丟幀MRAM不丟電荷但SPI傳輸本身有出錯(cuò)的可能。我在前面提到的試驗(yàn)里即使在正常上電狀態(tài)下連續(xù)10萬次寫入里偶爾也會(huì)讀回一個(gè)壞幀——大概率是線纜干擾或接觸不良造成的。如果不在應(yīng)用層做校驗(yàn)壞幀會(huì)被當(dāng)成真實(shí)數(shù)據(jù)存下來等到下次讀取時(shí)才會(huì)暴露。這也是我在第六章的日志設(shè)計(jì)里堅(jiān)持要加CRC和序列號(hào)的原因。MRAM只是把存儲(chǔ)介質(zhì)的可靠性提升到了接近極限但總線、電源、軟件這整條鏈路仍然需要常規(guī)的容錯(cuò)手段這一點(diǎn)希望每個(gè)讀者都記住。6. 完整用例把STM32F446ZEMR25H40CDF做成工況記錄器6.1 存儲(chǔ)布局設(shè)計(jì)最后用一個(gè)完整的應(yīng)用例子收尾。假設(shè)要做一個(gè)工業(yè)設(shè)備工況記錄器每秒鐘記錄一次通道數(shù)據(jù)到MRAM掉電不丟上電后能讀出最近的N條記錄。我的存儲(chǔ)劃分是區(qū)域地址范圍用途日志頭部0x00000 ~ 0x000FFmagic、當(dāng)前寫指針、版本號(hào)記錄區(qū)0x00100 ~ 0x7FFFF環(huán)形存放記錄幀每條記錄幀設(shè)計(jì)為24字節(jié)#pragma pack(push,1) typedef struct { uint32_t seq; // 流水號(hào)判斷連續(xù)性 uint32_t timestamp_ms; // 毫秒時(shí)間戳 float ch0; // 通道0采樣值 float ch1; // 通道1采樣值 uint16_t status; // 設(shè)備狀態(tài)字 uint16_t crc16; // 對(duì)前面22字節(jié)的CRC16校驗(yàn) } env_record_t; #pragma pack(pop)環(huán)形日志的基本思想是頭部記錄的數(shù)據(jù)寫指針指向下一個(gè)要寫入的槽位每寫一條記錄就把指針加1超過總槽位數(shù)就回卷到頭。這樣最多保留最近約2萬余條記錄相當(dāng)于5到6個(gè)小時(shí)的連續(xù)工況足夠現(xiàn)場(chǎng)分析問題了。6.2 關(guān)鍵代碼走讀寫入邏輯非常簡潔#define LOG_MAGIC 0x4D52414D #define LOG_HEAD_ADDR 0x00000000 #define LOG_DATA_BASE 0x00000100 #define LOG_SLOT_CNT ((512 * 1024 - 0x100) / sizeof(env_record_t)) static void log_append(const env_record_t *rec) { log_head_t head; mram_read_bytes(LOG_HEAD_ADDR, (uint8_t *)head, sizeof(head)); if (head.magic ! LOG_MAGIC) { head.magic LOG_MAGIC; head.idx 0; } uint32_t slot_addr LOG_DATA_BASE head.idx * sizeof(env_record_t); mram_write_bytes(slot_addr, (const uint8_t *)rec, sizeof(*rec)); head.idx; if (head.idx LOG_SLOT_CNT) head.idx 0; mram_write_bytes(LOG_HEAD_ADDR, (const uint8_t *)head, sizeof(head)); }注意一個(gè)關(guān)鍵順序先寫記錄再寫頭部指針。這樣即使寫入記錄后、更新頭部前掉電下次上電讀到的還是舊的寫指針舊的槽位會(huì)被下次寫入覆蓋最多丟一條記錄不會(huì)產(chǎn)生指針指向半條記錄的情況。MRAM的寫速度本來就快這個(gè)順序在工程上非常實(shí)用。讀取側(cè)邏輯就是從頭部的idx倒推最近一條記錄逐條回讀并校驗(yàn)CRC。校驗(yàn)失敗就跳過并從更早的記錄繼續(xù)保證顯示給用戶的永遠(yuǎn)是完整可用的數(shù)據(jù)。6.3 驗(yàn)證腳本與上線檢查清單這塊板子量產(chǎn)前我要求測(cè)試組跑過以下驗(yàn)證流程你可以直接抄走焊接后先讀RDSR確認(rèn)狀態(tài)寄存器為0x00確保沒有意外啟用塊保護(hù)。全地址寫0xA5、0x5A交替圖案回讀比對(duì)這一步能暴露地址線和數(shù)據(jù)線的焊接問題。隨機(jī)地址連續(xù)執(zhí)行100萬次單字節(jié)寫回讀抽查監(jiān)控是否出現(xiàn)偶發(fā)壞幀。在寫入過程中用開關(guān)直接切斷電源重復(fù)100次上電后檢查日志頭部和記錄區(qū)的CRC確認(rèn)黑名單記錄被正確跳過。在高低溫箱里跑-40到85攝氏度循環(huán)同時(shí)執(zhí)行通斷電壓力測(cè)試重點(diǎn)是觀察SPI時(shí)鐘在極限溫度下是否出現(xiàn)誤碼。我自己在實(shí)際操作中的體會(huì)是MRAM方案真正省心的地方不是永不壞這個(gè)宣傳點(diǎn)而是整個(gè)存儲(chǔ)層的設(shè)計(jì)從圍繞壽命做各種保護(hù)變成了直接把NVM當(dāng)普通RAM用。當(dāng)你不需要考慮擦除隊(duì)列、磨損均衡、掉電半擦狀態(tài)這些事之后代碼邏輯會(huì)清爽非常多。當(dāng)然該做的CRC校驗(yàn)、上電時(shí)序、引腳處理一樣不能少把這些細(xì)節(jié)做到位STM32F446ZE加MR25H40CDF這套組合才能在工業(yè)現(xiàn)場(chǎng)安安穩(wěn)穩(wěn)跑上很多年。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产乱伦亚洲| 亚洲黄色| 国产原创剧情在线丝袜 | 日日夜夜草草草| 欧美爱三级日韩久久| 天天综合网AV91| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 欧美性爱在线无码| 午夜福利 成人 91| 啊啊啊啊操死我了| 超碰成人国产| 尤物网址| 日本一级婬片试看三分钟| 好涩综合| 999国产精品999久久久久久| 9999久久久久| 天天享受天天看| 日韩精品视频在线观看一卡二卡| 另类TS人妖一区二区三区| 久久久久久九九九九九九| 国产suv精品一区二区四区999| 亚洲最新av无码成人精品区| 免费观看国产小粉嫩喷水精品午| 九久精品| 狠狠躁久久躁| 后入式999| 狠狠2050在线观看| av一区二区三区四区五区久草臀| 精品无码久久久| 国产亚洲日本精品在线| 日本羞羞的视频在线播放| 久久婷婷一区| 97久久久久久久久久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 亚洲少妇免费视频\| 成人网欧美风情| 日韩亚洲中文字幕在线| 国产一级舔足在线观看| 精品视频一二三中文| 99热国产| 中文字幕-区二区三区四区视频中国| 性色一线| 久久本道| 中文字幕精品丝袜| oumeisetupian| 国产亚州精品美女久久久免费| 2023天天操夜夜操| 日韩熟女无码| 两女互慰AV高潮喷水在线观看| 91M一社| 亚洲欧美综合网 | 18禁免费视频| 午夜视频久久久久一区| 欧美日产国产在线成人第一区| 中英熟女操女| 青娱乐国产精品| 乱欲一区二区| 久9视频| 久久性爱城| 伊人五月天| 午夜精品久久久久久久男人的天堂| 九九热视频在线观看| 欧美后进式| 青草青青久久久久久国产| 久久婷婷五月综合| 久久久艹艹艹| 天堂射| 夜夜嗨免费视频| 91九色丰满高潮| 九一综合网| 台湾佬中文娱乐网久久久久久久久久com| 99蜜桃臀亚洲成人在线观看| 亚洲性综合| 久久9免费视频| 欧美成人精品欧美一级乱黄一区二…| 久久久97| jizzjizz欧美| 中文字幕成人理论在线| 九九黄色网| 亚洲第一页欧美| 欧美色图私拍91| 亚洲诱惑| 日本熟妇人妻一区二区三区| 久久久精品网站| 人人艹亚洲| 国产强奸超碰AV| 67914亚洲精品| 97爱啪| 69精品| 九九精品无码专区免费| 玖玖视频在线资源一区二区三区| 少妇色综合| 少妇综合网| 日韩激情中文字幕有码| 亚洲综合888| 男女香蕉一区二区| 91视频伊人| 香蕉一区二区三区在线视频| 亚洲中文字幕av| 国产精品4p在线观看| 国产精品欧美日韩久久| 午夜激情床戏激情| 大香蕉草草| 亚洲性爱免费电影| 国产精品乱人伊人网| 超碰偷拍| 国产成人精品无码久久| 久久超碰亚洲人| 午夜亚洲| 亚洲AV无码久久久国产精品| 蜜桃精品一区二区三区久在线| 综合欧美亚洲| 金莲网址| www.狠狠干.coom | 色噜噜狠狠色综无码久久合欧美| 亚洲天堂无码| 亚洲色图伊人网| 九九九偷拍| 欧美大香蕉同搞| 久久免费看高潮毛片韩国| 中出20p| 日韩精品人妻一| 黑丝91视频| 综合亚洲网| 美国一区二区免费视频| 色男人色天堂东京热| 国产捆绑一区| 91丝袜美女视频| 伊人精品久久网站| 日韩电影天堂视频二区三区| 国产精品盗摄 偷窥盗摄| 中文字幕日韩国产传媒欧美精品| 啊啊啊好舒服视频| 夜夜高潮夜夜爽高清视频一 | 熟妇的味道HD中文字幕| 经典丝袜一区| 人人摸人人干| 三男一女不戴套的A片| 97国伦国色| 女人天堂av在线播放| 97精品国产97久久久久久户外免费| 亚洲精品蜜桃久久久| 国产aⅴ无码片毛片一级网站| 东京成人一区| 欧美东京热精品A∨| 婷婷另类小说| 日韩人妻 中文字幕| 国产97在线播放| 丁香六月东京热| 中文字幕av一区二区三区人妻少妇 | 欧美国产伊人久久久久| 少妇的嫩逼图片| 在线观看AV不卡| 日本成人A片免费看| 亚洲丝袜二区在线| 国产1024在线播放| 九一精品牛牛一区二区| 国产综合操逼高清| A级国产欧美激情在线| 久久婷婷亚洲欧| 91啪啪| 一中国女人毛片水真多| 国产精品操| 亚洲综合贴图91| 久99热| 18禁中文字幕| 国产精品久久久久久久AV大片| 伊人色综合欧美| 久久久久13| A级毛片在线看免费| 欧美性五月| 国产人伦精品一区二区三区| 日本女人操逼| 精品人妻av在线播放| 青青草好吊色| 中文字幕精品码亚洲| 精品乱码久久久久| 欧美日韩国产中文精品字幕自在自线, | 欧美网站免费| 全免费a敌肛交毛片免费| 91欧美综合| 91美女视频电影| 青青草五月天| xxx亚洲午夜天堂| 91精品丝袜在线观看| 性饥渴少妇av无码毛片| 亚洲高清色综合| 99日免费视频中文字幕| 国产后入| 成人小说视频在线精品欧美| 黑人精品XXX一区一二区| 天天干电影| 中出后入| 人妻黑丝袜电影| 九九九综合精品| 欧美亚洲丝袜人妻制服99| AV污污污污| 天堂俺去俺来也www久久婷婷| 白嫩少妇| 一区二区三区免费视频入口| 99re免费| 欧美偷拍区| 操b在线观看| 国内伊人久久久久久网站视频| 97在线播放| 久久精品高清无码一区| 亚洲男人天堂2| 自拍第一页| 色婷婷一区二区三区久久午夜成人不| 中文字幕一区二区三区四五区| 91精品久久久久久久久久| 密臀视频一区二区三区| 操死我了嗯嗯嗯| 精品久久九| 久久宗合亚洲| 精品玖九九久| A级片日韩欧美国产欧美视频精选观看| 999精品乱码| 少妇高潮九九九九| 无码免费在线观看黄色片| 新亚洲无码| 国产欧美在线观看免费观看| 另类TS人妖一区二区三区| 无码人妻一区二区三区色欲aⅴ| 亚洲欧洲精品视频发布| 国产少妇肉丝在线观看| 91色人| 91强热人妻| 一区二区激情国产熟女| 日日碰视频网| 色网色网色网色网色网色| 神马麻豆福利院| 亚洲图片欧美| 摸奶性爱视频网站在线免费播放| 秋霞蝌科网日本一区| 黄片无码在线制服| 亚洲男人的天堂亚洲| 91暧暧| 天美传媒av在线| 激情内射| 人人玩人人添人人澡免费| 北约熟女超碰| 97人肏| 欧美精品三区| 蜜臀99久| 亚一综合久久久久久久久久| 九九热九九| 国产综合久久久鬼色| 狠狠操狠狠燥| 被窝影院午夜看片无码| 中文字幕高清20页视频| 在线小说视频一区| 欧美日韩激情无码专区| 精品夜夜澡人妻无码| 日韩精品三级片长长久久| 欧美,日韩,中文,另类| 2017亚洲天堂| 爱av免费| 60秒试看最爽10分钟网站| 综合激情一一91| 欧美一级三级| 91丝袜美腿片| 国产高清视频无码在线| 日韩人妻少妇中文字幕| 天天综合网视频91| 欧美性生活免费网| 97青青操视频| 日韩视频中文字幕| 色五月激情综合网| 亚洲AV不卡在线观看| 无码久久亚洲高清,| 色香蕉影院| 亚洲在高跟鞋自慰久久在色线| 精品欧美乱码久| 成人三级片无码| 久插综合| 另类TS人妖一区二区三区| 99热在线播放| 青青草公开在线免费不卡视频| 欧美日韩免费性爱| 大香蕉男人的天堂| 欧美综合娱乐久久| 亚洲精品97中文字幕| 国产91av在线播放| 中文字幕-区二区三区四区视频中国| 91国产丝袜白虎| 睡产熟女乱伦| 91亚洲狠狠色| 天天综合网站| 神马麻豆福利院| 国产无马av| 久久9久久| 免费的黄片wwwwww| 国产综合久| av资源在线观看少妇| 伊人久久亚洲色欲综合网站 | 农村女一级毛卡片| 翘臀vidoes| 亚洲色综合| 大香蕉伊人网WWWn0n| 亲子敌伦对白在线播放| 午夜成人爽爽爽爽A片李冰冰| 中文字幕在线观看丝袜| 天天天肏屄肏屄肏屄欧美欧美| 99日精品欧美国产| 欧美综合综合| 9久综合网| 涩综合导航| 殴洲老熟女| 99色热国产视频精品| 欧美色图在线视频少妇| 亚洲少妇喷视频看| 成人一二| 97热视频在线观看| 久久亚洲影院一区二区| 黄色一区二区秘书性感| 好一吊区二区| 精品国产乱码久久久久久久久1| 起碰97| 久草色悠悠在线视频| 欧美成人A天堂片在线观看| 久久久久婷婷精品av电影| 婷婷午夜| 天天夜躁日日躁狠狠2002| 不卡一区视频| 人妻久久久久久| 亚洲黄片免费在线播放| 久久妇| 婷婷五月天在线观看| 欧美Ⅴ性爱| 国产99999久久精品| 99re视频在线观看这里只有精品| 伊人久久综合影院精品久久久| 亚洲91射| 亚洲影院小综合| 久久老子无码午夜伦不卡| 国产一区二区二区按摩精品啪视频| 亚洲中文字幕日产无码久久| 精品一区二区2| 亚洲 欧美 91| 国产激情在线| 日欧操屄| 一起草三级AV电影在线观看| 日日骚av| 青青草手机在线免费观看| 性做久久久久久免费观看软件| 射久久| 久草精品一区| 超碰色中文| 在线国产探花| 亚洲操逼视频网站| 日本十八禁免费看污网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 91成人社区| 99九九精品| 日日夜夜精品视频| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 天天日天天射天天干| 五月婷婷无码| 国产精点久久久成人| 在线观看一级α片刺激高潮视频| 蜜臀久久久99久久久久 | 思思热在线观看| 乱伦av麻豆| 91一区二区三区蜜桃| 黄色成年| 欧美成人精品一区| 蜜区区视频79 | 欧美日韩性爱无码| 亚洲欧美日韩电影网站一区| 丝袜喷水在线| 亚洲自拍另类丝袜综合| 国产污视频麻豆传媒一区二区| 俺去也婷婷| 在线视频日韩欧美国产| 国产日本久久免费精品| 日韩精品视频在线观看一卡二卡| 亚欧无码在线| 333kkkk·亚洲com久久| 午夜福利免费精品视频| 殴美在线AⅤ| 91社区拍啪人妻| 亚洲免费成人在线高清无码视频| 欧美极品性爱天天射| 在线免费观看日韩一区| 婷婷丁香五月天综合东京热| 欧美黑人精品一区二区| 精品伊人久久久大香线蕉小说| 人人人人插| 欧美另类综合久久| 一区二区三区精品视频| 蜜乳av首页| 国产久久久久久久久一区二区| 久久香蕉国产线看观看猫咪av| 国产精品一级毛片不卡视| 在线可观看的黄色网址| 色婷婷五月综合激情中文字幕| 精品国产肉丝袜在线拍国语| 激情第四色| 日韩一999精品| 日韩av三四区| 国产精品毛片| 欧美夜夜| 亚洲天堂人妻熟妇视频| 色色色色综合网| 69人妻精品一区二区绯色| 99re这里只有精品中心播放| 今日头条成人一区二区三区四虎精品| 亚洲欧美在线综合| 亚洲小说视频| 亚洲国产精品有声| 五月天婷婷激情| 国产精品肉丝自拍| 久久国产999| 久草看看看| 视频一区二区免费在线| 黄色网址在线免费观看| 高凊专区人人操| 亚州日韩97| 欲香欲色综合天天伊人| www.久久制服糖| 亚洲第一无码播放立川理惠| 精品人人| www.成人无码| 久久精品国产亚洲妲己影视| 日韩av乱伦| 久久九九一区二区三区成人| 清纯唯美综合| 日本性爱少妇| 96爱综合| 久久九色| 日日夜夜狠狠| 国产精品69久久久久孕妇欧美| 性一级黄色录像片网站导航| 美国一区二区免费视频| 中日韩久久人妻一区二区| 欧美色亚洲色| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 熟妇高潮一区二| 欧美性暴力猛交| 国产亚洲精品av一区| 国产精品白虎| 国产精品丝袜在线| 亚洲色图亚洲无码强奸乱伦| 久久爱超碰网| 强被迫伦姧在线观看无码网站| 亚洲日韩国产欧美综合v| 欧美性战999| 春色综合网| 福利色色| 青青草在线视频美女| 国产精品爽爽v| 亚洲城人男人的天堂| 操久久久久| 日本操逼视频导航| 超碰这里只有精品| 日韩中文字幕国产| 美女的肌被草喷水视频| 国产a片操逼| 歐美一級亂黃99在綫精品| 久久久久99精品成人片蜜臀| 亚洲夜夜欢无码一区二区| 色香欲天天天天综合色| 伊人网综合在线视频| 精品小视频在线| 日本人妻伦在线中文字幕| 综合久草| 国产亚洲深夜激情| 亚洲瓯美色图| 成年人黄色小视频网站| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美性夜| 天无日色综合| 国产精品直播在线观看直播| 1区2区3区在线视频| 日韩欧美亚洲自拍偷拍| 69人妻精品丰满熟女区| 性影在线视频| 丝袜视频网国产90| 狠狠狠狠狠| 色网色网色网色网色网色| 天堂蜜桃无码视频一区二区| 草草电影院| 超碰99热中文字幕| 日本激情免费大片| 凹凸 69堂 在线播放| 99热精品免费| 国产一区二区在线播放量| 亚洲免费97免费| 午夜福利免费精品视频| 欧美综合色,www| 欧美78p| se吧提供国产乱老熟视频胖女人| 欧美成人色| 亚洲一区二区精品福利| 亚洲男人天堂手机版| www.欧精品| wwwxxx日本爽| 天美传媒麻豆一区二区三区国产精| 色综合色| 内射老妇BBWX0C0CK| 欧美日韩亚洲电影| 开心五月婷婷| 国产精品美女在线一区| 东北女人高潮视频| 极品粉嫩少妇视频| 男人的天堂亚洲| 一级婬片120分钟试看| 人澡逼| 国产丝袜美女诱惑| 欧美黄色片AAAAA| 亚洲春色激情小说| 精品人妻中文字幕4399| 啊啊啊免费| 屁股久久久久久久久| 人人喜人人妻| 亚洲精品国产精品乱码不99| 精品无码一区二区三区| 91女色| 天天看高清麻豆| 激情丁香五月| 黄片在线免费在线观看| 国内毛片无遮挡国产| 91N综合网| 二三四区精品| 五月天综合网| 插入综合网| 日本精品高清一二区一本到| 91伊人久| 无码一区免费在线不卡| 深夜国产福利| 亚洲色性| 久久精品六区| 超碰视97中文| 青女在线| 蜜桃视频一区二区三区在线观看| 韩国久久97| 五月天色色网站| 日本五十路熟女一区二区| 国产精品午夜福利亚洲综合网| 国产日韩怡红院| 9久9久| 欧美日韩中国x| 传媒免费一区二区三区| 国产二区三区粉嫩在线| 97大色网| 久久曰曰| 天天爽夜夜欢视| 久久精品视频久久久| 99热超碰| 国产精品一二三区福利| 日本在线一二| 欧美日不卡| 久草婷婷| 夜夜肏2021| 国产成人亚洲精品自产在线 | 易易A毛视频| 亚洲 中文 欧美 日韩 在线| 天天综合网亚洲综合网| 人伦四五区| 噜噜噜亚洲精| 欧美色97| 91亚洲网| 1769一区| 无码日韩人妻av一| 尤物一级在线免费观看| 五月丁香综合激情| 狠狠久久亚洲欧美专区| 精品久久久九九九孕妇| 一区 欧美 日韩 麻豆| 熟妇艹鸡八| 色色色色色色色色综合| 久久久天美| 亚洲第一页色网| 97超碰色情| 91啦人妻| 伊人五月天激情| 日韩中文字幕二区| 操九九九九九九| 老汉网| 久久久天美| 日韩超碰97| 在线观看亚洲成人精品| 日韩国产在线观看av| 青青草天天亲夜夜操网| 日韩乱码Av| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 精品九九九九九九九| 人妻无码视频一区二区三区久久| 欧美色91| 十八禁视频一区二区| 欧美强奸乱| 91色艳| 一区二区三区成人| 96精品久久久久久久久| 午夜AV人气不卡| 色五月激情网| 久久日本熟女精品一区| 九九九九精| 成人 日本A片无码8888| 国产成人亚洲精品自产在线| 91国产在线精品| AV中亚| 天堂中文日本在线观看| 中文字幕一区二区三区人妻少妇在线 | 亚洲综合九九| 日韩精品永久在线观看| 涩爱AV在线| 午夜美女诱惑电源网| 国产亚洲精品美女久久久| 九热视频| 亚洲 综合 第一页| 韩国三级一线观看久| 你懂得91| 久久精品99久久久久久| 国产无码精品无码| 99色热| 97国产精品久久久久| 亚洲人体视频在线观看| 婷婷激情啪啪| 欧美色91| 被体育老师抱着c到高潮| 青青操在线亚洲视频观看欧美在线| 南澳成人一级片在线播放| 影音先锋视频在线| 自拍丝袜美腿人妻| 久久免费少妇| 丁香五月婷婷基地| 噜噜噜噜天天狠狠| 亚洲精品日韩国产欧美| 超碰久久网| 国产女人高潮嗷嗷嗷叫小说| 久久超碰亚洲人| 女性91网站| 狠狠狠狠狠干| 欧美天天搞| 久久伊人大香蕉| 99re99在线视频| 色香色欲天天综合网天天来吧 | 日本黄色精品专区网站| 亚洲国产一区二区三区在线 | 亚洲丝袜天堂| 亚洲黄色视频在线观看视频| 人妻在线臀日韩| 粉嫩av在线| AV天堂丝袜| 日韩欧无码一区二区三区免费不卡 | 玖玖爱一区在线| 久久久久久亚洲Av无码| 99啪啪| 91精品久久久| 色拍偷亚洲| 91丨熟女丨丰满熟女| 一区二区三区在线日韩影院观看| 成人性爱高清视频免费看| 劲爆欧美人妖三区91| 天天干夜夜一操| 99热这里只有精品1| 国产精品国产拍高清AV| 97色综合中文网| 国产女上位好爽在线| 亚洲码在线中文在线观看| 亚洲射综合网| blacked精品一区国产| 亚洲极品| 欧美极品女人的天堂| 蜜乳视频网站| 亚洲高清欧美总合| 麻豆AV一区二区| 亚洲导航深夜福利| 欧美午夜熟妇黑人精品91| 性九九九九九九| 老司机免费视频在线91| 亚洲最大AV网| 国产尤物AV尤物在线观看不卡| 97欧美日韩中文| 日本精品不卡一二三区| 9丨久久九九九| 色婷婷综合久久中文字幕雪峰| 欧美1区二区三区公司| 天天拍天| 亚洲婷婷五月天| 亚洲熟伦熟妇AV无码春色| 久久久久ab| 色狠狠综合| 波多野结衣之双飞调教在线播放 | 久草电影网| 91N五十路| 18禁网站在线播放| 亚洲欧洲激情卡通另类文学四射小说网站 | 一区二区视频你懂的| 久久五月视频| 欧美A片中文字幕| 成人AV在线网站| 丝袜喷水在线| 99热婷婷| 乱伦AVxx| 亚洲日韩人妻中文字幕一区| 久久风骚城市| 人妻无码久久一区二区三区免费| 色情婷婷| 久久激情亚洲精品无码?V| 91精品91久久久久77777俄罗斯老妇姓x| 日韩ab网| 日韩 人妻 精品| 激情专区综合| 精品高清一区二区三区三州| 国产9区| 玖玖无码超碰| 手机av亚洲丝袜美腿日韩第一页二页| www.四虎在线| 99视频内射三四| 亚洲αv一区二区三区| 日韩操啪| 中文字幕在线免费观看| 亚洲人精品久久久| 亚洲日韩乱码中文无码蜜桃臀网站 | 人妻大香蕉| 91N综合在线| 久久久噜噜噜久久久| 狠狠干婷婷| 国产亚洲精品玖玖玖在线观看| 91看黄片| 91网九色蝌蚪操熟女| 久久春色| 九月伊人中文字幕| 99999久久精| 日韩精品三级| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 躁躁日曰躁2020| 久久手机好看网站| 亚洲1区| 九九色逼| 99无码视频| 五月天婷婷色| 丁香六月婷婷| 97久久精品亚洲| 国产999精品久久久久久| 玖玖婷婷五月天| 激情四射五月天| 91久久久久久| 亚洲精品视频二区| 丁香五月天婷婷姐| 中美日韩毛片| 97视频620| 一区二区视频你懂的| 使劲用力艹少妇视频一区二区| 午夜福利区| 超碰97久久国| 久肏视频字幕| 啊啊啊啊啊啊在线| 人妻少妇久久中文字幕一区二区 麻豆| 男人的天堂2019| 亚洲码在线中文在线观看| 国产精品麻豆免费视频| 久久一区二区高清免费| 中文字幕狠狠玩| 一起草AV| 99热精品青草在线| 精品一二三区女同| 久久久涩| 久久久性| 亚洲AV无码AV吞精久久久久| 人人干人人操人人..com| 五月丁香激情综合| 中文字幕老熟妇黄色视频| 97内射偷拍| 欧美第一页| 欧美性性性| 香伊人在线| 久久久免费一级黄片| 25国产精品免费观看| 午夜欧美J进J出白浆流出久久久| 男人精品天堂一区| 欧美熟妇精品黑人巨大91| 人人摸人人入| 久久免费精品视频免一| 920日本午夜免费| 亚洲色图国产另类| 男人的天堂99| 亚洲制服aⅴ中文字幕| 亚洲综合九九| 欧美中字二区| 中文字幕视频二区| 91九色蝌蚪在线观看| 日本三级大片| 天天色怡春院| 久久神马| 操屄不卡视频| 操操操操网黑人| 亚洲日韩精品一区二区| 狠狠操夜夜| 夜夜嗨AV一区天天| 熟女熟妇伦久久影院毛片一区二区 | 91福利网在线观看| 久久99精品视频| 国产成自自拍在线观看| 性色综合网| 欧美午夜一区二区三区| 日韩久久超碰色| 亚洲综合伊人无码久久| 人人摸人人添人人操| 亚洲城人男人的天堂| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 超碰在线看| 国产精品网站免费| 上特色A在线| 久久老子无码午夜伦不卡| 日韩欧美偷拍美女视频| 日本一区二区中文字幕久久| 亚洲国产成人高清在线| 亚洲凸凹超碰成人| 五码视频在线观看| 情侣开房子拍 日韩无码 女的很漂亮| 精品妇操一区二区三区| 午夜福利一区二区影院| 1956日韩精品| 九九九九AV| 三级三久久线久久99久目本WW| 校园春色综合香蕉| 午夜一级免费毛片| 91性生活久久久| 国产精品内射婷婷一级二| 色97| 久操97| 97超碰69| 粉嫩av在线| 久久9亚洲| 国产精品久久久吖| 中美日韩毛片| 超碰日韩人妻| 99www.bibizy香蕉资源国产一区二区三区高清| 亚洲综合电影| 91暧暧| 东北少妇高潮zzzz| 丝袜狠狠草尤物人妻av91| 狠狠超| 91久久精品国产| 国内偷拍精品一区二区| 亚洲色图欧美色图制服丝袜| www熟女乱伦com| 国产亚洲欧洲在线观看| 国产在线强奸视频| 天堂资源站| 国产精品视频白浆免费| 九九久精品| 婷婷五月激情综合| 91综合熟女| 江都AV在线| 翔田千里一区二区三区奶水| 天堂亚洲精品久久老牛| 96久久精品一二三区色欲| 91激情国产| 水野优香在线观看| 97超碰人人模人人拍人人| 熟女自慰久久久| 岛国片国产成人亚洲播放| 公司1区2区3区精产精| 成片免费观看视频大全| 中文字幕在线观| 久久久久9999妇女| 91丨熟女丨丰满熟女| 抽插亚洲无码| 久久人人爽爽爽人久久久| 蜜乳av一区二区| 欧美日韩中国x| 丁香五月综合| 国产精品盗摄 偷窥盗摄| 香蕉免费一区二区三区不读| 五月婷婷丁香| 欧美不卡在线一区二区| 职场同事知名国产国产精品久久欧美日韩| 大香蕉黄色一区| 男人天堂电影院| 亚洲欧洲第二视频在线观看色图| 性爱av在线免费观看| 一级二级在线观看| 国偷自 一区二区| 欧美一区91大爱| 操操逼操操逼操操逼逼| 啊啊啊爽爽| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 99热色这里只有精品| 人妻 丝袜美腿 中文字幕| 农村少妇久久久久久久| 情色五月天久久久| 激情色播| 亚洲AV无码AV吞精久久久久| 亚洲97超碰| 欲色啪| 吉川爱美98堂在线| 婷婷伊人| 夜夜影视四色| 亚洲一区在线观看欧洲| 欧美热图99| 亚洲精品一区二区免费在线观看| 九九九九九九九精品视频| 国模艳艳啪啪一区| AV麻豆免费一区| 好涩综合| 丰满欧美放荡少妇在线| 精品一区二区三区四区女| 亚洲综合小说另类图欧美视频激情小说色五月天 | 亚洲97精品| 欧美激情一| 久热久操| 免费人人搞97| 亚洲午夜免费狠狠干| 国产无码一二三区| 国产专区第一页| 超清福利精品视频在线| 爱逼综合| 啪啪啪综合| 亚洲风情综合网| 天天插天天操天天摸天天射天天看| 国产精品经典一卡久久久| 天天综合精品| 日韩午夜啪啪视频| 欧美精品久久久久久久久88| 美国一区二区三区视频| 国产黄色在线播放观看| 精品蜜乳AV免费观看| 欧美亚洲中文| 亚州欧美色图| 中文久久久| 91精品人妻一区二区三区蜜桃| 一区超碰一区| 中文字幕色AV| 九九热午夜欧亚国产视频| 九九九九九九视频| 欧美亚洲se91| 中文字幕久久亚州无码| 天堂射| 男人天堂 天天射| 任你干在线视频| 手机av亚洲丝袜美腿日韩第一页二页| 男人天堂综合| 日本中文字幕一区| 久久成人午夜狠狠| 91精品婷婷国产综合久久| 玖玖爱伊人玖玖爱| 国产超碰欧美| 九九九九热只有精品| 噜噜噜噜久久久精品免费| 久久久不卡| 天天干人人看综合| 亚洲av综合伊人久久| 国产美女销魂在线观看不卡| 日韩精品在线观看观看| 黄片色区软件| 717影院理论午夜伦八戒| 亚洲九区| 欧美人妻精品| 午夜精品久久久久| 夜夜做夜夜爽精品视频| 日韩无码第3页| 国产精品视屏| 欧美亚洲素人制服精品| 1769一区二区| a久久| 欧美 亚洲 大香| 美女干逼2| 日曰骚久久精品| 国产精品ww久久| 欧美一级久久久丰满| 精品在线观看视频在线| 五月婷婷六月激情| 超碰97网址| 我爱操| 精品无码久久久久久久杏吧| 亚洲伊人a线观看视频| av一区二区三区 中文| 欧美性爱97超碰| 是还免费视频1727我| 久久久青青草| 家庭乱伦国产| 久久激情五月| 亚欧中文字幕在线视频| 超碰综合97在线| 在线视频亚洲无码| 亚洲成人美女无吗| ′ !γ}丶。。久久精品欧美一区二区三区 | 国产91丝袜 在线播放| 精品无码久久久久久久杏吧| 人人爱人人操人人性| 国产精品白虎| 欧美日韩精品久久久久东北老熟妇| 久久精品一区二区| 国产亚州精品美女久久久免费| 天美传媒国产原创中文字幕亚洲欧美另类| 亚洲欧美国产中文字幕| 97资源站日韩| 久久社区一区二区三区| 天天影视网综合少妇| 久久久91福利姬| 被操高清无码视频| 大香蕉av在线| 久久精品电影| 久久午夜鲁丝片| 大香蕉宗合网在线| 加勒比av网| 八戒无码国产午夜福利| 亚洲无套久久嗯嗯| 日韩BBN| 26uuu国产日韩综合在线观看| av优播| 蜜臀99精品国产高清在线观看| 天堂俺去俺来也www久久婷婷| 狠狠狠一区二区三区| 久久超碰天天| 99久久婷婷丁香| 精品视频专区| 思思久热在线精品66| 久久久五月天| 亚洲好色人妻| 美女写真| 乱久久久| 日本性爰一道本| 99自拍B亚洲 | 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 激情五月天婷婷| 亚州欧美总和| 最新亚洲人成网站在线影院| 欧美亚男人的天堂| 久久久96| 神马精品视频| 试看60秒 爽| 成人五月香网在线| 少妇淫妇久久久久久久| 一区二区三区机械有限公司| 老鸭窝日丰县女人| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲性高潮| 欧美久热| 伊人九九九| 亚洲国产第一页综合视频| 黄色工厂这里只有精品| 久热99| 91九色丨风韵犹存| 国产一区二区三区中文字幕| 午夜αv| 九九久久首页| 免费观看性欧美一级| 九九夜精品九九在线| 麻豆国产视频精品观看| 97露脸精品丝袜| 日韩精品一区二区日韩| 91美女看B| 91小视频| 欧美情色亚洲| 天天操天天射青青草| av毛片aaaaa免费看| 久久欧洲| 欧美性爱三区二区| 亚洲图片 欧美电影| 99这里都是精品| 一中国女人毛片水真多| 一区 欧美 日韩 麻豆| 二男一女成人A片| 安微少妇操BBB| 99色在线| 18禁止看精品中文字幕| 噜噜噜久久亚洲精品色情| 亚洲五码一区二区三区| 欧中美三级一区二区三区| 国产女人高潮视频| 国产精品久久久久久高清无码免费看| 60秒试看最爽10分钟网站| 草草网站影院白丝内射| 啊啊啊啊无码| 欧美熟妇精品黑人巨大一二三区| 黑人白女精品一区| 精品久久久一本一道| 亚洲91少妇| 免费观看国产小粉嫩喷水精品午| 久久9精品网站| 久久久久久久极品香蕉视频| 变态乱伦伪娘灌肠一区二区| 91在线丝袜| 美腿色图| 欧美日韩性爱视屏免费看了| 97超碰护士| 欧美亚州色的图| 亚洲黑丝在线| 性影在线视频| 男人久久天堂| 久久久成人精品| 99999精品视频| 伊人久操| 在线αⅴ| 国产一二三福利视频网| 黄色高清久久无码依人| 极品极品色影院| 强奸乱伦AV网址| 992大香蕉| 亚洲国内精品成人不卡| 欧美另类色图片| 国产视频不卡在线观看| 一中国女人毛片水真多| 18精品一二区| 色欲色香天天天综合网www-亚洲综合国| 色婷网| 家庭乱伦性爱av| 被窝影院午夜看片无码| 亚洲AV小说| 好屌色综合| 天天添天天干电影| 人人干人人搞人人摸| 老熟妇乱轮| 午夜啊啊| 久久国产999| 日本 免费 一区二区三区 久久香蕉| 亚欧性爱在线无码| 欧美十八禁导航成人| 老熟女乱伦片| 97狠狠| 久久熟女精品不卡一区| 天天插夜夜爽| 97久久精品亚洲中六字幕| 大香蕉宗合网在线| 十八禁视频网站| 99久久e免费热视| 无码操逼视频一下| 尤物网站91| 啊啊啊啊啊啊好多水| 亚洲丝袜在线观看| 快播久久人人aV| 久久久九九| 韩国毛片一区二区三区| 亚洲诱惑| 黄色不卡视频| 粉嫩少妇自慰在线| 日本丝袜美腿人妻九九| 偷拍欧美激情| 久久亚洲骚逼综合| 私色综合网| 色妺妺在线视频| 天天添天天干电影| 欧美精品第3页| 天天干一干| 中文字幕第页| 欧美色三级片91| 天堂av2019| 97网址www| 色狠狠综合噜一二三区| 后入内射蜜桃臀| 久久久久久性爱视频| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 中文字幕 一区二区 亚洲无码| 欧美日韩夜夜| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 动漫av中文| 丰满丝袜少妇AV| 插B在线观看| 97伊人| 中文字幕后石码三区四区| 日韩熟女三十乱伦| 日本性交操一区二区不卡系列| 美女视频尤物网在线看| 国产AV久久野战精品|