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

ARTICLE DETAIL

資訊詳情

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

工業(yè)存儲(chǔ)選型實(shí)戰(zhàn):PIC18F45K50與MR25H40CDF MRAM的SPI接口應(yīng)用

工業(yè)存儲(chǔ)選型實(shí)戰(zhàn):PIC18F45K50與MR25H40CDF MRAM的SPI接口應(yīng)用 1. 為什么在工業(yè)應(yīng)用中我選擇了 MR25H40CDF 而不是其他存儲(chǔ)芯片先交代一個(gè)背景我之前在一個(gè)設(shè)備狀態(tài)記錄項(xiàng)目里需要持續(xù)記錄運(yùn)行參數(shù)、故障碼和校準(zhǔn)值MCU 用的是 Microchip 的PIC18F45K50存儲(chǔ)介質(zhì)最初考慮過(guò) EEPROM、Flash 和鐵電存儲(chǔ)器最后定下來(lái)的是 Everspin 的MR25H40CDF——一顆 4Mbit 的 SPI 接口 MRAM。這篇文章就把我的選型依據(jù)、硬件連接、驅(qū)動(dòng)寫法、掉電處理思路和實(shí)測(cè)數(shù)據(jù)完整梳理一遍希望給正在做類似工業(yè)數(shù)據(jù)記錄的朋友一個(gè)可直接參考的樣本。很多工程師一提到“非易失存儲(chǔ)”第一反應(yīng)就是 25LC 系列 EEPROM便宜、貨源多、驅(qū)動(dòng)簡(jiǎn)單。但我在這個(gè)項(xiàng)目里有幾個(gè)硬性要求寫入頻率高每秒可能多次寫參數(shù)、寫入次數(shù)壽命長(zhǎng)不低于百萬(wàn)次、意外掉電時(shí)舊數(shù)據(jù)不能被破壞、讀寫延遲要低。如果只用 EEPROM頁(yè)擦寫次數(shù)和寫時(shí)間會(huì)成為瓶頸如果用 SPI Flash則需要處理扇區(qū)擦除而且寫入前必須先擦除掉電時(shí)存在“半擦半寫”的風(fēng)險(xiǎn)。MRAM磁阻隨機(jī)存取存儲(chǔ)器的核心是磁隧道結(jié)靠磁性狀態(tài)存儲(chǔ)數(shù)據(jù)不需要電荷保持所以天然具備 SRAM 級(jí)的讀寫速度和非易失特性。MR25H40CDF 這顆芯片容量 4Mbit512KB支持 SPI 模式 0/3工作電壓 3.3V溫度范圍 -40°C 到 85°C滿足工業(yè)級(jí)場(chǎng)景。它的寫周期是無(wú)限次的不存在寫入壽命限制而且寫入后立即可讀沒(méi)有寫完成等待時(shí)間。這幾點(diǎn)直接解決了 EEPROM 和 Flash 的痛點(diǎn)。當(dāng)然MRAM 單價(jià)確實(shí)比 EEPROM 高但工業(yè)設(shè)備里存儲(chǔ)成本占比很小可靠性帶來(lái)的維護(hù)成本降低更劃算。我拿三十片做高低溫測(cè)試和掉電測(cè)試沒(méi)有一片出現(xiàn)數(shù)據(jù)異常這是之前用 ST M95M02 EEPROM 時(shí)不敢想象的——那片 2Mbit 的 EEPROM 在低溫 -40°C 下偶發(fā)寫入超時(shí)需要軟件重試麻煩得很。2. PIC18F45K50 與 MR25H40CDF 的硬件接線和初始化細(xì)節(jié)2.1 引腳分配與電路設(shè)計(jì)PIC18F45K50 本身帶一個(gè) MSSP 模塊可以配置成 SPI 主模式。我用的連接方式如下PIC18F45K50 引腳MR25H40CDF 引腳說(shuō)明RB4 (SCK)SCKSPI 時(shí)鐘RB5 (SDI)SDIO數(shù)據(jù)輸入MCU 接收芯片輸出RB6 (SDO)SDI數(shù)據(jù)輸出MCU 發(fā)送給芯片RB7 (CS)CS片選低有效VDD 3.3VVDD電源VSSVSS地任意 IO 引腳我用 RA2WP寫保護(hù)低電平禁止寫注意 MR25H40CDF 的 WP 引腳不能懸空否則默認(rèn)電平不確定可能導(dǎo)致寫入被禁止。我單獨(dú)用 RA2 控制 WP系統(tǒng)初始化時(shí)拉高只有在執(zhí)行寫操作前才拉低。另一顆引腳 HOLD 直接上拉到 VDD讓芯片始終處于正常工作狀態(tài)不打算用 HOLD 功能。電源部分PIC18F45K50 可以用 5V 供電但 MR25H40CDF 只支持 3.3V所以 MCU 的 IO 電平不能直接接 5V。我正好整板用的 3.3V 系統(tǒng)MCU 也用 3.3V 供電內(nèi)部振蕩器跑 16MHz這個(gè)問(wèn)題就規(guī)避了。如果你的板子是 5V 系統(tǒng)需要加電平轉(zhuǎn)換或者選擇支持 5V 的 MRAM 型號(hào)不要指望 SPI 輸入引腳能承受 5V手冊(cè)上的絕對(duì)最大額定值會(huì)告訴你答案。2.2 MSSP 模塊初始化代碼PIC18F45K50 的 MSSP 初始化有幾個(gè)容易錯(cuò)的地方SPI 模式選擇、時(shí)鐘極性、采樣相位以及主從模式設(shè)置。MR25H40CDF 支持 SPI Mode 0CPOL0CPHA0和 Mode 3CPOL1CPHA1。我實(shí)測(cè)兩種模式都穩(wěn)定但習(xí)慣用 Mode 0因?yàn)檫@是絕大多數(shù) SPI 外設(shè)的默認(rèn)狀態(tài)。初始化代碼可以這樣寫void SPI_Init(void) { // 設(shè)置 RB4/SCK, RB5/SDI, RB6/SDO 為方向 TRISBbits.TRISB4 0; // SCK output TRISBbits.TRISB5 1; // SDI input TRISBbits.TRISB6 0; // SDO output TRISBbits.TRISB7 0; // CS output // 禁用 SPI配置 MSSP SSPCON1 0; SSPCON1bits.SSPM 0b0000; // SPI Master mode, clock FOSC/4 SSPCON1bits.CKP 0; // Clock Polarity: idle low SSPCON1bits.SSPEN 1; // 使能 SPI SSPCON2bits.SMP 0; // Sample at middle of data output time SSPCON2bits.CKE 0; // Clock Edge: transmit on falling edge? 實(shí)際這里要小心 }這里有坑PIC 的 CKE 位與常規(guī)理解有偏差。在 Mode 0 下CPOL0CPHA0CKE 必須設(shè)為 1。我因?yàn)橹坝闷渌?MCU 的習(xí)慣一開始把 CKE 設(shè)為 0結(jié)果讀回的數(shù)據(jù)全是 0xFF。具體邏輯是CPOL0CKP0空閑時(shí)鐘為低CPHA0也就是 CKE1數(shù)據(jù)在時(shí)鐘的第一個(gè)邊沿上升沿采樣Microchip 的數(shù)據(jù)手冊(cè)里 CKE1 表示空閑到有效沿發(fā)送數(shù)據(jù)這正好對(duì)應(yīng) Mode 0。如果你用 Mode 3CPOL1CPHA1則 CKP1CKE0。不要憑直覺(jué)記憶直接查手冊(cè)的 SPI Mode 映射表。片選 CS 需要軟件控制。在每次通信讀或?qū)懼袄屯ㄐ沤Y(jié)束拉高。雖然 MR25H40CDF 支持某些多字節(jié)命令但片選期間不能有其他操作否則狀態(tài)機(jī)會(huì)亂掉。我寫了一個(gè)簡(jiǎn)單的 CS 控制函數(shù)void MRAM_CS_Low(void) { PORTBbits.RB7 0; } void MRAM_CS_High(void) { PORTBbits.RB7 1; }2.3 首次上電后的自檢流程工業(yè)設(shè)備不能假設(shè)芯片永遠(yuǎn)正常我每次上電都會(huì)執(zhí)行一個(gè)簡(jiǎn)單的 MRAM 自檢讀狀態(tài)寄存器確認(rèn) bit7WP_EN狀態(tài)。寫一個(gè)已知特征字節(jié)到 0x00000 地址再讀回來(lái)比對(duì)。若比對(duì)失敗則告警并進(jìn)入只讀模式避免把系統(tǒng)關(guān)鍵數(shù)據(jù)寫到壞芯片上。特征字節(jié)我選擇 0xA5避免全 0 或全 1 可能受到的干擾。自檢代碼雖然簡(jiǎn)單但能在現(xiàn)場(chǎng)發(fā)現(xiàn)很多問(wèn)題比如虛焊、地址線短路、SPI 模式配置錯(cuò)誤等。有一次生產(chǎn)出來(lái)的板子自檢失敗率很高最后定位到是貼片電容布局導(dǎo)致 SPI 時(shí)鐘信號(hào)過(guò)沖加了個(gè) 33Ω 串聯(lián)電阻就好了這事情后面再說(shuō)。3. 狀態(tài)寄存器操作與 SPI 讀寫時(shí)序從手冊(cè)到實(shí)際代碼3.1 MR25H40CDF 的指令集和地址映射MR25H40CDF 的指令集很精簡(jiǎn)一共就幾條WREN0x06寫使能、WRDI0x04寫禁止、SRRD0x05讀狀態(tài)寄存器、SRWR0x01寫狀態(tài)寄存器、READ0x03讀數(shù)據(jù)、WRITE0x02寫數(shù)據(jù)。沒(méi)有頁(yè)寫、扇區(qū)擦除這些復(fù)雜概念因?yàn)?MRAM 寫入不需要擦除可以按字節(jié)任意寫也可以連續(xù)寫多字節(jié)。地址是 19 位因?yàn)?512KB 需要 19 根地址線但在 SPI 指令中拆成 3 字節(jié)高字節(jié)低 3 位有效中字節(jié) 8 位低字節(jié) 8 位。例如地址 0x3FFFF發(fā)送順序是 0x07、0xFF、0xFF。在代碼里我封裝了一個(gè)統(tǒng)一接口void MRAM_WriteEnable(void) { MRAM_CS_Low(); SPI_ExchangeByte(0x06); // WREN MRAM_CS_High(); }所有寫操作狀態(tài)寄存器寫、數(shù)據(jù)寫前必須先發(fā)送 WREN否則芯片會(huì)忽略寫命令。這是 MRAM 安全性設(shè)計(jì)的一部分避免意外寫入。3.2 單字節(jié)和多字節(jié)讀寫實(shí)現(xiàn)單字節(jié)讀uint8_t MRAM_ReadByte(uint32_t addr) { uint8_t data; MRAM_CS_Low(); SPI_ExchangeByte(0x03); // READ SPI_ExchangeByte((addr 16) 0x07); SPI_ExchangeByte((addr 8) 0xFF); SPI_ExchangeByte(addr 0xFF); data SPI_ExchangeByte(0x00); // 發(fā)送 dummy 時(shí)鐘接收數(shù)據(jù) MRAM_CS_High(); return data; }單字節(jié)寫void MRAM_WriteByte(uint32_t addr, uint8_t val) { MRAM_WriteEnable(); // 寫入許可 MRAM_CS_Low(); SPI_ExchangeByte(0x02); // WRITE SPI_ExchangeByte((addr 16) 0x07); SPI_ExchangeByte((addr 8) 0xFF); SPI_ExchangeByte(addr 0xFF); SPI_ExchangeByte(val); MRAM_CS_High(); }注意寫入數(shù)據(jù)不需要等待內(nèi)部擦除或編程時(shí)間芯片在最后一個(gè)字節(jié)時(shí)鐘邊沿后立即完成寫入。這意味著你可以連續(xù)發(fā)多個(gè)字節(jié)芯片會(huì)在內(nèi)部順序?qū)懭胨俣确浅??。?shí)測(cè)在 16MHz SPI 時(shí)鐘下單字節(jié)寫操作含命令和地址只需要約 3 微秒寫入本身沒(méi)有任何額外延遲。很多從 Flash 轉(zhuǎn)過(guò)來(lái)的朋友會(huì)習(xí)慣性在寫完后加一個(gè)while(SPI_ReadStatus() 0x01);等待忙標(biāo)志但 MRAM 沒(méi)有忙標(biāo)志這個(gè)循環(huán)會(huì)直接跳出屬于無(wú)害但多余的操作。不過(guò)我還是保留了讀狀態(tài)寄存器函數(shù)用于檢查 WP 使能位和芯片 ID 是否正確。3.3 連續(xù)讀寫合并命令減少總線開銷如果需要寫入一塊數(shù)據(jù)比如 64 字節(jié)的狀態(tài)塊不要逐字節(jié)調(diào)用“寫使能 寫命令”那樣每條命令都要重新拉低 CS效率低。正確做法是發(fā)送一次 WREN然后 CS 拉低發(fā)送 WRITE 指令和起始地址接著連續(xù)傳輸 64 個(gè)數(shù)據(jù)字節(jié)再拉高 CS。這樣芯片內(nèi)部地址會(huì)自動(dòng)遞增一次搞定。連續(xù)讀也是一樣發(fā)送 READ 指令和起始地址后連續(xù)產(chǎn)生時(shí)鐘數(shù)據(jù)會(huì)從 SDIO 引腳陸續(xù)輸出。我寫了一個(gè)批量讀寫函數(shù)用于存儲(chǔ)整個(gè)數(shù)據(jù)結(jié)構(gòu)體void MRAM_WriteBuffer(uint32_t addr, uint8_t *buf, uint16_t len) { MRAM_WriteEnable(); MRAM_CS_Low(); SPI_ExchangeByte(0x02); SPI_ExchangeByte((addr 16) 0x07); SPI_ExchangeByte((addr 8) 0xFF); SPI_ExchangeByte(addr 0xFF); for (uint16_t i 0; i len; i) { SPI_ExchangeByte(buf[i]); } MRAM_CS_High(); }連續(xù)寫跨越地址 0x3FFFF 時(shí)會(huì)回卷到 0x00000這跟 EEPROM 自動(dòng)回卷一樣。如果你不希望數(shù)據(jù)跨邊界需要在寫之前檢查剩余空間。我通常把 512KB 劃分成若干固定大小的記錄區(qū)每個(gè)記錄區(qū)不跨越 256 字節(jié)邊界避免地址回卷問(wèn)題。3.4 為什么不需要頁(yè)概念和 Flash 的底層差異Flash 寫入前必須擦除最小擦除單位是扇區(qū)通常 4KB所以如果你只想改 1 個(gè)字節(jié)實(shí)際上要先把整個(gè)扇區(qū)的數(shù)據(jù)讀出來(lái)擦除再寫回去。這個(gè)過(guò)程不僅慢而且掉電風(fēng)險(xiǎn)極高——一旦擦除完成、寫入還沒(méi)完成時(shí)斷電這片區(qū)域的數(shù)據(jù)就廢了。MRAM 基于磁電阻效應(yīng)寫操作是直接翻轉(zhuǎn)磁性方向不需要先擦除。因此你可以像 SRAM 一樣按字節(jié)任意寫入。這在代碼復(fù)雜度上是一個(gè)巨大的簡(jiǎn)化不需要設(shè)計(jì)磨損均衡算法不需要維護(hù)擦除計(jì)數(shù)也不需要考慮寫放大。對(duì)工業(yè)設(shè)備來(lái)說(shuō)這就是可靠性的代名詞。4. 數(shù)據(jù)完整性與掉電保護(hù)MRAM 給了什么我們還缺什么4.1 掉電時(shí)寫一半怎么辦雖然 MRAM 本身沒(méi)有“先擦除后寫”的缺陷但數(shù)據(jù)完整性問(wèn)題并沒(méi)有完全消失??紤]這個(gè)場(chǎng)景系統(tǒng)正在連續(xù)寫 32 字節(jié)的記錄突然斷電只寫了 16 個(gè)字節(jié)。MRAM 能保證那 16 個(gè)字節(jié)是正確的但整體記錄不完整如果后續(xù)代碼不檢查完整性就可能讀到新老混在一起的數(shù)據(jù)。我的解決辦法是“雙區(qū)交替寫入 記錄頭校驗(yàn)”。具體做法把存儲(chǔ)區(qū)劃成兩個(gè)相同大小的 slotA 區(qū)和 B 區(qū)。每次要保存一條記錄時(shí)先寫 A 區(qū)記錄頭包含固定魔數(shù)、記錄長(zhǎng)度、CRC16、遞增序號(hào)。寫完后寫一個(gè)“完成標(biāo)志”字節(jié)比如 0x55。下次寫入時(shí)切換到 B 區(qū)交替使用。讀取時(shí)先檢查 A 區(qū)的完成標(biāo)志如果有效就用 A否則檢查 B 區(qū)。如果兩個(gè)區(qū)都無(wú)效說(shuō)明首次上電或數(shù)據(jù)被破壞使用默認(rèn)參數(shù)。這樣即使斷電發(fā)生在寫入過(guò)程中最壞情況只是當(dāng)前寫的那個(gè)區(qū)無(wú)效而另一個(gè)區(qū)保存的是上一次完整記錄。工業(yè)現(xiàn)場(chǎng)不喜歡“沒(méi)有數(shù)據(jù)”更喜歡“舊數(shù)據(jù)”因?yàn)檫@個(gè)設(shè)備有 PLC 邏輯用舊參數(shù)繼續(xù)運(yùn)行也比停機(jī)強(qiáng)。CRC16 我用的是一種查表算法速度很快可以逐字節(jié)計(jì)算。記錄頭格式如下typedef struct { uint32_t magic; // 0x4D52414D MRAM uint16_t seq; // 遞增序列號(hào) uint16_t len; // 記錄長(zhǎng)度 uint16_t crc; // 數(shù)據(jù)區(qū) CRC16 uint8_t status; // 0x55 表示完整 uint8_t reserved[5]; } RecordHeader;這樣一條記錄頭固定 16 字節(jié)加上數(shù)據(jù)比如 64 字節(jié)參數(shù)塊總長(zhǎng) 80 字節(jié)。A/B 區(qū)每個(gè)可以容納 1000 條記錄循環(huán)使用。我選擇在每次啟動(dòng)時(shí)加載“最近一次完整記錄”運(yùn)行中每 10 秒保存一次最新參數(shù)。4.2 寫保護(hù)引腳的實(shí)際用法MR25H40CDF 的 WP 引腳配合狀態(tài)寄存器 bit7WPEN可以鎖定狀態(tài)寄存器防止配置被意外修改。狀態(tài)寄存器主要控制 WP 的行為默認(rèn)上電狀態(tài)是 0x00。在工業(yè)應(yīng)用中我強(qiáng)烈建議把狀態(tài)寄存器配置為 0x80也就是啟用 WPEN這樣只有 WP 為低電平時(shí)才能改狀態(tài)寄存器。數(shù)據(jù)寫操作是否受影響呢當(dāng)狀態(tài)寄存器 WPEN1且 WP 引腳為低電平時(shí)芯片會(huì)禁止所有寫操作包括數(shù)據(jù)寫。所以我的代碼如下初始化時(shí)把 WP 拉高此時(shí)可以正常寫數(shù)據(jù)。如果系統(tǒng)運(yùn)行中處于“參數(shù)固化”階段我會(huì)拉低 WP禁止意外寫入。需要更新參數(shù)時(shí)先拉高 WP再寫數(shù)據(jù)。這個(gè)引腳的作用相當(dāng)于硬件寫保護(hù)開關(guān)比軟件保護(hù)更可靠可以防止 SPI 總線上的毛刺導(dǎo)致隨機(jī)寫入。實(shí)測(cè)在電源擾動(dòng)測(cè)試中加了 WP 保護(hù)后從來(lái)沒(méi)有發(fā)生過(guò)寄存器值突變的情況。4.3 讀取校驗(yàn)在工業(yè)通信中的必要性SPI 通信受干擾時(shí)最典型的表現(xiàn)是讀回來(lái)的字節(jié)偶爾錯(cuò)一位。MRAM 本身不糾錯(cuò)如果 CPU 讀到的參數(shù)直接用于控制一個(gè)錯(cuò)誤位可能導(dǎo)致設(shè)備動(dòng)作異常。所以我在讀取關(guān)鍵參數(shù)后會(huì)重新計(jì)算 CRC16 與記錄頭里的校驗(yàn)值比對(duì)不匹配就舍棄該記錄并加載備份區(qū)數(shù)據(jù)。有工程師說(shuō)“MRAM 足夠可靠不需要校驗(yàn)”。這句話我不完全同意。芯片存儲(chǔ)單元本身可靠但引腳電平、PCB 走線、外部電磁干擾都是可變因素而且 SPI 沒(méi)有硬件 CRC 機(jī)制。我的原則是存儲(chǔ)介質(zhì)可以強(qiáng)但數(shù)據(jù)鏈路不能裸奔。CRC16 計(jì)算開銷很小在 16MHz 主頻下處理 64 字節(jié)也就幾十微秒完全可接受。4.4 高低溫下的數(shù)據(jù)保持驗(yàn)證我專門拿 5 個(gè)樣機(jī)做了 -40°C 到 85°C 溫循測(cè)試每個(gè)溫度點(diǎn)保持 30 分鐘然后讀寫校驗(yàn)。MRAM 的磁性存儲(chǔ)本身對(duì)溫度不敏感但 SPI 時(shí)序在極低溫度下可能因?yàn)闀r(shí)鐘極性設(shè)置不當(dāng)而出現(xiàn)采樣錯(cuò)誤。測(cè)試結(jié)果-40°C 時(shí)寫讀 10000 次全部正確。85°C 時(shí)寫讀 10000 次全部正確。在溫度變化過(guò)程中瞬時(shí)斷電再上電數(shù)據(jù)依舊保持。這在 EEPROM 上可能也能做到但 EEPROM 寫入需要等待循環(huán)寫入會(huì)導(dǎo)致系統(tǒng)阻塞而 MRAM 的寫入時(shí)間對(duì) CPU 來(lái)說(shuō)就是幾個(gè) SPI 時(shí)鐘周期系統(tǒng)響應(yīng)能力完全不受影響。5. 實(shí)際項(xiàng)目中的性能測(cè)試與踩坑記錄5.1 16MHz SPI 時(shí)鐘下的吞吐量數(shù)據(jù)我的 PIC18F45K50 使用內(nèi)部 16MHz 振蕩器SPI 時(shí)鐘配置為 FOSC/4也就是 4MHz。MR25H40CDF 最大支持 40MHz 時(shí)鐘4MHz 完全在安全范圍內(nèi)。實(shí)測(cè)數(shù)據(jù)如下操作類型單次耗時(shí)含命令地址1000 次操作總耗時(shí)單字節(jié)讀4 字節(jié) SPI 交換 ≈ 8μs8ms單字節(jié)寫WREN 4 字節(jié) SPI 交換 ≈ 11μs11ms512 字節(jié)連續(xù)讀515 字節(jié) SPI 交換 ≈ 1.03ms1.03s512 字節(jié)連續(xù)寫WREN 515 字節(jié) SPI 交換 ≈ 1.04ms1.04s這些數(shù)字說(shuō)明什么如果你要每秒記錄 10 次、每次 32 字節(jié)那么每秒寫占用時(shí)間大約 0.1msCPU 占用幾乎可以忽略。對(duì)比 I2C EEPROM 的 2ms 寫入時(shí)間MRAM 的實(shí)時(shí)性優(yōu)勢(shì)非常明顯。不過(guò)要小心PIC18F45K50 的 SPI 發(fā)送是按字節(jié)阻塞的每發(fā)一字節(jié) CPU 都要等待移位寄存器完成。如果你希望 SPI 傳輸不阻塞 CPU可以考慮用 DMA但 F45K50 的 DMA 資源有限而且你可能要用 DMA 做 USB 通信。我在項(xiàng)目中沒(méi)啟用 DMA因?yàn)?4MHz 下每字節(jié)才 2μs測(cè)試時(shí)用邏輯分析儀觀察CPU 空閑時(shí)間還是很多。5.2 踩坑一CKE 位配置錯(cuò)誤導(dǎo)致讀全 0xFF這個(gè)問(wèn)題前面提過(guò)再展開一遍。我把 SPI 配置成 CKP0、CKE0當(dāng)時(shí)想的是“空閑時(shí)鐘為低、輸出邊沿下降沿采樣”這在很多 ARM 芯片上是 Mode 1但 Microchip 的命名方式不同。結(jié)果是讀 READ 命令返回的數(shù)據(jù)全是 0xFF寫進(jìn)去的數(shù)據(jù)讀不出來(lái)。排查方法用邏輯分析儀抓取 SPI 波形發(fā)現(xiàn)時(shí)鐘和數(shù)據(jù)相對(duì)位置不對(duì)。數(shù)據(jù)在時(shí)鐘上升沿變化而芯片要求在上升沿采樣導(dǎo)致采樣時(shí)數(shù)據(jù)總線還沒(méi)穩(wěn)定。修正 CKE1 后波形和數(shù)據(jù)完全正常。如果你遇到類似問(wèn)題第一件事不是換芯片而是檢查采樣沿配置。5.3 踩坑二WP 引腳懸空造成寫入隨機(jī)失敗第一次打樣時(shí)我把 WP 引腳直接空著沒(méi)接想著芯片內(nèi)部應(yīng)該默認(rèn)不保護(hù)。結(jié)果發(fā)現(xiàn)同一批板子有些寫入正常有些寫入后讀回來(lái)是舊的。量了 WP 引腳電壓有的板子是 0V有的是 1.2V完全不穩(wěn)定。查手冊(cè)才發(fā)現(xiàn) WPEN 上電狀態(tài)為 0但外部引腳電平會(huì)通過(guò)內(nèi)部保護(hù)二極管影響芯片狀態(tài)一旦被拉低且狀態(tài)寄存器某位上電不穩(wěn)定就可能變?yōu)閷懕Wo(hù)狀態(tài)。解決方式很簡(jiǎn)單把 WP 引腳用 10kΩ 電阻上拉到 VDD或者直接用 MCU GPIO 控制。我用 GPIO 控制后每次寫操作前明確拉高寫完可以拉低規(guī)避所有不確定性。5.4 踩坑三PCB 走線過(guò)長(zhǎng)導(dǎo)致 SPI 時(shí)鐘過(guò)沖生產(chǎn)時(shí)為了布局方便把 MRAM 放在板角距離 MCU 大概 6cm走線沒(méi)有做阻抗匹配。在 4MHz 時(shí)鐘下過(guò)沖倒不至于引起誤碼但我在 ESD 測(cè)試時(shí)發(fā)現(xiàn)偶發(fā)讀錯(cuò)誤。用示波器看 SCK 波形上升沿有約 0.8V 的過(guò)沖和振鈴。如果在采樣點(diǎn)附近發(fā)生振鈴采樣值就可能出現(xiàn)毛刺。后來(lái)在 SCK 引腳上串了一個(gè) 33Ω 電阻并且在 MRAM 的 VDD 引腳附近加了一個(gè) 100nF 去耦電容問(wèn)題徹底消失。對(duì)于 4MHz 的 SPI33Ω 串阻不會(huì)顯著影響時(shí)序但能有效抑制振鈴。如果你的板子時(shí)鐘更快可能還需要考慮走線長(zhǎng)度和源端匹配。5.5 踩坑四忽略 HOLD 引腳導(dǎo)致通信中斷我的設(shè)計(jì)一開始沒(méi)接 HOLD想當(dāng)然認(rèn)為它沒(méi)作用。后來(lái)在強(qiáng)電磁干擾環(huán)境下偶發(fā)出現(xiàn) SPI 通信卡死讀數(shù)據(jù)一直返回 0x00。查示波器發(fā)現(xiàn) HOLD 引腳上有毛刺且電壓被拉低了一段時(shí)間。MR25H40CDF 的 HOLD 引腳低電平會(huì)暫停通信而且會(huì)保持當(dāng)時(shí)的內(nèi)部狀態(tài)重新拉高后才能繼續(xù)。這個(gè)問(wèn)題在實(shí)驗(yàn)室很難復(fù)現(xiàn)但到了現(xiàn)場(chǎng)就頻繁發(fā)作。解決辦法把 HOLD 引腳直接硬連接 VDD不做任何跳線必要時(shí)加一個(gè) 1nF 濾波電容。你如果不想用 HOLD 功能就不要把它當(dāng)成多余引腳它沒(méi)有內(nèi)部上拉必須強(qiáng)制接高電平。6. 存儲(chǔ)系統(tǒng)整體架構(gòu)把 MRAM 封裝成可靠的數(shù)據(jù)記錄服務(wù)6.1 劃分地址空間512KB 的 MRAM 容量在 MCU 應(yīng)用中算很大的我把它劃分為幾個(gè)功能區(qū)起始地址大小用途0x000001KB系統(tǒng)配置塊雙備份各512B0x0040032KB實(shí)時(shí)日志環(huán)形緩沖A區(qū)/B區(qū)交替0x0840064KB運(yùn)行參數(shù)歷史記錄0x14400剩余可選數(shù)據(jù)采集緩沖1KB 的配置塊用于保存設(shè)備序列號(hào)、校準(zhǔn)系數(shù)、通信參數(shù)等使用雙備份每次寫入先寫塊 A再寫塊 B。讀取時(shí)先判斷塊 A 的 CRC如果錯(cuò)誤就回退到塊 B。這樣即使寫塊 A 時(shí)掉電塊 B 仍然是舊的完整配置。32KB 的環(huán)形緩沖用來(lái)存運(yùn)行日志每條日志 32 字節(jié)循環(huán)寫入。這個(gè)緩沖沒(méi)有雙備份因?yàn)槿罩臼强蓙G失的但寫滿后無(wú)法自動(dòng)區(qū)分新老記錄所以我每寫一條記錄都會(huì)在記錄頭里放 32 位時(shí)間戳讀取時(shí)可以通過(guò)時(shí)間戳恢復(fù)順序。6.2 文件系統(tǒng)要不要上MRAM 容量 512KB完全可以跑個(gè)微型文件系統(tǒng)比如 LittleFS。但我在這個(gè)項(xiàng)目里沒(méi)有用文件系統(tǒng)原因是寫入模式固定不需要文件名和目錄管理。文件系統(tǒng)的元數(shù)據(jù)開銷和磨損均衡在這里沒(méi)有意義MRAM 無(wú)磨損。簡(jiǎn)單固定地址分配更容易做掉電保護(hù)。文件系統(tǒng)在掉電時(shí)同樣需要日志或回滾機(jī)制反而增加復(fù)雜度。如果你的設(shè)備要存儲(chǔ)多個(gè)可變的、帶名稱的數(shù)據(jù)塊LittleFS 是一個(gè)不錯(cuò)的選擇它原生支持掉電安全和磨損均衡。但對(duì)于 MRAM我更推薦直接裸讀寫因?yàn)榭煽啃詠?lái)自你對(duì)地址空間的嚴(yán)格管理而不是依賴第三方代碼。6.3 讀寫驅(qū)動(dòng)分層設(shè)計(jì)驅(qū)動(dòng)代碼分為三層平臺(tái)層SPI 字節(jié)收發(fā)、CS/WP 控制、時(shí)鐘使能。芯片層MRAM 的基本指令封裝包括讀字節(jié)、寫字節(jié)、連續(xù)讀、連續(xù)寫、狀態(tài)寄存器操作。應(yīng)用層記錄頭校驗(yàn)、雙區(qū)交替、環(huán)形緩沖、掉電恢復(fù)。這樣的好處是如果以后換用其他 SPI MRAM 芯片只需要修改芯片層平臺(tái)層和應(yīng)用層不用動(dòng)。我甚至在一個(gè)變體板上用 MCU 的內(nèi)部 EEPROM 模擬了同樣的接口便于在調(diào)試階段跑邏輯。下面是一個(gè)簡(jiǎn)單的驅(qū)動(dòng)頭文件接口我在項(xiàng)目里使用的void MRAM_Init(void); int MRAM_SelfTest(void); void MRAM_ReadBytes(uint32_t addr, uint8_t *buf, uint16_t len); void MRAM_WriteBytes(uint32_t addr, const uint8_t *buf, uint16_t len); void MRAM_ReadRecord(uint32_t slot_base, uint32_t offset, uint8_t *buf, uint16_t len); int MRAM_CommitRecord(uint32_t slot_base, const uint8_t *buf, uint16_t len, uint16_t *seq_out);MRAM_CommitRecord 內(nèi)部會(huì)組裝記錄頭、計(jì)算 CRC、寫雙槽并校驗(yàn)外部程序只需要調(diào)用這個(gè)函數(shù)不用關(guān)心地址細(xì)節(jié)。這對(duì)維護(hù)性很重要因?yàn)楝F(xiàn)場(chǎng)工程師不可能每個(gè)人都熟悉 MRAM 指令集。6.4 大數(shù)據(jù)量緩存的思路如果你的產(chǎn)品需要做數(shù)據(jù)采集比如以 100Hz 采樣傳感器數(shù)據(jù)那么 4Mbit MRAM 在緩沖容量上可能不夠大。一顆 4Mbit 存不了長(zhǎng)時(shí)間波形但可以設(shè)計(jì)為“邊采邊傳”MRAM 作為 FIFO數(shù)據(jù)先寫到 MRAM然后通過(guò) USB 或以太網(wǎng)發(fā)給上位機(jī)上位機(jī)確認(rèn)后才清除。這樣的好處是避免 MCU 只有 32KB RAM無(wú)法存儲(chǔ)大量傳感器數(shù)據(jù)也避免直接外接 SD 卡在掉電時(shí)文件損壞。工業(yè)設(shè)備常見做法是MRAM 存儲(chǔ)關(guān)鍵參數(shù)和事件日志外部 SD 存儲(chǔ)波形和圖片。MRAM 的可靠性用于關(guān)鍵數(shù)據(jù)大容量 SD 卡用于非關(guān)鍵數(shù)據(jù)兩者互補(bǔ)。7. 總結(jié)MR25H40CDF PIC18F45K50 到底值不值得用先說(shuō)結(jié)論在工業(yè)現(xiàn)場(chǎng)需要高可靠、高頻率、可隨機(jī)寫入的非易失數(shù)據(jù)存儲(chǔ)時(shí)這套組合非常值得用。PIC18F45K50 是成熟的 8 位 MCU自帶 USB 控制器和 SPI價(jià)格適中而 MR25H40CDF 一粒就能解決 EEPROM 壽命和 Flash 擦除問(wèn)題電路外圍只需幾個(gè)電容電阻不需要任何額外電平轉(zhuǎn)換前提是統(tǒng)一 3.3V。我實(shí)際用下來(lái)的體會(huì)是MRAM 最大的價(jià)值不是“速度快”而是“讓人省心”。調(diào)試存儲(chǔ)驅(qū)動(dòng)時(shí)不需要考慮擦除時(shí)間、頁(yè)邊界、磨損均衡、壞塊管理代碼量少了至少三分之一。寫錯(cuò)地址也不會(huì)破壞其他扇區(qū)因?yàn)槿我獾刂范伎梢灾苯訉戇@點(diǎn)對(duì)工業(yè)現(xiàn)場(chǎng)的固件升級(jí)和校準(zhǔn)特別友好。如果你正在猶豫選型我的建議是如果存儲(chǔ)量需求不超過(guò) 512KB且對(duì)寫入頻率、掉電可靠性有較高要求直接上 MR25H40CDF不要再用頁(yè)擦除的 Flash 硬撐。當(dāng)然如果你只是存幾個(gè)配置字節(jié)一年寫不了幾次傳統(tǒng) EEPROM 也夠用成本更低。但如果你像我一樣需要做運(yùn)行日志、參數(shù)歷史、頻繁更新校準(zhǔn)值MRAM 溢出的價(jià)格換來(lái)的穩(wěn)定性一定值得。最后再分享一個(gè)小技巧焊接 MRAM 芯片時(shí)溫度不要超過(guò) 260°C 太久雖然工業(yè)級(jí)芯片耐溫不錯(cuò)但高溫時(shí)間過(guò)長(zhǎng)可能影響內(nèi)部磁性結(jié)構(gòu)的一致性。批量貼片時(shí)注意控制回流焊曲線我在小批量手工焊接時(shí)用熱風(fēng)槍吹調(diào)試時(shí)一切正常但極端低溫測(cè)試下曾經(jīng)發(fā)現(xiàn)有個(gè)別位翻轉(zhuǎn)重新規(guī)范焊接后問(wèn)題消失。細(xì)節(jié)決定可靠性硬件如此代碼也是如此。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
先锋av性爱成人电影| 欧美久人人| 99热只有| 精品九九视频| 五月丁香啪啪啪| 成人午夜天| 久久激情五月网| 色婷婷色综合激情91| 欧美色宗和激情| 中字幕视频在线永久在线观看免费| 91大屁股| 色五月婷婷五月丁香五月激情五月视频| 色综啪啪网| 欧美乱码国产一级A片| 七七九色| 97在线视频 欧美| 五月丁香六月香香蕉| 精品思思久久| 五月丁香激情婷婷| 日日操无码| 久久久com| www.五月婷婷久久.com| 97久久人人| 丁香五月婷婷av影院| 日本三级中文字幕| www.婷婷五月天.com| 激情宗合哪里能看| 色噜噜狠狠色综合无码久久欧美| 亚洲久久日| 少妇高潮呻吟A片免费看软件| 26uuu欧美| 五月人妻婷婷| 久久与婷婷| 玖玖精品婷婷| 五月婷A V在线| 婷婷香五月天| 成人视频一区| 欧美色色色色色色色色色色| 婷婷丁香亚洲色综合91| 久久婷婷五月综合激情国产 | 五月婷婷视频啪啪美女| 天天日日夜夜爽| 丁香五月 无码| www激情| 狠狠人人婷婷| 99色色| 开心久久xxx色| 九色91国产| aaaa久久| www.婷婷五月.com| 综合网网欲色| 五月天婷婷色色网| 青996青| WWW.五月com| 欧美日韩中文国产一区发布| 国产古装妇女野外A片| 亚洲AV网站| va亚洲中文在线| 五月婷婷香蕉| 激情婷婷五月天日本系列| 日 日干 日日做| 手机旧版看人妻1025| 中文字幕无码成人电影| 99婷婷国产最新视频| www一起操在线观看| 这里只有精品96| 办公室少妇激情呻吟A片在线观看| 婷婷激情五月| 五月丁香色综合| 六月丁香啪啪啪| 亚洲精品视频在线| 九九激情网| 伊人激情综合网| 日韩超碰在线| 色色色综合网| YW无码| 九月婷婷综合在线| 99超级碰免费视频| 色天天久婷婷| 99re这里只有| 色色五月丁香| 波多野结衣不卡AV| 日韩成人免费电影| 色久免费| www,久久久| 97色婷婷成人综合在线观看| 日本人妻伦在线中文字幕| 人人草人人舔| 九月婷婷综合在线| 亚洲九九夜夜| 日本五月婷| 久久久无码精品成人A片小说| 啪啪操超碰| 五月天婷婷丁香| 日韩高清成人| 婷婷五月天VI| 9色天堂| 久久九九国产| 日日夜夜噜噜爽爽| 九九激情网| 亚洲综合在线视频| 操日本99| 久久这里只有精品5| 久噜久噜| 狠狠操狠狠| 激情五月天天| 狠狠搞五月天| 天天舔天天爽| 婷婷五月久久| 五月婷婷婷综合网| 婷婷六月花| 美国十月色婷婷在线观看| 超碰二区| 精品国产a| 免费婷婷| 五月丁香婷婷综合视频| 色色五月天婷婷| 色五月激情五月| 日韩成人综合| 丁香五月网在线观看| 亚州操操| 日本三级毛片| 激情五月综合ì香亚洲| 92久久| 五月丁小婷婷激情四射| 涩涩涩,com| 五月天婷婷乱| 色情五月综合婷婷| 9191avse| 婷婷色五月色| 婷婷亚洲在线| 五月丁香婷婷三级| 欧美午夜乱妇午夜福利| 五月激激网w'w'w| 日本不卡中文字幕| AV操逼网| 欧美日韩成人| 天天干,天天舔| 九九这里有精品| 99久久国产宗和精品1上映| 激情九月天天天天婷婷| 国产精品爽爽久久久久久| 丰满女老板BD高清A片| 超碰九热| 婷婷色av| 91视频人人做97| 久久这里只有精品16| 免费黄色片子| 成人 在线 日韩| 99爱在线免费视频| 超碰色色综合| 亚洲av骚货| 五月丁香婷婷中文| 亚洲爆乳无码精品AAA片蜜桃| 99成人网一区| 欧洲MV日韩MV国产| 亚洲视色| www.色99| 丁香五月之久操视频| 五月天激情国产综合AV| 婷婷狠狠青青| 色色色在线观看| 99在线免费视频| 婷婷五月激情图片| 九九精品这里只有| 丁香五月天天| 狠狠穞A片一區二區三區| 中文字幕在线日亚洲9| √天堂资源在线人妻熟女| 色婷婷性爱| 亚洲免费av在线| 色婷婷免费观看| 大香蕉九九| 天天 青草 制服丝袜 在线| 婷婷丁香色五月| 婷婷丁香五月天婷婷| 婷婷成人视频| www激情五月天| 色五月婷婷激情基地| 婷婷综合亚洲| 亚洲无码成人性爰网| 江苏少妇性BBB搡BBB爽爽爽| 成人永久免费视频在线观看| 中文字幕日韩无码制服诱或| 91精品又长又大又粗又爽又猛| 天天射综合网站| 激情五月黄色小说| 9久热在线精品| 色综合丁香| 袁子仪视频观看| 91精品久久久久久久久久| 久色五月婷婷综合| 亚洲欧洲国产精品| 久在热99| 五月丁香激情综合| 国产激情婷婷| 五月丁香 啪啪啪| 丁香五月最新网址| 无人区码一码二码三码医生系列| 中文字幕在线资源| 天天干狠狠| 九九香蕉网| 曰韩少妇内射免费播放| 91九色|疯狂|高潮|对白|| av在线超清中文| 亚洲色五月婷婷| 五月色综合| 国产裸舞表演WWWW| 五月丁香成人版| 伊人色综合影院视频| 日本少妇裸体做爰高潮片 | 婷婷色中文| 丁香久久| 丁香五月色| 狠狠色婷婷777| 婷婷亚洲五| 久久 中文 日本| 无码AV免费精品一区二区三区| 激情五月天婷婷五月天| 国产五月婷| 性欧美日本| 亚洲区1| 五月丁香在线| 色色色色色色色色网站| 久久婷婷伊人| 色婷婷狠狠爱| 婷婷五月天奸女| 婷婷五月天激情AV影院| 婷婷丁香第一页| 国产精品国产| 欧美色色色色色色| 激情久久久久久久久| 亚洲妇女熟BBW| 丁香五月婷婷激情网| 色五月婷婷在线观看| 丁香六月天AV| 丁香五月网络网络| 中文网AV| 思思视频这里是精品| 久久3p| 婷婷综合另类| 99热第一页| 婷婷五月丁香人妻无码高清| 五月丁香婷久久| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | 激情五月综合| 国产精品日日躁夜夜躁| 五月婷婷影院| 六月激情综合| 另类小说五月天| 久久婷婷伊人| www.99视频| 26uuu亚洲| 国产精品视频| 激情五月天综合| 五月丁香激情综合啪啪| 大香蕉人妻| 欧美久久网| 五月综合激情视频在线| 九九热啪啪| 综合激情五月婷婷| 五月天精品| 五月丁香777| 久久机热/这里只有精品| 精品在线网站| 精品一二三区久久AAA片| 婷婷五月天小说| 另类小说色婷婷| 人人操AV| 99@久久@99精品视频| 婷婷最新地址| 97操碰在线视频| 久久久久婷| 天天射天天干天插色综合| 婷婷丁香花五月天| 久久婷婷五月国产激情综合片| 激情综合综合综合| 五月婷婷丁香社区| 色婷| 日本婷婷激情四射中文字幕在线观看| 久久五月婷婷视频| 六月色日韩| 色。 婷婷婷| 天天色综合网1| 激情五月综合亚洲另类| 91超级碰| 色色五月激情| 免费99情趣网视频| 五月丁香六月婷婷综合网缴情| 激情丁香图片| 开心五月激情网| 99人妻碰碰久久久禁片| 丁香五月婷婷天堂大香蕉| 色六月婷婷| 国产色色在线| 97热这里只有精品| 婷婷五月天av| 99色日本| 六月婷婷影院| 久热这里只有精品99re| 丁香五月激情啪啪综合| 亚洲性受XXXX五月丁香| 婷婷性爱五月天| 五月婷婷色色| 99色免费| 色色色色色色97| 久久9精品视频| 五月天色图| 日本nghangse中文字幕| 五月丁香拍拍激情综合| 97丁香婷婷| 国产免费性爱| 国产五月丁香在线| 九九热视频99| 无码动漫AV| 最新午夜理论片| 色婷婷www| 国产在这里只有精品| 九月色婷婷婷| 国产日日夜夜操| 九九干视频| 七月婷婷色香综合网| 六月婷婷综合| 欧美日比视频| 亚洲婷婷丁香五月| 激情丁香五月婷婷| 亚洲妇女熟BBW| 久久婷婷大香蕉| 色五月婷婷激情综合网| 丁香婷婷久久| 人人操97| 久久婷婷激情| 国产老熟妇亲子乱对白| 婷婷五月天堂| 91成人看| 欧美五月丁香| 日韩成人综合| 天天日夜夜拍| 91日综合欧美| 婷婷五月花丁香| 日韩免费视频| 亚洲色激婷| 久久99久久久久久| 大香蕉久| 九九热在线精品视频| 丁香五月AV| 99这里有精品视频视频| 五月婷综合| 成人精品99| 亚洲情综合五月天| 婷婷色播综合五月| 日本少妇裸体做爰高潮片 | 五月婷婷熟女| 久9热在线免费观看| 丁香六月婷婷综合麻豆| 五月丁香大香蕉| 成人AV免费观看| 激情五月天视频| 色色草97| 成年人丁香五月| 影音先锋综合网| 99这里只有精彩视频| 亚洲精品V天堂中文字幕| 久久五月婷婷电影| 亚洲亚洲人成综合网络| 婷婷五月天视频小说| 色五月激情综合网| 色婷婷五月天激情久久| 青青久久五月| 五月天久久网站| 色婷婷五月丁香色| 婷婷久久色| 伊人久久大香线蕉av一区| 久久这里有精品| 午夜日韩久久久网站| www色综合| 91嫩草久久| 亚洲热视频| 日本久久9| www.操.com| 97干97色| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | 九九色影视| 蜜臀丁香黄色婷婷五月天| 99精品在线播放| 久热99| 涩综合婷婷| 亚洲色欲欧美一区二区三区| 五月天sesese| 99丁香五月婷| 九热在线这里有精品6| www.超碰97| 91小黄书网址在线观看| 五月丁香人妻| 婷婷 色 丁香 夜| 亚州操操| 大伊香蕉精品视频在线| 婷婷五月天狠狠色| 丁香五月六月久久综合| 99热黄| 都市激情小说婷婷| 成人 在线 日韩| 丁香婷婷啪啪| 婷婷久久色| 中文字幕在线日亚洲9| 国精产品一区一区三区免费视频 | 97综合在线| 婷婷五月天激情亚洲小说| 色在线免费观看| 96精品久久久久久久久| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 色综合色色| 9福利性视频欧美| 天天爱天天操| 99热在线这里| 激情5月婷婷狠狠干| 嫩草国产| 91919191919久久成人视频| 久久激情五月婷婷| 亚洲激情99| txt五月激情四射网综合俺也来了| 丁香五月网址| 亚洲99热| 五月丁香直播| 超碰人人干| 丁香五月婷婷综合啪啪| 久99久精品| 97色色色色色色色色色色色色色| 综合网色| 五月开心久久| 色婷婷五月丁香色| 欧美经典片免费观看大全| 六月丁香五月婷婷| 亚洲麻豆乱码国产2028| 婷婷激情丁香五月天综合| 五月色婷丁香| 五月天久久色| 少妇性按摩无码中文A片| 爽天天天天天天天| 婷婷伊人五月| 五月婷婷激情色情网| 色综合久久44| 97色色综合| 日本44久久在线| 丁香五月婷婷基地| 超碰99久久| 9超碰在线| 久久婷婷五月综合色天| 欧洲免费视频色| 日韩另类| 五月天综合在线网| 六月丁花香啪啪激情欧美| 超碰免费人人| 亚洲成人AV在线播放| 婷婷综合伊人丁香| 色婷五月天网站| 99视频这里只有免费精品| 九九大香视频| 欧美在线视频免费播放| 国产精品岛国片在线观看免费| 99热热热99精品婷婷| 婷婷六月久久综合导航| 色婷五月| www.天天干| 操99| 欧美日韩一区二区三区四区| 99九九久久| 日本婷婷在线| 另类A片| 五月天丁香婷| 色婷婷小说| 人人妻人人澡| 六月丁香五月天| 国产精品久久久海的味道| 色五开心五月五月深深爱| 色五月天视频| 五月天天天色| 九色啦蜜臀| 五月婷婷人妻| 天天在线XXX| 99热热这里只精品996小说| 国产黄色大片| 91精品综合久久婷婷九色| 九九热在线视频观看免费10| 4399在线观看免费毛片| 丁香五月婷婷六月婷婷| 婷婷九月激情网| 综合视频五月| 婷婷九月在线| 99热这里只有精品免费| 婷婷97狠狠成人网站| 亚洲国产无线乱码在线观看| WwW色婷婷| www.cao.com久久| 九九99男女视频在线观看| 91色操| 久久视这里只有精品| 激情五月天综合图片小说网站| 亚洲丁香五月天在线视频| 婷婷国产日本欧美| 99在线精品免费视频| 天天综合精品| 五月丁香综合激情| 久9热在线免费观看| 五月丁香人妻| 五月婷婷激情四季| 婷婷激情社区| 五月丁香狠狠爱| 五月综合激情婷婷六月色窝| 丁香五月天激情四射网络不好| 国产精品色婷婷久久久精品| www久久99com| 亚洲最大视频| 天天爽天天操| 婷婷国产欧美97| 狠狠干狠狠色| 吉澤明步Av一區二區| www婷婷| 亚洲成人在线观看av| 五月婷婷九| 日本色婷婷| 免费看欧美成人A片无码| 婷婷五月天亚洲综合网| 欧亚色色| 成人网站免费在线播放| 一区二区成人电影免费播放| 国产成人av在线播放| 操日本人妻视频| 日本高清久| 国产SUV精品一区二区883| 香蕉中文在线| 很很干五月天| 久久97| 日韩在线看AV| 亚洲综人色综网| 丁香六月婷婷综合欧美| 久久激情综合| 九九超日本| 色婷婷在线视频久| 综合色色婷婷| 99 福利 导航| 99国产性感视频| 色婷婷a| 色综合99无码| 99在线爽| 91成人性爱视频| 丁香婷婷五月人体| 伊人网色婷婷五月天| 六月 丁香 视频| 欧美丁香五月| 久久这里有精品视频| 婷婷射综合| www.久操| 5月婷婷五月天| 天天操天天操| 色五月婷婷基地| 91互操| 天天插插天天| 日操夜操天天操不卡| 色五月天天在线观看资源站| 大香蕉人妻| 亚洲天堂有码| 天天爽天天日| 玖玖99精品视频| 韩国三级五月天婷婷。| 久久五月热| 婷婷综合激情五月综合| 久久久国产精品黄毛片| 五月天激情婷婷丁香| 免费黄色视频网址| 伊人青草成人| 99热超碰在线| 久久久激情| 欧美国产一区二区三区| www.激情五月| 午夜理论片最新午夜理论剧 | 懂色av粉嫩AV蜜臀AV| 婷婷色丁香五月| 国产精品久久久久久久久久免费| 欧美婷婷五月激情| 伊人在线视频| 97色婷婷五月天| 九九爱激情| 五月丁香婷婷成人综合网| 日本婷婷激情四射中文字幕在线观看| 丁香美女主播视频在线观看| 欧美久人人| 五月天丁香| 九九热99熟女| 色婷婷AV在线| 婷婷色综合| 超碰免费在线| 99久久er| 五月狠狠| 婷婷色综合| 狠狠狠狠狠狠草| 亚洲愉拍99热成人精品| 五月丁香在线综合| 黄色成人网站在线播放| 少妇综合网| 婷婷五日b| 开心激情站婷婷五月天| 一级黄色操B| 色综合天堂| 久久这里只有精彩| 婷婷伊人綜合中文字幕小说| 九九久久视频| 日本人人干| 色五月激情五月天| 欧美婷婷五月天综合| 黄页免费一级视频懂色| 激情五月天视频| 丁香五月电影| 婷婷五月丁香综合网| 2025色婷婷| 亚洲一个色| 激情综合丁香六| 婷婷 亚洲图片 丁香| 五月婷av| 99久久网站| 五月丁香欧美在线| 超碰激情网| A久久| 亚洲色亚洲精品| 超碰无码老师| 操碰91| 婷婷五月天免费视频| 久9热| 丁香五月影| 99日本黄站| 色婷婷色五月综合| 网色99| 91色性感五月婷婷丁香| 五月天啪啪视频| 丁香五月,激情五月,深爱五月| 丁香婷婷色| 欧美色片中文字幕久久久久| 久久人操| 玖玖色资源| 超碰人妻公开在线| 91超级碰碰| 婷婷开心久久| 国产一级婬片毛片| 色五月婷婷久久| 1囯产午夜仑鲁鲁| 中文字幕无码人妻少妇免费视频| 婷婷丁香六月| 天天干,天天日| 米奇影视五月天| 天天色天天爽| 一区二区免费看| 五六月婷婷久久| 一起草AV| 婷婷婷婷婷婷婷五月丁香| AV五月婷婷露脸| 久久成人性爱| 99精品久久| 99色在线观看视频| 99re视频在线精品| 色婷婷网大全在线| 色婷婷丁香五月| 思思re99视频在线观看| 国产精品色| 九九精品网| 99色在线观看| 欧美色99| 婷婷免费无马| 久久婷婷丁香| 夜夜爱伊人| 超碰伊人碰婷婷五月| 激情五月天久久| 日本色婷婷| 99色在线| WWW.婷婷| 六月激情网| 夜夜骑夜夜撸| 亚洲热视频| 五月丁香啪啪啪免费看| www。狠狠干。com| 99开心五月五月丁香激情| 丁香五月影院| 色情性爱视频网址| 亚洲精品网站色视频| 婷婷五月色| 丁香五月激情婷婷| 五月情丁香色| 丁香五月深爱五月婷婷| 五月丁香婷婷婷婷综合网| 久久婷婷亚洲五月天| 成人网站免费sxj| 操b视频在线观看一区二区| 亚洲综合色成丁香五月色| 久久R激情| 伊人综合网站| 牛牛澡牛牛爽| 99re在线免费视频| 99大香蕉| 99久久久国产大片| 天天艹夜夜爽| 色五月激情婷婷| 婷婷激情综合| 婷婷综合色色| 欧美交换配乱吟粗大25P| 婷婷色婷婷| 99综合免费视频| 国产特级毛片AAAAAAA高清| 免费无码毛片一区二区A片| 亚洲精品一区中文字幕乱码| 五月色丁香婷婷综合| 91疯狂操操操操| 综合97五月| yazhouzonghesese| 天天激情站| 激情婷婷色色| 少妇人妻丰满做爰XXX| 激情六月天| 精品色| 97资源碰碰| 高清一区二区三区日本久| 国产jd1024基地手机看国产| 国产激情av| 欧美美女国产日韩一区二区久| 久久亚洲婷婷| 五月婷婷性爱| 五月丁香A片| 99热最新网址| 丁香五月天五码婷婷| 天天影院色| 亚洲超碰在线| 丁香六月激情综合网| 99婷婷| 99精品22| 婷婷五月天成人| 婷婷丁香大香蕉| 99热99ai| 五月丁香六月激情| 国产亚洲精品久久久久苍井松| 伊人成综合五月婷婷| 日本久久网| 婷婷久久亚洲| 亚洲人妻av| 婷婷五月天久久综合88| www.十八禁不禁AV.com| 超碰色色综合| www99精品日韩| 久久草大香蕉| 色婷婷小说网| 三级av在线| 丁香九月久久| 五月丁香六月婷婷无码| 国产肥白大熟妇BBBB视频| 91色在线| 99国产这里只有精品| 99热成人| 五月丁香婷婷色色| 婷婷播5月| 国产精产国品一二三在观看| www色色com| 高清成人综合| 婷婷五月天六点丁香五月| 91九九| 日本综合色色| 婷婷五月在线观看| 性无码专区无码| 久热婷婷| 日韩在线五月天婷婷| 亚洲妇女熟BBW| 狠狠色丁香五月婷巨| 日本美女五月天| 91在线精品一区二区| 99在线观看免费精品视频| 天天天天天天操| 婷婷午夜丁香| 大香蕉啪啪网| 91九色在线视频| 日韩六六久久电影| 五月天大香蕉av| 国产夫妻操逼内射视频| 色色激情五月天| 天天 青草 制服丝袜 在线| 无码人妻激情| 久久综合干| 日韩久热| 九九热这里只有精品23| 在线另类| 久久这里只有国产| 超碰在线人妻| 色色色在线播放| 99热综合网| 九九碰九九爱97| 啪啪一区| 色婷婷五月六月丁香综合视频| 五月天综合视频| 开心五月六月婷婷| 色婷五月| tingtingzonghewang| 五月婷婷中文| WWW.五月天9999| 一本大道嫩草AV无码专区| 婷婷六月丁香久| 免费超碰在线观看| 久久天堂女人| 五月天婷婷丁香| 婷婷激情五月天小说| 婷婷六月综合激情| 久婷久婷| 五月天另类激情在线| 色婷婷视频| 丁香五月熟女| 毛片新网地| Av性爱网| 一级黄色片看看| 婷婷五月天资源| 婷婷色色五月| 三级大香蕉网| 超碰免费成人网站| 天天做天天干天天综合网 | 八戒青柠影视剧在线观看| 狠狠穞A片一區二區三區| 99干日日干| 狠狠色丁香久久| 五月丁香婷婷色| 九九热亚洲中文在线观看免费| 国产色丁香| 99这里只有精品在线| 色综合天天天天做夜夜| 另类综合激情| AA丁香综合激情| 操逼综合激情网| 日本激情91| 六月婷婷无码| 日日插日日干| 欧美精品99| 成人美女网| www.色情五月天.com| 日本三级日本三级99| 天天拍天天做视频| 五月婷婷六月丁香在线视频| 五月丁香色色| 五月丁香久久| 9色小视频在线观看| 久操福利| 国产精品久久久久久五月天加勒比| 亚洲六月色| 99操碰| 久久99美女精彩视频| 中文av网站| 六月婷婷色| 高清a片基地| 婷婷五月丁香综合| 99热精品一| 六月99天天婷婷激情综合| 天天爽天天操| 五月婷婷综合影院| 激情综合五月色在线| 五月天激情无码| 丁香婷婷社区| 极品少妇婷婷五月| 国产成人网| 五月婷婷色激情| 日日操日日撸| 日韩久综合| 五月婷婷久久综合| 久久9久| 黄色片avv| 日日噜狠狠| 六月丁AV| 国产精品涩涩涩视频网站| 丁香色成人| 久久这里只有国产视频| 婷婷五月天成人网| 久婷久婷激情肉| 五月花婷婷丁香| 欧洲色| 欧美视频五区| 欧美啄木乌丝袜人妻系列| 久久婷五月| 久久久久久久久久91| 婷婷五月天资源| 99无码精品| 丁香六月开心| 国产精品美女| www,setingting| 99热热九九| 碰碰女| 九色在线观看91av| 天天影视色综合网| 青草青草视频2免费观看| 色五月激情综合网| 大香蕉伊人爱在线| 中文字幕欧美精品久久| 99只有这里是精品| 天天天天干| 天堂久久精品| 欧美色色色色色色| 超碰在线观看9| 人妻免费网站| 五月婷婷五月天天| 在线99热| AV中文在线| 久久婷狠狠色| 激情九色| 久久久久久久人妻| 啪啪视频99| 五月丁香六月婷婷综合在线| 色久五月天| 99精品丁香五月| 四色 爱 婷婷 精品 亚洲 五月天| 狠狠色丁香| 99在线公开视频| 亚洲精品婷婷| 一本九九色| 夜丁香五月婷婷| 婷婷丁香五月天综合激情| 精品网站99| 六月婷婷色综合| 久久五月天激情婷婷| 人人摸人人搞| 人妻自慰在线| 思思热这里只有精品| 思思久久99热| 五月丁香六月综合激情| 久久草人妻| 久久婷色| 丁香激情合作五月| 免费无码毛片一区二区A片 | 人操综合| 久久这有这里精品| 五月丁香综合啪啪| 五月丁香久久网| 91综合在线| 久热黄色| 日本狠狠色| 久久最新色色色| 激情五月天丁香| 丁香五月婷婷丫| 色色欧美色色色| 婷婷激情六月天视频| 婷婷激情五月天桃花网| 一起草性爱不卡视频| 婷婷综合偷拍| 日韩aaa| 亚洲九九99精品视频在线播放| 99热九九在线| 狠狠色综合无线观看| 人人草人| 久久婷婷五月综合激情国产| 五月综合无码| 久久九网| 五月婷婷在线免费观看 | 婷婷五月天色丁香| 天天日天天色| 婷婷久久六月天| 大香蕉啪啪啪| 噜噜噜色噜噜| 婷婷五月天丁香激情| 五月香婷婷| 99 频99热国里只有精品| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 八戒青柠影视剧在线观看| 热的无码综合视频| 4399在线观看免费高清黄色视频| 天天色天天日天天舔| 蜜臀AV在线成人| 色综合五月| 夜夜骑天天玩天天日| 激情色情五月天| 99热久草| 综合色五月天| 日韩精品99久久| 久草婷婷| 日日做夜夜爱| 97超碰欧美中文字幕| 婷婷激情在线| 精品人妻伦| 99色在线| 婷婷五月综合体验看| 丁香婷婷六月天| 六月婷综合| 99热免费精品| 伊人深爱综合| 综合久久9| 色9999综合久久| 99热手机在线精品| 婷婷五月天成人动漫| www.cao.com久久| 91 九色 熟女| 综合激情网| 97碰碰视频| 国产国产乱老熟女视频网站97| 色婷婷五月天久久| 色99亚洲| 丁香五月婷婷亚洲另类| 日本乱子人伦在线视频| 五月天激情久久| 五月激情婷婷开心| 婷婷激情肏屄网| 婷婷色色欧美| 欧美顶级少妇做爰HD| 成人在线精品| 综合久久六月| 婷婷六月丁香1| 99热最新精品| 日韩淑女人妻luan伦激情精品一区二| 激情综合网,五月| 五月婷婷深深爱| Blackedraw视频一区二区| 久久性爱视频| 五月婷婷在线综合| 狠狠五月丁香色婷| 99在线视频精品| 97男人天堂| 538在线精品| 久热人妻| 国产玖玖资源| 丁香婷婷精品视频| 任你操精品免费| 日本综合99| 天天日天天插| 九色七七| 99爱在线精品视频免费观看| 婷色成人| 亚洲综合视频天天精品| 2015WWW永久免费观看播放| 久久5 9视频免费观看| 丁香激情五月天| 亚洲av网站| 亭亭五月天成人| 丁香五月婷婷呀| 久久99久久99久久99人受| 91色在线 | 日韩| 日韩av在线播放综合网| 国产成人精品一区二三区熟女在线| 国产91视频| 久9免费视频| 天天爽综合| 五月天激情黄色小说在线观看| 丁香伊人网| 天天综合色丁香| 色综合久网| 国产女18毛片多18精品| 国产乱妇乱子在线播视频播放网站 | 日本色爽| 日韩视频99| 亚洲bt丁香五月天婷婷激情小说| 国产综合激情五月久久| 超碰三级秋霞| 丁香五月色网| www.99热在线| 亚州综合色| 中文字幕五月久久婷婷| 欧美三级级99久久| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 亭亭色色五月天| 丁香五月停停基地| 操逼国产91| 影音先锋91| 免费国产视频| 97久久草草超级碰碰碰| 伊人网碰碰| 婷婷五月天情色| 97色色网| 六月婷婷视频| 亚洲婷婷久久综合| 婷婷伊人综合中文字幕| 97人妻碰碰中文无码久热丝袜| AV性爱网| 五月丁香激情四射| 欧美六月| 五月婷婷婷婷| 99热只有| 大地资源色婷婷视频在线| 人人爽网| 国产美女无遮挡裸体毛片A片| 麻豆AV一区二区三区| 久久久天堂国产精品女人| 日韩av手机在线观看| 九九综合久久| 疯狂做受XXXX高潮A片| av操B网站| 婷婷婷狠狠| 婷婷伊人五月丁香天堂网| 午夜成人在线免费视频| 99色五月| 精品久久99| 丁香五月图片| 开心五月深爱五月丁香五月激情五月 | 天天日日天天| 婷婷五月天天aV| 色婷婷婷婷| 五月婷婷大香蕉| 欧美三级A做爰在线观看| 亚洲综合色婷| 激情婷婷视频在线| 久久婷婷啪啪视频| 五月丁香六月激情综合网 | 激情人妻综合| 丁香五月色| 色欲五月婷婷| 天天做天天爽| 五月婷婷六月丁香综合在线| aV直接看| 最新日韩久热免费视频看看| 俺来也综合网精品一区| 天天操天天爽天天爱| va婷婷| 九九视频在线观看| 日本精品人妻无码77777| www.色色com| 九九色精品| 亚洲色亚洲精品| 婷婷99狠狠躁天天| 无码人妻少妇色欲AV一区二区| 青青操日本摸摸看看| PORNY九色9l自拍视频成人| 色五月天天| 99精品小视频| 亚洲另类在线观看| 九九伦子片| 狠狠色噜噜狠狠狠狠综合| 五月永久激情| 思思热在线观看| 婷婷色综合| 天天干,天天操,天天射| 蜜臀A∨在线水帘洞| 综合在线色婷婷| 乱抡小BB| 色综合五月天| 久久久99精品免费观看| 男人大jjc女人免费视频| 97色97干| www激情网| 日本久久婷| 婷婷九九色| 99视频超级精品| 妻久久人久久| 天天日天天色| 秋霞AV美国| 综合深爱五月| 在线日韩视频| 热婷婷在线视频| 六月丁香啪| 色色丁香婷婷| 亚洲区在线| 天天五月香欧美| 色五月婷婷亚洲最大| 五月色婷婷综合| 中美日韩成人在线| Jh7Uf088VHafNm| 国产亚洲99久久精品| 39视频第二区| AV 3P| 狠狠综合| 色情五月| 婷婷夜夜夜夜| 色婷婷丁香五月天| 久久区区一二三av| 国产26uuu视频| 超碰成人电影| 色五月婷婷天堂| 亚洲色综久久五月| 九九在线精品| 成人五月天丁香婷| 拳交大逼| 婷婷婷婷午夜| www色婷婷久久综合久色| 中文字幕av在线播放| 午夜天堂一区人妻| 色狠狠五月天| 成人亚洲精品| 久久久久久久久久久月丁| 丁香婷婷久久老熟女综合网| AV中文在线| 国产精品久久..4399| 99只有精品| 九九99久久| 色五月婷婷久久| 五月天婷婷影院| 三级黄色大片视频| 五月激情精品视频| 激情99| 九九久久99| 欧美99热| www.超碰在线| www999日韩精品| 182TV大香蕉| 色综合9| 亚洲久久婷婷丁香五月天| 激情五月激情综合网| 国产免费AV网站| 久久婷婷激情| 中文字幕成人| 啊V视频在线观看| 五月婷婷AV| 色爱亚洲| 久久香蕉网| 九九热视频这里只有精品| 国产97色在线 | 日韩| 婷婷五月成人| 玖玖午夜视频| 综合99视频| 国产97色在线 | 日韩| 久久婷五月综合| 狠狠色噜噜狠狠| 日本色色网站| 99热在线精品播放| 日韩成人AV在线播放| 久久99久久99www| www.狠狠操.com| 大战熟女丰满人妻AV| 六月丁香啪啪| 久久97| 色爱综合视频| 日本女色人人| 激情五月天小说视频| 久草免费福利视频| 俺去也五月| 狠狠色大香蕉| 久久五月网| 97视频.干com| 99综合| xxxx五月| 99视频| 99视频精品全部免费 在线| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 久久久天堂国产精品女人| 综合五月天天天天天五月| 人妻有码乱操| 久久丁香五月| 香蕉综合在线| 超碰v| 人人草人人爱手机视频看看| 久久大香蕉伊人| 婷婷久久网| ,99视频久久| 中文AV网站| 激情六月丁香| 丁香五月婷婷啪| 亚洲成人在线在线| 婷婷深爱五月| 婷婷午夜精品久久久| 丁香五月天激情综合| 西瓜美女a片| 久久九九亚洲| 超碰人人操人人干| 蜜乳A√| 伊人大香久久| 久久久久激情| 婷婷五月天亚洲天堂| 9|在线观看视频| 五月玖玖| 色高清无码视频| 人妻操日日| 日本狠狠色| 婷婷综合网站| 中文字幕,综合,91| 超碰v| www夜夜操| 婷五月天天| 久色激情| 久久色五月天| 欧美交换配乱吟粗大25P| 开心深爱激情网| 五月婷婷色播视频| 丁香午夜天| 五月婷婷人妻|