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

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
返回資訊列表
九九激情视频| 丁香五月激情五月色综合| 99热欧| 国产一区二区三区影院| 婷婷五月天高清无码| 26UUU欧美激情一区二区| 亚洲国产99| 91色色色18| 玖玖在线视频| 九一娱乐在线观看视频| 欧美精品中文字幕亚洲专区| 亚洲激情AV| WWW,五月| 肏日网在线看| 久草丁香婷婷1024| 久久精彩免费视频| 超碰99在线观看| 久久永久网址| 婷婷五月激情综合啪啪| 婷婷五月天社区| 婷婷综合激情五月中文字幕| 色99热| 日韩在线观看网址| 五月天色色网站| 99网99热| 激情综合网五月| 天天影院色| 性爱视频99| 色情五月天婷婷| 97碰超级人人看| 激情五月婷婷综合秋霞| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 国产又粗又大又爽又黄| 亚洲网站999| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | www.精品99| 五月丁香亭亭A片| 欧美色图天堂网| 夜夜夜夜撸夜夜操| 五月丁香在线综合| va婷婷| 激情综合网,五月| 日本97在线视频| 久草丁香婷婷1024| 亚洲九九99精品视频在线播放| 六月丁香五月天| 日日操,夜夜撸| 婷婷五月天综合蜜桃| 亚洲综合在线播放| 伊人五月综合网| 性爱视频久久| 九九热在线精品视频| 丁香六月婷婷综合麻豆| 第四色婷婷五月| 操操操av| 91人妻视频| 美女丁香五月天| 丁香五月,开心五月,成人婷婷| 亚洲精品在线视频| 丁香密臀AV激情网| 综合婷婷| 91视屏在线观看com.wwwvv| 丁香六月婷婷久久综合| 婷婷五月 丁香六月| 色婷婷丁香网| 久久天堂网| g00d人体西西| 色婷婷综合网站| 天天精品视频在线观看视频| 99爱在线观看视频| 婷婷无码视频| 亚洲视频一区| 三级99热| www99在线观看视频| 日本色色网站| 操91| 色色色成人网| 夜夜撸日日操| 久久无意婷婷| 天天五月丁香五月| 狠狠色综合网站| 激情五月狠狠| 98永久精品| 六月婷久久| 午夜国产精品AV在线播放| 激情五月,深深爱五月| 这里只有精彩亚洲视频推荐| www.婷婷| 亚洲99一级无嗎特制在线| 秋霞九九无码| 91日婷婷在线| 狠狠色丁香婷婷五月| 色激情五月| 久久婷五月| 亚洲色激婷| 日在线V视频在线播放| 国产毛片欧美毛片久久久| 婷婷综合五月天| 八戒青柠影视剧在线观看| 日本三级中国三级99人妇网站| 色色99| 五月婷婷先锋| 婷婷丁香五月天综合网| 婷婷五月天综合久久| 久久久婷| 五月婷婷色播| 色色色.COM| 九九综合| 第1影院之五月婷婷| 色狠狠999综合| 4438激情网| 五月婷婷色播| 五月婷婷婷自由综合| 亚洲操b| 337p大胆噜噜噜噜噜91Av| 天天拍天天操| 激情久久月| 99热只有精品在线播放| 五月天婷婷在线视频| 亚洲激情五月| 婷婷中文字幕欧美| 九九精品片一| 99热只有| 五月丁香婷婷色| 色 五月婷婷基地| 这里有精品| 精品少妇人妻AV无码专区偷人| 激情五月婷| 久九男女天堂| site:jszngf.com| 97色色网| 国产在线视频1234| 激情内射p| 婷婷成人视频| 日韩国产在线免费观看| 色播五月婷婷五月| 变态另类色图| 五月婷婷开心丁香| 丁香婷婷AV| 991精品在线视频| 一本综合丁香日日狠狠色| 色丁香五月婷婷| 九九色黄色| 婷婷天天舔| 99热这里只有精品1025| 91久久精品无码一区二区三区| 99热最新网址| 激情综合网激情五月俺也去| 天天爱天天做天天爽| 丁香五月婷婷啪啪| 久久这里只有精品5| 色五月婷婷很很操| 色婷婷AⅤ| 极品五月天| 成人综合网站| 五月天婷婷深深爱| 色综合女人99| 免费观看的婷婷五月视频在线| 怎么样可以看免费的一级av| 天天射影视综合网| 日韩人妻在线播放| 夜夜操天天干| 九九九九中文字幕| 99热在线这里| www.99热在线观看| 亚洲综合五月天| 超碰97在线观看免费| 久久久激情| 无码人妻电影| 中美日韩成人在线| 色播五月| 五月婷婷碰碰| www.日日日.com| 色5月婷婷色| 色色色9 9 9| 婷婷五月免费视频| 狠狠综合区| 婷婷成年人免费视频| 久久九九经典| 丁香九月婷婷综合| 五月丁香在线精品| www综合久久| 亚洲免费av在线| 71在线精品视频一区| 丁XX 成人| 色欲九区| 中文字幕无线久必| 91视频五月丁香| 午夜一区| 精品热青草| 天天拍夜夜爽| 涩综合网| 日本婷婷激情四射中文字幕在线观看| 91se在线观看| 91中文在线| 亚洲精品性色| 99视频内射三四| 婷婷99狠狠| 人人草人人爱手机视频看看| 色五月天丁香婷婷| 免看黄大片AA | www.婷婷五月| 成人超碰AV| 欧美激情五月天| 丁香五月婷婷动漫| 九九大香蕉黄色影院| 久久怕怕视频| 婷婷五月俺要去| 色婷婷精品视频在线播放| 人人爱干人人爱草| 深爱五月天| 激情小说五月天社区丁香| 日本狠狠色| 亚洲婷婷五月天综合| 九月丁香很很色| 六月婷婷中文字幕| 欧美激情丁香五月| 色噜噜五月天| 国产日韩精品SUV| 亭亭玉月丁香| 色噜噜在线| 女同激情久久av久久| 国产亚洲精品久久久久久郑州| 99免费在线| 99久久免费性爱视频`| 国产精女同一区二区三区久| 色色色热| 激情五月综合| 五月欧美色播| 99久久99九九99九九九| 五月天激情网址| 操操操97| 日韩成人不卡| 九九亚洲| 婷婷天堂综合| 激情五月综合网最新| 精品综合久久久久久五月天| 色五月之第四色| 婷婷亚洲久久| 九九久久玖玖爱| 亚洲国产精品二二三三区 | 思思热高清在线观看| 色婷婷丁香五月| 九八Av| 久久这里只有精品热在99| 综合一本道| 久9热在线视频| 婷婷激情四射五月天| 69超碰在线| 五月亭亭开心网| 2015WWW永久免费观看播放| 欧洲电影在线观看免费版英语版| 国产亚洲精品久久久久久郑州| 久热网在线视频| 婷婷五月丁香五月天| 性日本激情| av在线激情| 五月天婷婷激情六月久久| 操人91| 操操操AV| 狠狠色丁香综合| 日良久久| 五月婷婷伦理| 色 丁香婷婷| Av狠狠色丁香婷| 久热黄色| bbwcuckold精品熟妇| 大香蕉婷婷丁香视频在线| 五月丁香趴趴| 激情婷婷五月少妇| 国产99久久久| .操區COm| 婷婷五月综合色中文字幕| 色99日韩| 五月天婷婷激情六月久久| 婷婷5月久久综合网站| 色综久久久| 国产肥白大熟妇BBBB视频| 久久伊人婷婷| 第四色大香蕉| 涩涩五月天| WWW五月婷婷| 久久伊人9| 色操综合| 99日本视频在线观看专区| 99这里有精品视频| 亲子乱AV一区二区三区下载| 91ncm视频| 丁香五月区| 91色久| 99色中文| 91狼友视频在线观看| av国产精品| 丁香六月色婷婷| 亚洲这里只有精品| 色综合久久99色| 风流少妇A片一区二区蜜桃| 婷婷丁香色五月| 九热视频在线精品15| 亚洲狠狠操| 婷婷丁香一月| 天堂婷婷五月在线| 激情五月综合免费| 激情综合丁| 久久婷婷亚洲| 丁香五月婷婷啪| 超碰成人电影| 亚洲色色爱| 欧美成性色| 91玖玖| 日本99视频| 狠狠色综合网| 亚洲色婷婷99一9|| 天天干、天天日日| 精品婷婷五月视| 婷婷区日本| 五月天小说激情| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 久色大| 天天谢天天操| 1024操逼视频| 久草天堂| 日日做A爰片久久毛片A片英语 | 99re在线免费视频| 超碰在线网站9| 五月婷婷综合激情小说| 94干大香蕉| 丁香六月婷| 激情综合九月| 开心五月婷婷六月丁香| 99色亚洲| 99狠狠操一| 婷婷五月天电影区小说区| 五月天婷婷乱论小说| 色婷另类| 色色无码| 久色五月天| 亚洲色婷婷| 婷婷五月综合欧美在线播放| 日本久久爱| 国产九九一区二区三区| 狠狠干五码| 亚洲午夜av| 亚洲av另类在线观看| 岛国午夜视频| 欧美五月丁香在线| 激情综合丁| 停婷丁五月在线| se99视频| 9久9久9久女女女九九九一九| 超碰人人在线观看| 99在线精品观看99| 亚洲热综合网在线观看| 色久影院| 婷色影院| 日本久久综合| www,婷婷| 婷婷五月色| 国产AV成人精品| 超碰国产AV| 色播激情| 久9热视频在线观看| 99性视频| 大伊香蕉玖玖爱| 色综合区| 天天色天天日天天舔| 丁香九月婷婷| 久99久99精品免| 性小说五月天| 日本五月天网站| 欧美色色色色色色色| 国产精品美女久久久久AV超清| 色色丁香五月| 99精品视频在线| 夜夜久久综合网| 538在线精品| 成人电影在线免费试看| 五月停停直播| 人妻AV在线| 97涩婷婷婷婷基地| 中文字幕+乱码+中文字幕在线观看| 五月丁香六月欧美| 能直接看的AV网站| 播五月丁香六月| 欧美成人精品A片免费一区99| 五月丁香婷婷色| 婷婷欧美激情| 综合久久人妻| 丁香五月婷婷基地| 色婷婷丁香| 91成人性爱视频| 99在线精品免费视频| 在线另类视频| 大天天伊人| 久久久aaa| 99亚洲天堂| 亚洲国产99| 国产精品电| www。狠狠干。com| 婷婷情色五月天| WWW.HENHENL.| 五月婷婷激情日本| 久久这里只| www久| 97色射| 狠狠综合| 深爱五月激情| 亚洲成人综合网在线免费观看| 婷婷成人综合免费视频| 欧美色色色色色色色色色色| 操逼三区| 色狠狠999综合| 五月成人丁香av91| 婷婷激情五月综合丁香社| 五月激情天| 综合激情伊人影视在线| 丁香五月综合AV在线| co超碰在线观看| 五月丁香久久久日婷婷久久婷婷日| 婷婷六月久久综合导航| 色色色热| 色播五月丁香综合| 99只有精品| 欧美日韩成人在线网站| 色婷婷激情四射视频| 亚州在线中文字幕| 婷婷丁香色无五月| 久久五月天激情| 成人资源在线| 国产97色在线| 丁香五月人妻| 99精品在线观看视频| 99久久99视频| 亚洲这里只有精品| 欧美99热| 国产毛多水多女人A片| 九色 在线| 五月天久久丁香| 色约约视频一区二区三区四区五区| 久色网五月| 4399在线观看免费高清毛片| 婷婷丁香六月影视| 91狼友视频网页更新| 五月天婷婷色小说| 激情五月婷婷色色| 五月婷婷激情性爱| 婷婷五月色花丁香社区| 在线观看免费观看在线9久| 色婷婷久久| 99色综合网| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 五月丁香啪啪网| 草榴视频黄色网| 99热网站| 99自拍视频在线| 久热无码| 九热视频这里只有精品| 五月丁香婷婷啪啪网| 五月丁香好婷婷A片网| 91久热| 在线观看免费视频| 婷婷久久六月费| 丁香88AV五月婷婷| 五月婷婷开心综合| 久久婷婷原创视频| 五月婷啪| 五月婷婷欲色| 香蕉久久国产AV一区二区| 久久久天堂国产精品女人| 99这里只有精品视频在线| 免费无码毛片一区二区A片| 丁香五月婷婷六月婷| 欧美天堂婷婷日韩| 婷婷五月天久久久| 9久精品| 亚洲精品国产A久久久久久| 婷婷五月天激情小说网站| 色婷婷成人做爰A片免费看网站 | 婷婷五月激情四月综合 | 色五月婷婷五月丁香五月| 婷婷色狠狠| 欧洲综合视频| 俺去啦综合网| 超碰在线9| 久久精品在线| 久久久久久久久久91| 99综合网| www.久久66| 天堂中文国产| 伊人大香蕉爱聚| 午夜免费试看| 美女丁香五月天| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 成人在线视频一区| 婷婷导航| 色99视频| peg 2区三区四区的| 影音先锋五月婷婷| www.色99| 97色片| 婷婷五月丁香六月天亚洲综合| 亚洲激情婷婷| 九九精品系列| 青草视频在线观看视频| 香蕉久久国产AV一区二区| 激情婷婷人妻| 狠狠色色| 日本三级色| 亚洲亚洲人成综合网络| 日本一级黄色电影| 开心五月深爱五月| 婷婷五月18永久免费视频| 色亚洲无码| 丁香六月婷| 久久99大| 伊人久久大香线蕉精品| 丁香五月天堂网| 99日本在线| 日韩AAAAA| 丁香五月婷婷动漫视频| 天堂综合久| 亚洲亚洲人成综合网络| 五月婷婷开心网| 丁香五月影视| 亚洲人妻Av| 五月婷婷六月丁香激情| 婷婷色情五月| 丁香五月在线观看完整版| 亚洲精99| 第2色五月婷| 久久综合婷婷激情| 激情五月网站| jiujiu无码五区| 五月婷婷激情综合| 天天肏视频| 99riAv1国产在线观看| 亚洲婷婷综合视频| 色色网91| 久久精品女人天堂AAA| 色综合99| 色婷久久| 国产人妻777人伦精品HD| 激情色色色| 五月婷婷久久综合| 激情综合五月| 九九精品免费| 五月婷婷六月丁香| 一点色成人网| 久久大国产香蕉| 人人摸人人操人人爱| 五月开心播播网| 国产一二区爆乳_1国产日韩一区二区三-成人AV| 99视频内射三四| 久久婷婷亚洲| 全部老头和老太XXXXX| 色啪网| 99热99在线| 色色色综合网| 久草热8精品视频在线观看| 国产精品久久久久久久久久免费 | 激情淫乱男女| 日本系列_4页_777FP| 99激情网| 思思视频这里是精品| 婷婷六月网| 亚洲精品性色| 五月六月激情| 91视频综合网| 另类激情中文| 高清无码网址| 丁香婷婷老熟女综合网| 99精品偷拍视频| 成人免费在线电影| 亚洲精品色色| 婷婷五月天亚洲图片| 婷婷五月花西瓜| 人人摸人人| 中文字幕成人| 黄急一级视频| 色www.con| 1024操逼视频| 怡红院院在线导航网| 人人舔人人色人人高潮| 五月激情婷婷在线| 色综合激情| 婷婷操逼| 大操人妻| 丁香六月婷婷开心| 色天天综合色| 26uuu欧美| 日韩啪啪视频| 欧美三级A做爰在线观看| 六月色丁香婷婷| 九九热在线99| 99精品九九| 中文字幕五月久久婷| 快乐激情五月色婷婷| 色五月五月丁香| 5五月综合网亚洲| 岛国av网站| 91精品91久久久久77777| 一二线视频 另类| 久久婷婷激情四射五月天| 亚洲激情在线| 激情五月婷婷开心网| 激情五月婷婷五月| 最近韩国日本免费高清观看| 五月狠狠| 色情五月丁香婷婷网| 天干夜夜操| 久久99操| 日韩欧美婷婷丁| site:xmssd.com| 草做免费在线观看| 久久a热| 最近中文字幕大全免费版在线 | 婷婷九九色| 久久综合丁香| 日日操,天天操| 九九99久久| 综合色七七| 婷婷九月亚洲| 开心激情网五月| 99热在线播放| Caop在线| 天天操狠狠操| 五月丁香综合中文| 国产乱轮一区二区三区| 9 1超碰九色| 狠狠色婷婷777| 少妇高潮一区二区三区99欧美| 亚洲AV成人一区二区在线观看| 狠狠色丁香久久久婷| 武汉美女啪啪视频免费一级片| 婷色五月天| 欧美123区免| 丁香六月激情综合网| 久久综合激情| 日本黄色在线观看| 99r这里| 天天综合色| 五月开心啪啪| 激情婷婷五月基地| 日韩AV免费看| 日木狠狠干| 性色婷婷| 香蕉久久国产av一区二区| 婷婷色狠狠| 清纯唯美 激情四射| 色日本丁香婷婷| 国产亚洲99久久精品| www.婷婷.com| 新97人人上人人| 日日干日日s| 丁香五月天激情综合| 色婷婷9| 婷婷五月在线视频| 久人人操| 激情小说在线视频| 婷婷激情五月视频| 五月天com| 热久久婷婷| jiqingliuyuetian| 超级久久久| 九九爱激情| 五月婷婷欧洲| 99热只有国产在线精品| 日本无码专区| 久热a| 91色性感五月婷婷丁香| 五月天激情子轮| 真实的国产乱XXXX在线91| 很操日本7| 色色欧美色色| 婷婷丁香五月激情中文字幕版| 国产精品扒开腿做爽爽爽A片唱戏| 六月丁香大香蕉| 人人摸人人操人人爽| 免费观看亚洲AV片| 99热9| 五月丁色AV| 女人高潮内射99精品| 日本ww亚洲| 国产乱子轮XXX农村| 颜射 精品性爱av| 激情综合网激情五月婷婷| 五月花亭亭| 91伦| 婷婷五月天亚洲五码| 99玖玖在线视频| Av大香蕉| 九九黄色网| 亚洲欧洲另类| www.六月丁香看AV| 日本欧特黄色刺激一区影视久精品无码| www婷婷| 97碰碰在线观看视频| 色婷婷9| 天天爽夜夜爽夜夜爽精品| 涩综合网| VA国产在线综合网站| 九月丁香很很色| 五月婷婷在线免费观看| 99热婷婷| 婷婷色情五月| 香蕉久久六月| 九九热精品| 国产综合激情五月久久| 蜜桃婷婷狠狠久久综合| 色综合色综合网| 天天色五月| 99久久婷婷精品视频| 五月天色综合| 色色精品色| 激情婷婷五月社区| 久久总和99| 婷婷五月综合欧美在线播放| 午夜福利8055| 香蕉综合网| 丁香五月婷中字幕| 极品色丁香| 欧美97超碰| 操久久网| 久8色色| 97婷婷丁香五月天激情图片| 五月婷婷无码| 噜噜国产| 激情网 五月天| 五月丁香六月婷婷久久| 一起草AV| 天天操夜夜爽歪歪| 婷婷五月天成人五月天| 性爱五月婷| 日日夜夜天天综合| 亚洲免费99| 九九五月天| 区欧美日韩成人| 这里只有精品视频一区| 这里只有精品亚洲| 五月亭亭色| 天天日夜夜爽| www.色综合.com| 五月天色网站| 夜夜爽天天| 婷婷五月天AV在线| 中文字幕成人| 97干在线观看视频| 五月花婷婷最新| VA色婷婷| 欧美日韩成人高清在线| 亚洲精品又粗又大又爽A片| 国产精品国产| 欧美色五月天| 人妻中文在线| 99综合熟女| 果冻传媒A片一二三区| 激情五月丁香五月| 97影院一级片| 激情小说视频图片| 天天干天天 亚洲| 99热免费精品热久久66| 亚洲岛国电影| 99原创自拍视频在线观看| 五月天激情国产综合婷婷| 国产精品爽爽久久久久久| 狠狠干思思热| 99aese| 在线区区区| 伊人99热| 色色丁香婷婷| 婷婷五月丁香91| 婷五月天六| 人人操超碰| 影音先锋91在线资源站| 九九综合| 99热亚洲| 六月婷婷激情图片| 丁香九月综合激情| 五月天婷婷丁香蜜桃91| 91男同视频| 天天干,夜夜爽| 九九热这里| 三级三久久线久久99久目本WW| 激情开心五月天| 五月天六月婷婷| 婷婷激情综合网| 欧美噜噜噜草| 国产 码在线成人网站| 色婷婷久久综合久色综| 538任你爽视频不一样的| 超级碰碰视频无码| www。久久久久一b。Cc| 久热婷婷| 99热这里只有精| 嫩草AV久久伊人妇女超级A | 九九视频这里是精品五月| 精品99这里有| 日韩五月婷婷| 99热精品少| 人妻内射一区二区在线视频| 久久婷婷五月综合伊人| 色五月激情问网站| 99热这里在线精品| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 色五月婷婷成人| 人人爽亚洲| 337p大胆噜噜噜噜噜91Av| 色婷婷小视频| 人妻丰满精品一区二区A片| 丁香五月综合网亚洲综合欧美狠狠| 欧美精品狠狠色丁香婷婷| 五月丁香啪啪啪| 色噜噜综合网| 99热碰碰| 丁香五月欧美色综合| 久热这里有精品视频| 91操女| 综合色在线| 丁香五月婷婷AV| 丁香五月社区| www.久久av.com| 五月花丁香婷婷| 无码网| 77777亚洲午夜久久| 精品爱欲五| 久久五月丁香| site:pnnrt.com| 五月丁香色五月| 丁香婷婷久久激情| 4399在线日本A片| 99视频自拍| 亚洲免费看片| 欧美va精品va老师va| 欧美精品A片一区在线观看| 丁香五夜激情四射夜夜夜| www.99热| 亚洲色频| 26uuu欧美日本| 五月丁香网站| 激情五月婷婷网| 91婷色| AV在线免费网站| 日韩操人| 婷婷丁香五月天色播网站| 激情av在线| 九九色热| 久er免费视频| 99热超碰| 色五月色五天色情网| 狠狠香蕉| 色婷婷婷婷成人网| 另类少妇人与禽zOZZ0性伦| 欧洲综合色| 99热8| 99色婷婷视频| 99热这里是精品| 久久丁香综合香蕉| 五月丁香色婷婷久久| 亭亭玉立国色天香| 天天爽天天摸人妻综合网| 丁香六月av| 亚洲成人乱码av网站| 91精品人妻少妇无码影院| 久热综合| 五月伊人综合| 久久久久久五月天| 成功精品影院| 超碰在线看| 白度黄视频| 97干欧美| 日本熟女一区二区| 大地9中文在线观看免费高清| 综合网激情五月天| 九九色图| 亚洲热久久| 五月天com| 丁香五月色五月| 五月激情日本在线| 丁香社92视频| 九九九九中文字幕| 五月天丁香综合久久国产| www.91久久| 思思热久久久久思思热| 激情网综合| 婷婷激情六月| 99热日| 99在线免费观看| 五月丁香六月婷婷久久| 六月香五月婷| 久久免费操| 4399无码视频| 99re在线免费视频| 热思思| 国产高潮白浆一区二区| aaa久久| 婷婷激情在线| 婷婷五月欧美AA片免费| 激情网五月婷婷| 性爱技巧五月| 日日操夜夜操狠狠操| www激情| g00d人体西西| 天堂中文国产| 老师把我爽高潮了免费A片| 99精品免费欧美小视频| 久热精品免费视频4| 久久机只有这里精品| 97干在线视频| 综合婷婷| 色婷婷www| 人人性久久| 天天爽天天干| 超碰在线人妻| 中文成人在线| 五月丁香色婷婷久久| 亚洲精品性色| 嫩草AV久久伊人妇女超级A| 免费试看小视频 99| 碰99在线| 狠狠五月天激情| 人妻系列久久久久久久久久久| 色色色99| 婷婷丁香五月亚洲欧美| 99热久久这里只有精品| 开心五月婷婷六月丁香| 影音先锋女人AA鲁色资源 | 中文av网站| 久99热| 老师高潮流白浆喷水的A片| 综合色天天| 99热 精品在线| 玖玖五月丁香| 婷婷五月天,影院| 亚洲无码激情| 激情丁香社区| 婷婷激情五月天小说| 97超碰在线免费观看| 欧美激情性做爰免费视频| 色婷婷五月天成人网| 五月丁香六月片| 丁香激情五月少妇| 国产精品国产| AⅤ网站在线看| 成人AV中文字幕| 巴基斯坦粉嫰无码视频| 超碰婷婷色| 激情五月婷婷| 日本色五月| 天天开心AV色综合婷婷五月天| 久久久全国免费视频| 欧美色色色色色| 婷婷五月天亚洲色| 97人人干| www.seqingwuyuetian| 午夜天堂啪啪| 色婷婷六月综合| www超碰| 日本色色网站| 极品五月天| 综合色、色综合| av大香蕉| 另类激情综合| 九九色综合九九色| 五月色俺婷婷| 激情丁香五月激情婷婷| 日日操夜夜操狠狠操| 9色免费网| 亚洲无码猫咪| 超碰一区二区| 91干在线视频| 婷婷九月狠狠色| 91九色网| 在线成人av播放| 91精品激情9| 色欲久久综合| 色五婷婷在线视频| 久久美女五月天| 天天色亚洲| 99热97| 激情五月天色播| 亭亭五月天黑人2014| 天天操天天日天天爽| 五月丁香婷婷综合在线| 久久国产高清| 久久丝袜婷婷| 青草网在线观看| 婷婷的五月天另类视频| 开心五月色婷| 丁香六月亚洲综合| 激情五月天小说| 亚洲综合五月天| 久久久99久久| 九月丁香| 成人在线视频网| 先锋影音av色五月天资源站| 九九热AV| 嫩模草| 热久久这里只有三级视频| 女人天堂久久| 91人人网| 综合色情网| 秋霞电影理论| 天天影院色| 日韩九区| 色欧美色色色| 色五月开心久久网| 九九九九国产| 色婷婷五月天亚洲| 日本三级中文字幕| 亚洲激情网站无码| 久久婷婷成人综合色怡春院| 色九月婷婷| 97婷婷五月丁香| 午夜日韩久久久网站| 99热欧美偷拍| 91AV婷婷| 国产毛多水多女人A片| 国产精品一区在线观看你懂的| 婷婷深爱五月丁香网| 亚洲va综合va国产va中文| 日本狠狠色| 丁香六月激情| 美女伊人久久| 色99亚洲| 狼人婷婷综合| 中文字幕视频色婷婷| 五月丁香婷草| 婷婷十月丁香| 综合激情在线| 大陆肏屄视频| 狠狠干狠狠干| 色色免费网站| 天天久| 综合AV网| 9er热在线精品视频| 久久这里只| 中文成人在线| 成人天天爽| 高清国产一级婬片a免费| 五月大香蕉| 五月丁香六月花| 超碰AV在线| 丁香六月啪啪| 久久99久久久久久| 婷婷色狠狠| 色婷婷成人做爰A片免费看网站| 懂色av粉嫩AV蜜臀AV| 丁香激情五月| 桃色激情婷婷伊人网| 天天爱天天狠天天透| 亚洲成人av在线观看| 天天艹天天综合网| 日韩超碰在线| 九九99男女视频在线观看| 丁香五月深爱五月婷婷| AV在线免费播放| 另类丁香综合| 婷婷五月激情五月激情| 五月天婷a在线| 99热视| 免费观看18视频网站| 99 热国产在| 激情久久综合| 99er这里只有精品视频| 丁香五月在线自慰| 99热久久日本| 亚洲性色XXXXX| 色狠狠色综合久久久绯色aⅴ影视| 丁香五月色综合色播五月| 91人妻PORNY九色大屁股| 久久九九99| 99热这里只有精品55| 精品久久婷婷五月天| 色99色| 丁香五月激情婷婷| 五月婷婷在线短视频| 俺去也五月| 婷婷五月天影视网址| 九九视频在线观看视频6 | 色噜噜,噜噜色| 久久五月天婷婷| 五月婷婷黄色| 激情 久久 婷婷| 日日夜夜干| 草综合网| ZpRSw| 伊人久久婷| 丁香六月中文| 色色色色色五月| 成人AV在线网站| 伊人超碰| 97色女人在线| 天天日天天色| 婷婷久久综合久色| 久er免费视频| avh片在线观看| 四色五月婷婷| 97在线精品视频| av人人干| 色五月激情五月天| 日日操夜夜爽白洁| 另类丁香综合| 香蕉久久av一区二区三区| 五月久视频| 少妇口诉沐足视频播放器网址| 婷婷趴趴| 在线免费视频caop| 丁香色婷婷| 四月婷婷五月丁香| 久久人妻情侣| 婷婷丁香在线| 91日精品| 综合AV网| 狠狠色综合网| 色99视频| 青青草成人网| 丁香五月婷婷激情视频播放| 丁香六月婷婷综情欧美| 丁香婷婷色情| 91人人人人人人人| 久久婷婷九月国产精品| 久久人人妻| 婷婷五月情| 97九色| 99操逼| 99ri在线视频| 天天射美女| 婷婷六月色开| 天天狠狠干| 天天拍久久| 色另类五月天| 好吊操这里只有精品| 久久狠狠欧美| 91viP在线看| 欧美精品99| 97精品欧美91久久久久久久| www久久艹| 成人婷婷色综合| 操人妻AV| 婷婷丁香五月天操逼| 欧美情色一区| 国产毛片精品一区二区色欲黄A片| 五月天婷婷成人| 丁香久久| 婷婷97碰碰| 欧亚洲在线高清视频| 色欲九区| 天天艹天天综合网| 成人五月天在线视频在线观看| 99色最新在线视频| 丁香婷婷少妇| 五月丁香淫淫婷婷婷| 五月天精品| WWW.婷婷| 琪琪色五月婷婷老师| 亚洲深喉AV| 亚州色综合| 金桔一区二区ab地址| av人人操| 久久人人九| 疯狂做受XXXX高潮A片| 狠狠色噜噜色狠狠狠综合色| 伊人玖玖精品| 色综合xx| 成人五月天丁香婷| 五月综合激情网| 丁香综合久久| 99热在线观看免费中文| 天堂草在线观| 丁香五月综合婷婷| 97超级碰| 有码人妻久久| 99亚洲精品视频| 亚洲精品无码一区二区| 日韩无码性爱| 激情五月天啪啪| 伊人五月婷婷| 亚洲av另类在线观看| 97在线精品| 天天日天天爽夜夜爽| 国产av天堂| 大香蕉五月天| 免费精品99| 色色欧美色色色| 九九热只有这里精品| 97影院一级片| 九九热精品| 综合亚洲六月婷婷在线| 能看的AV| 9在线9在线婷婷在线国产| wuyuedingxiang99| 狠狠爱激情网| 牛牛色av| 色婷婷综合网站| av国产精品| 激情丁香婷婷六月天| 九九色影院| 色色色1网址| 久久久久久丁香五月| 成人国产欧美大片一区| wWwCom夜操wwW| 久久婷婷精品| 在线播放成人网站| 激情五月婷| AV成人在线播放| 六月丁香综合| 99在线观看视频| 五月天.com| 日日夜夜狠狠婷婷色| 99天堂网| 日批在线看| 丁香五月 六月婷婷首页| 成人精品在线观看| 99视频地址| 国产3p露脸普通话对白| 涩涩涩婷婷| www。五月,com| 九九婷婷五月天| 激情綜合網址| 91精品久久久久久综合五月天| 四月婷婷五月色综合| 青柠影视免费高清电视剧| 五月丁综合在线观看| 久草 tingting| 丁香六月婷婷综合缴| 久热A片| 二级黄色毛片| 99热精品中文字幕| 激情综合99| 久久99网站| 综合激情深爱| 91久久九久久九久久九久久九久久 | 五月综合丁| 国产午夜一区二区三区| 亚洲日韩26uuu| 久草九九| 92久久精品一区二区| 色婷五月天| sisi热国产| 综合狠狠干| 亚洲午夜在线视频| 99热久草| 天天天摸夜夜夜玩| 99操逼视频| 97自拍视频网| 婷婷五月天成人| 五月婷婷真爱激情网| 婷婷,五月天,丁香,第一| av第一二区| 成人五月天综合网| 色综合色| 亚洲免费婷婷| 五月天伊人日日噜影片AV| 亚洲愉拍99热成人精品| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 人人干女人| 丁香五月综合网| 婷婷色中文字幕| 成人五月天丁香婷| 丁香六月婷婷综合欧美| 青娱乐美女福利视频美臀| 激情综合婷婷| 色伊人啪| 99热这里只有精品最新| 丁香五色月婷婷网| 日本三级韩三级99久久|