免费国产精品自在自线-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
返回資訊列表
国产欧美第五十五页| 综合一本道| 婷婷在线日韩综合| 婷婷天天色| 激情五月婷婷啪啪| 五月丁香网av| 六月丁香久久| 91九色小视频| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 欧美99热| 另类A片| 精品99只有。| 色情播放| 色九月激情综合网| 91操色| 激情五月天的婷婷| www五月天com| 综合激情在线观看| 五月丁香亭亭AV女优| 国产精品涩涩涩视频网站| 五月天丁香成人社| 狠狠爱婷婷| 99久久玖玖| 思思99热在线| 99热精品网| 色碰碰| 婷婷干六月综合旧址| 婷婷五月花| 亚洲人妻AV| 777色色色| 丁香激激情网| 国产裸舞表演WWWW| 无码色色| 六月激情综合| 97丁香五月| 九九99久久| 伍月婷婷六月丁香| 99在线精品免费视频| 婷婷五月天深爱| www.xtbsty.cn.com蜜乳AV| 99精品免费欧美小视频| 国产26uuu视频| 亚洲精品乱码久久久久99| 九色婷婷| 婷婷五月天av网| 中文字幕av在线| 另类伊人婷婷| 99热这里只有精品26| 激情综合五| www.日韩国产| 思思99热这里只有精品| 五月亚洲激情| 色高清无码视频| 亚洲天堂亚洲色色色| 99久久综合网| 婷婷九月激情| 婷婷丁香色五月久久88| 五月天婷婷视频小说| ji'qi'luan'ren'lun| 男女久久婷婷五月天| 成人小说 五月天 婷婷| 天天免费日日夜夜夜夜| 五月天综合久久| 五月天开心网| 亚洲操操| 婷婷日韩| 婷婷免费无马| 婷婷五月激情片| 艹| 久久思思热视频| 丁香久久久| 婷婷免费视频| 日日日日日| 亚洲国产精品VA在线看黑人| 天天透天天干| 婷婷精品| 99亚洲色| 久久久婷婷婷| 在线免费视频caop| 超碰女人天堂| 天天干天天色天天干| 色五月丁香五月婷婷五月成人网| 久婷| 成人 在线观看国产| 国产色色小草视频| 噜噜噜噜噜久| AV五月婷婷露脸| 狠狠操狠狠| 六月婷婷综合| 99热这里只有精品33| 99免费视频精品| 亚洲天码视频www蛋播视频| 久久精品性爱| 午夜少妇在线观看视频| 欧韩性爱| 99久精品视频| 五月天婷婷在线视频| 少妇性按摩无码中文A片| 99色视频免费在线规看| 91视频五月丁香| 中文AV在线播放| 亚洲综合五月天婷婷| 久久AAAA片一区二区| 91九色PORNY大屁股| 欧美性爱日韩性爱| 天天激情视频| 五月激情综合网| 国产JK精品白丝AV在线观看| 97操碰碰无码视频| va亚洲中文在线| 五月婷婷日| 婷婷综合网站| 武则天精品久久| 99re这里有精品手机在线| 五月天播播中文字幕| 中文字幕在线播放视频| 黄色aa观看aaguochan| 丁香五月婷婷AV| 欧美毛片www| 日韩在线观看亚洲| 日本韩国视频在线观看社区免费的9| www,超碰| 黄页大全十八禁| 色色色婷婷五月天| 91窝窝| 激情五月,色五月| 这里只有精品免费观看网占| 日韩黄在免| 丁香五月人妻| 性爱五月婷婷| 日韩成人网站精品久久大全| 9 1超碰九色| 成人免费120分钟啪啪| 婷婷五月天网址| 五月开心婷婷| 成人无码精品1区2区3区免费看| 五月婷婷激情| 丁香五月成人婷婷| 色五月美女| 99热在线爱| 五月丁香六月婷婷欧美综合| 色五月婷婷在线观看第一页舔| 日韩啪啪视频| 久久伊人婷婷| 9999三级片| 五月婷婷福利| 中文不卡av| 99热欧| 99热大香蕉| 在线亚洲综合网| 99热骚货| 伊人婷婷99热精品| 思思久久99热只有频精品66| 亚洲亚洲人成综合网络| 深爱开心激情网| 伊人五月综合网| 91狠狠色丁香| 色婷婷综合久久久久| 婷婷五月色花丁香社区| 丁香五月电影| 久久色9| 婷婷基地爱| 激情性爱五月天网页| 六月丁香婷婷亚洲中文玖玖| CHINESE熟女老女人HD视频| 99re免费精品视频| 精品人妻一区二区三区四区不卡在| 99视频| 六月婷婷操逼| 99热在线观看| 日本综合久久| 色色色欧美| 五月色在线| 91热久久| 丁香五月成人论坛| 丁香五月婷婷综合激情哟哟哟| 久久99久久99精品免视看婷婷| 综合网色| 丁香五月天无码| 中文字幕无线久必| 五月丁香五月综合欧美| 青青草轻轻操| a网站免费观看| 色色无码日韩| 日韩丁香涩| 天天摸人人摸| 1024手机在线观看看片_日韩精品| 日韩综合久| 婷婷五月天网址| 久99久在线观看| 成人 在线 日韩| 成年人丁香五月| 丁香五月天在线视频| 九九热精品视频在线观看| 色五月丁香五月五月婷婷| 91色久| 色色啊| 香蕉人妻AV久久久久天天| 久噜久噜| 另类图片激情五月| 免费观看欧美成人AA片爱我多深 | 天天做天天爱天天高潮| 婷色人人狠| 免费无码毛片一区二区A片 | 五月激情网站| 六月综和久久| 99人妻碰碰碰久久久久| www99热| 爱婷婷久久视频| 丁香婷婷五月人体| 狠狠操狠狠爱| 婷婷天天婷婷天天澡| 色九月婷婷综合| 午夜丁香| 久久五月天色婷婷| 婷婷狠狠五月综合| 日本一道久久| 麻豆忘忧草午夜| 五月婷婷啪啪啪| 色爱综合视频| 丁香五月停停基地| 97超碰婷婷五月天| 五月婷色| 激情www| 丁香五月六月久久综合| 人人操操| 久久精品凹凸分类| 色婷婷久久| 天天爽夜夜爽天天爽夜夜爽| 97久久视频| 九九在线热九九在线热99热| 成人av中文字幕| 欧美va视频不用播放器的va视频网| www99xxxx五月丁| 五月婷婷之综合激情| 成人丁香婷婷五月天| WWW色色色COm| 色月丁| 亚洲综合五月| 强伦轩人妻一区二区电影| 综合五月丁香久久| 超碰在线成人| 九九视屏| 精品视频网| www.99在线| 色天五月天在线观看视频| 丁香五月天激情婷婷丁香六月| 久久一伦| 91碰免费视频| 性做爰A片免费视频A片直播| 久久五月天综合| 综合成人小说婷婷| 色噜噜狠狠插综合| 婷婷亚洲在线| 深爱五月中文字幕| 丁香五月天色| 久久婷婷六月| 97操在线视频| 大香蕉99| 午夜丁香综合婷婷| 丁香六月色| 六月色丁香婷婷| 免费AV播放| 99视频在线播放大全| 这里只有精品9| 久久婷婷六月| 色综久久AV| 五月丁香久| 久久精品日| caop视频| 婷婷五月综合性爱| 日本在线播放97| www.色婷婷| 日韩啪啪网| 2020日日干| 五月婷天天搞视频| 人妻精品一区二区三区| 丁香桃色网| 在热视频精品| 老司机日日夜夜青草| 久久开心五月婷婷| 日日插日日干| 色五月综合在线| 99热这里只有精品最新网址| 天天舔天天操| 五月丁香色综合| 97 A I色色| 婷婷五月噜噜| 人妻无码精品一区| 亚洲天堂色色| 99久久久久久| 深爱激情五月天| 五月天开心激情综合网| 婷婷久久网| 国产成人综合网| 开心激情综合| 91久久精品国产91性色TV| 五月天精品| 国产又粗又大又爽又黄| 激情都市另类| 日韩有码一区| 99热1| 五月婷婷丁香啪啪| 久久婷婷五月综合97色一本| 涩涩五月天综合| 五月天色婷好好| www.精品99| 丁香五月天激情小说| 中文字幕簧片| 狠狠色噜噜狠狠狠狠综合| 99久久网站| www.天天干| 欧美在线97| 久久三级视频| 一二线视频 另类| 久久婷婷综合五月| 久久视频婷婷| av婷婷丁香 六月| 第四色婷婷最爱| 天天操天天日天天操| 舔色婷婷| 99热最新| 五月久久丁香| 亚洲第一成人无码A片| 国产欧美日韩性爱| 丁香五月亚洲天堂| 久久久久9999| 色99久草在线| 日韩成人电影AV| 99久久这里只有精品免费官网| 天天干肏夜夜| 色99自拍| 色五月 婷婷, 大香蕉| 97sese婷婷| 中文资源在线a | h在线看免费版在线看| 乱精品一区字幕二区| 色综色网| 大香蕉久操| 777丁香六月青青草婷婷综合久月| 久久五月婷天天干| 日本九九九九| 玖玖综合色区在线观看| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 色色综合热| 色天堂A| 九九视频这里是精品五月| 青青福利网| 日本一级一片免费视频| 久久九网| 色色99色色| 99久久性爱| 99热在线精品观看| 久久精品五月| 天天射天天射一道本日本社区 | 搡BBBB搡BBB搡五十| 五月丁香成年黄色| 开心色播色五月婷婷| 9月色婷婷| 青青久在线视频免费观看| 99九精品| 久久久久99精品成人片| 思思热在线| 39视频第二区| 五月婷婷九| 国产激情综合五月久久| 色色日本欧美| 人妻VideOssS人妻高清| 国产精品久久久久久妇女6080| 91精产一区三区免费观看| 五月婷高清视频| 91色在线 | 日韩| 免费无码毛片一区二区A片| 丁香五月先锋| 人人干人人看| 人人操人人妻| 偷拍视频五月天| 这里只有精品视频免费在线观看| av在线激情| 五月丁香AV在线| 亚洲激情网| 另类专区在线| 爆乳熟妇一区二区三区爆乳| 在线99精品| 欧美久久婷婷| 香蕉网婷婷| 男人的天堂999| 91久久久久久久久| 玖玖无码中文| 99福利导航| 99re在线免费视频| 久久少妇视频| 久热爱大香蕉在线蜜臀悦色 | 丁香六月激情综合| 99热在线爱| 久久色五月天综合网| 色噜噜狠狠色综无码久久合欧美| va婷婷在线| 天天干夜夜想| 五月综合色| 五月天狠狠色| 色婷婷免费视频| 五月婷婷丁香六月| 亚洲婷婷婷| 涩综合婷婷| 色色色五月| www色五月天| 激情五月丁香五月色| 五月天婷婷在线啪啪视频| 婷婷成人五月天| 婷婷丁香人妻天久久| 伊人网碰碰| 人人干女人| 成人免费高清在线播放| 久草性爱| 五月婷婷六月丁香| 色色色视频| 狠狠干综合| 人人爱天天摸摸天天爱| 久久婷婷五月天激情新地址| 五月天深爱激情网| 欧美日韩中国| 狼人久草| 亚洲精品乱码久久久久99| 丁香六月激情| 玖玖精品资源| 任你干线上免费视频有3吗| www,99热| 国产成人av在线播放| 日本九九九九| 狠狠狠激情网| 亚洲视频无| 91超碰在线播放| 91丨九色丨东北熟女| 免费视频无码| 婷婷五月天资源| 久久182| 久青操| AV九九| 九九热免费视频| 丁香花五月天| 五月天激情啪啪| 超碰精品在线| 九九九九九九九热| 午夜丁香综合婷婷| 色玖玖| 夜丁香五月婷婷| 啪色综合| 双性美人被调教到喷水A片| 五月婷婷乱| 99久久.www| 91碰碰碰| 婷婷五月天六点丁香五月| 五月丁香婷草| 99国产精品白浆在线观看免费 | 色噜噜97视频在线观看| 亚洲激情电影五月天色婷婷丁香一起草| 国产精品激情AV久久久青桔| 天天日天天插| 2023天天日夜夜爽| 99热亚洲精品| 91妻人人爽人人看片| 思思热精品在线| 99久久99久久综合| 五月丁香天堂| 99精品久久| 色 色 色综合com| 婷婷五月天AV| 婷婷激情五月天桃花网| 成年人丁香五月| 天天日天天日天天搞| 日本久久婷婷| 最新婷婷五月丁香| 久久婷婷六月综合| 婷婷丁香91| 99re久久| 亚洲综合五月天婷婷| 婷婷久久欧美| 伊人五月天97| 精品99*| av中文在线| 五月丁香亚洲婷婷| 天天婷婷天天| 亚洲精品99| 婷婷丁香五月基地| 97很鲁在线视频| 99激情在线| 婷婷五月天免费视频在线观看| 狠狠操狠狠爱| 五月激情射| 欧美色一级色| 综合激情五月丁香| 日本99久久| 色五月在线播放| 26uu| 婷婷六月综合在线| aⅤ79成人片| 九九综合图片网| 91精品久久久久久久久久| 日本久久天堂| www.99热在线| 亚洲五月天婷婷| 五月开心婷婷| 五月天激情婷婷五月天久久| 侠女刀之记忆电影在线看免费| 六月婷婷色色色| 亚洲成人精品三区| 大香蕉在线99热| 国产乱妇无乱码大黄AA片| www.五月婷婷久久.com| 精品爆操| 色婷婷六月| 综合久久六月| 丁香五月天网友自拍啪啪啪视频| 99热只有精品在线观看| 噜噜噜色噜噜| 丁香五月丁香伊人| 久久66精品| 九热在线这里有精品6| 丁香色色网| 青青草原亚洲天堂| 99色中文| 婷婷色网站| www99久久| 狠狠操狠狠插| 五月婷在线| 色婷婷小说网| 天天拍天天操| 99热9999| 五月丁香六月欧美综合网站| 五月亭亭直播| 丁香五月婷婷色| 99这里都是精品| 婷婷五月色天| 国产AV一区二区三区日韩| 婷婷五月色| 欧美一级色| 超碰久热| 欧美婷婷色| 久久久全国免费视频| 五月丁香婷婷欧美色图视频五月丁香777电影 | 欧美激情综合| 99久久a线观| 激情丁香淫荡婷婷| 99热这里只有精品1998| 亚洲六月色| 激情综合网五月婷婷| 99只有精品| 97色视频网| 亚洲99热| 五月丁香婷婷激情爱爱| 少妇婷婷五月天| 日本在线99| 日本一级| 一夜福利不卡| 婷婷五月伦理| 综合五月丁香六月婷婷| 这里只有精品免费视频| 五月开心网| 亚洲视频一区| 变态另类色图| 97在线碰| 久久机热这里只有 | 丁香五月电影| 538在线精品| 91男人资源站| 成人五月天丁香| 天天日日夜夜爽| 欧美毛片www| 情久久综合五月天| AV九九| 欧美激情综合五月色丁香| 思思re最新视频| 久久全色| 五月婷婷色播视频| 狠狠干综合网| 色播五月婷婷| www.1024久久| 国产伦理精品高清在线观看网站一区二区 | 久热这里这里有精品| av高清无码| 久久久日韩特色特黄AAAA| 久久人人九| 五月色亭丁香| 丁香五月六月婷婷综合| www.久久| 精品人妻在线| 欧美综合在线五月天色婷婷| 天堂在线9| 中文字幕丰满孑伦无码专区| 久99热在线观看| 五月天亚洲最大成人| 色婷婷视频在线| 五月天婷婷丁香| 午夜]香婷婷深深爱| 五月天激情四射| 丁香婷在线| 99热9| 久久精99| www.狠狠操.con| 超碰在线免费9| 日韩性爱AV| 情色五月天网站| 婷婷激情五月天视频在线| 永久精品| 成人av在线网址| 婷激情五月| 天天天干夜夜夜操| 黄久久久| 天天日日爽| 九九热在线精品视频| 视频1区2区| 色丁香五月综合网| 国产精产国品一二三在观看| 久久久www| 色婷婷狠狠| 高潮毛片又色又爽免费| 丁香六月婷婷综情欧美| 色婷婷狠| 色综合香蕉| 九热视频这里只有精品| 91日韩在线| 超碰97干| 激情网婷婷五月天| 97偷拍对白视频| 婷婷五月天色网久| 天天干天天做| 五月婷婷激情综合| 任你日视频| 色色婷婷婷丁香五月天| 这里只有精品视频一区| 大香蕉久久视频久久视频 | 久久 婷婷 五月天| 五月婷婷视频| 亚洲第二AV| 激情五月婷婷综合色播小说| 日韩无码AV电影网站| 色综合久久五月| 99热这里只有精品首页| 99热在线观看| 超碰精品在线| 九九色精品| 伊人久久大香网| 9有码中文| 五月婷丁香| 涩 五月 婷婷 狠狠| 五月婷婷啪啪啪啪| 超碰免费电影| 五月丁香成人视频| 欧美人人女女精品综合五月天| 亚洲综合色色色| 九色视频入口91| 噜噜噜噜噜色| 91超级碰人人操| 欧美黄色AA片哗啦啦啦| 色婷婷色| 丁香九月综合激情| 丁香五月欧美成人| 五月丁香六月综合激情| 99rewww| 激情久久久| 婷婷丁香成人在线视频| 变态 另类 在线| 日日肏夜夜干| 青青草原爱爱网| 性综合网| 狼人久草| 午夜性做爰电影| 综合五月天天天天天五月| 五月婷婷亚洲天堂97色婷婷| 五月丁香六月婷婷国产视频| 99综合自拍| 大香蕉综合| 婷婷五月天激情四射五月天激情| 国产亚洲精品AAAAAAA片| 五月天小说激情| 久久免费高| 成年人丁香五月| 日本美女上人| 八戒青柠影视剧在线观看| 久久这里只有精品无码| 人人操人| 婷婷伊人网| 99在线免费视| 九月丁香婷婷网| 久久亚洲天堂| 天天做天天爱天天日| 婷婷色五月大香蕉在线| 另类激情五月在线视频欧美| 日本三级大片| 日韩在线观看网址| 激情六月天| 99热综合在线| 99操不停| 亚洲另类在线观看| 9999色色色色| 色色狼人综合| 免费观看全黄做爰的视频| 五月天婷婷在线播放免费| 99黄色在线视频精品熟女| 日本99久久| 丁香成人视频| 五月婷婷在线丁香| 日韩精品在线观看9| 碰超99| 777精品成人a v久久| 婷婷色五月天色| 久久婷婷热| 韩国天天婷婷| 26uuu淫色| 99久久新视频| 成人美女网| 久久激情天堂| 开心五月婷婷在线视频免费观看| 182TV亚洲| 久久99热网| 久久婷狠狠色| 久热这里只有精品在线| 激情视频婷婷五月花| 69久久久| 亚洲色五月| 五月婷婷丁香五月 | 国产精品香蕉| 丁香五月综合色婷婷| 狠狠九九婷婷韩| 欧美成人精品A片免费一区99| 能看的av网站| 婷婷五月开心中文字幕在线| 99精品久久久久久久婷婷| 任你干aa| 青草视频在线观看视频| 9久国产精品| 五月丁香花婷婷玉莉AV| www.夜夜操.con| 五月天激情四射网站| 久久久宗合视频88| 婷婷伊人綜合中文字幕| 色丁香婷婷| 激情文学五月丁香六月婷婷| 久久奄也去色色网站| 91超级碰| 91ncm视频| 婷婷六月久久| 五月停性愛| 欧美大肥婆大肥BBBBB| 91久久1118| 色播五月网| 99综合激情久久精品久久| 国产99精品免费视频| 亚洲成人影视在线观看| 婷婷五月丁香超碰| 中文字幕亚洲-区久久99婷婷| 国产精品成人AV在线观看春天| 色99在线视频| 99精品久久久久久久婷婷| 婷婷狠狠干| 亚洲人成人五月天| 欧美激情五月| 丁香五月网在线观看| 秋霞三级影视资源| 天天天操天天天爰| 好好干Av| 九九热视频精品2| 99九色视频在线观看| Www99热| 丁香五月婷婷Av| 婷婷丁香91| 婷婷五月六月丁香| 日韩AV中文字幕在线| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 99性爱| 婷婷五月天堂| 激情综合网五月婷婷| 成人在线日韩| 亚洲综合激情五月久久| 五月婷婷六月丁香综合在线| 色吧综合网| 岛国AV网| 色婷五月天| 五月天婷婷基地| 久久久久久久久久8888| 五月花婷婷| 国产精品久久久久久久久久免费 | 五月婷婷久久激情| 人人干人人操人人摸人人做| 99热99这里有免费的精品| 亚洲六月婷| 亚洲色婷婷视频| 激情综合丁香五月| 天天色99| 日韩成人综合网| 亚洲第一第二网站| 26uuu欧美| 影音先锋91在线资源站| 五月丁香狠狠爱婷婷综合| 91综合视频在线| 婷婷网影院| 日韩亚洲视频| 玖玖99福利| 婷婷丁香五月欧美人| 色综合射婷婷| 日本久久性| 五月激情婷婷在线| 色五月激情五月| 五六月婷婷久久| 久久免费丁香| 婷婷激情五月吧| 亚州日本欧州韩美高青高潮一| 久热视频这里只有精品| 九色无码| 婷婷综合激情| 91热久88| 日本久久婷婷| 丁香六月中文| 激情综合五月婷婷六月丁香| 激情综合九月| 老师的粉嫩小又紧水又多A片视频| 激情操逼婷婷| 婷婷丁香五月91| 日韩好吊操| 日屌日日操日日色| 色噜噜狠狠色综合日日| 久久一级AV| 伊人网啪啪| 99热久只有精品首页| 色婷婷久综合久久一本国产AV| 99色网站| 激情都市另类| 国内一级精品| 91dy.av| 99操免费视频| 香蕉AV福利精品导航| 91人人爽人人操| 国产亚洲99| 天天综合亚洲| 性综合网| 99久久.www| 亚洲精99| 丁香五月婷婷激情尤物| 无遮挡国产高潮视频免费观看| 色色影院黄大片| 久久这有这里精品| 亚洲va综合va国产va中文| 五月婷婷啪啪| 99ri在线播放| 精品九九视频| 欧美在线干| 丁香啪啪中文字幕| 永久的网站AAAA| 天天天干夜夜夜操| 国产精品久久久久久久久久| 久久色9| 这里只有精品视频看看| 久99视频| 大香蕉娱乐| 狠狠狠激情网| 九九视频这里只有精品| 99在线爽| 九九九午夜影院成人| 午夜成人天堂久久无码日韩久久| 波多野结衣不卡AV| 婷婷丁香五月亚洲欧美| 亚洲五月停停| 午夜伊人大香蕉| 六月99天天婷婷激情综合| 婷婷五月激情中文字幕| 丁香色婷婷色手机免费在线| 激情小说五月天社区丁香| 久久精品人妻| 久久久日韩特色特黄AAAA| 99色看这里只有精品| 97人人操在线| 哇嘎成人久久| 丁香婷在线| 青青草国产亚洲精品久久| 综合色99| 97热精品| 久xxxx| 99在线精品视频免费观看20| 免费看欧美成人A片无码| 久久三级视频| 精品久久久999| 婷婷激情四射五月天| 色五月婷激情| 国产XXXX搡XXXXX搡麻豆| 久久这里这里有精品免费视频| 操人久久| 色www.con| 亚洲天堂aaaa| 色婷婷五月综合色婷婷| 久热只有这里精品| 婷婷欠久少妇| 激情99热| 狠狠干狠狠色| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 精品人妻久久久久久| 91干99| 亚洲狠狠狠| 超91热| 麻豆五月丁香婷婷| 熟女色色一区二区| 色久五月| www,黄色在线,con| 激情综合网亚洲色图| 五月丁香六月| 激情伊人五月婷婷久久| 国产古装妇女野外A片| 袁子仪视频观看| 精品久热| 六月丁香婷婷网| 中文字幕网伦射乱中文| 丁香婷婷久久激情| 777精品久无码人妻蜜桃| 无码G高清天| AA片在线观看视频在线播放| 色久五月| 色亭亭九月| 91成人性爱视频| 碰人人操| 99久.| 婷婷激情五月综合| 伊人久久婷婷| 丁香五月深爱五月婷婷| 久久这里只有精品无码| ..真实国产乱子伦毛片| 婷婷五月天男人影院色色网| 六月色 亚洲| 天天天天干| 五月婷婷啪啪啪| 一起草性爱不卡视频| 色之综合网| 亚洲电影在线观看| 99成人小视频| 婷婷色情五月| caop在线视频| 亚洲天堂AV免费片| 亚洲在线网站| 久久亚洲天堂| 色婷婷丁香网| 激婷网| 狠狠插狠狠操| 精品人人操| 免费看欧美成人A片无码| 9这里只有精品| 欧美人人超级碰| 日本三级黄色大片| 婷婷六月丁香激情综合| 91女人18毛片水多国产| 91久久九久久九久久九久久九久久| 激情久久五月天| 亚洲精品无码一区二区| 亚洲国产色色| 色婷| 国产99久久久国产精品免费看| 婷婷王月天影院| 亚洲综合在线播放| 做爰丰满少妇1313| 婷婷五月天在线综合| 99熟女视频| 国产欧美日韩综合精品一区二区| 五月色天情| 97在线精品| 99在线视频。| 亚洲精品国产成人AV在线| 亚洲综合丁香五月| 九九热婷婷| 99这里有精品视频| 天天久| 思思热久久阴99| 97午夜一区二区| www.婷婷五月| 天天日天天干天天插天天射| 婷婷的99视频网站| 色婷婷中文| 91精品婷婷国产综合久久| 另类小说五月天综合网| 色情五月婷| 碰97 久| 97碰碰视频在线观看| 五月丁香五月天现场视频| 久久精品五月天| 久久久久久久久久久-久五月天婷婷| 91久久色| 深爱五月亚洲| 欧美婷婷| 久久精品噜噜噜成人A∨色欲| 大香蕉AV在线| 国产午夜精品一区二区| 五月丁香人人婷婷在线观看| 日本3级片偷拍网站| 99热每日| 九九在线视频| 91色在线 | 日韩| 免费观看的AV| 性爱先锋AV| 丁香五月婷婷Av| 五月天丁香色色| 99在线小视频| 五月天久久综合婷婷| 五月婷婷免费视频| WWW,五月天| www.激情com| 激情操逼婷婷| 五月婷视频| www.色婷婷.com| 26UUU精品一区二区c〇m| 五月丁香久久网| 久久99免费视屏| 精品二区| AV大香蕉| 99热精品在线观看| 99热激情| 日本va视频| 五月激情丁香久久综合网| 婷婷99狠狠躁天天躁中文| 丁香婷婷六月| 亚洲成人AV高清字幕| 99精品综合| 色婷婷激情| 五月六月丁香激情| 狠狠干伊人| 狠狠色狠狠鲁| 人人操Av| 亚洲精品视频在线| 夜夜久久综合网| 婷婷五月天首页激情| 九九操综合网| 五月婷婷丁香深深爱| 色综合色五月| 欧美 日韩 成人在线| 99碰视频| 91视频久久久| 91伦| 黄色av网站在线免费播放| 97精品人人A片免费看| 欧洲色| 99ri视频| 大香蕉伊人久久| 狠狠综合网| www色色com| 天天插天天插| 99操视频| 婷婷丁香六月天| 九九黄色网| 久久婷五月天| 99网| 免看黄大片AA | 97在线观看| 精品爱欲五| 在线中文AV| 久久加勤综合| 狠狠色综合图片| 久久99草五月婷婷| 五月丁香A片| 97婷婷丁香五月天激情图片| 久久亚洲天堂| www.色9| 另类视频一区| 91丨熟女丨首页| 亚洲五月婷婷在线| 九九视频精品这里只有| 久久er九九| 婷婷五月天人妻| 综合五月激情网| 五月婷婷丁香瑟瑟视频| 五月丁香影视| 91碰在线| 伊人啪啪网| 开心五月婷婷激情| 国产SUV精品一区二区6| 97精品人人A片免费看| 五月婷婷 婷婷五月 一区二区 久久久| 九九草草逼| 丁香五月婷婷亚洲另类| 色狠狠色综合久久久绯色AⅤ影视 大香蕉五月天婷婷丁香91 | 99在线观看视频精品| 欧美色六月婷婷| 一级二级香港秋霞欧美欧美秋霞| 97 A I色色| 亚洲黄色精品| 久久久精品人妻| 爱99干99| 成人 AV播放| 99re久热只有精品6在线直播.com| 二色AV| 天天拍天天做视频| 日本激情综合| 激情婷婷久久| 婷婷亚洲综合| 182.t午在线观看| 超碰97免费在线| 久久99这里只有精品| 思思99热这里只有精品6| 开心激情综合| 色色色综合网| av高清无码| 丁香五月婷婷Av| 亭亭丁香久久五月| 十月丁香九月婷婷综合| 日本啪啪网| 国产FREESEXVIDEOS性中国| 丁香五月天社区婷婷| 亚洲国产成人在线| 精品九九视频| 91久久九久久九久久九久久九久久| 色99在线| 97热超碰| 九九人妻福利| 99热6色| 色播五月婷婷| 1024欧美看片| 婷婷五月天久久久| 国产一区男女| 一起草Av| 久久综合五月天激情小说网站 | 婷婷中文字幕版| 激情丁香五月| 中文字幕精品无码一区二区| 99精品高潮| 5月丁香婷婷| 天天干天天插| 国产肥白大熟妇BBBB视频| 26uuu偷拍亚洲欧洲综合| 五月丁香婷婷激情在线视频| 夜夜谢天天干| 亚洲精品久久久无码| 综合色影| 另类综合网| 狠狠做婷婷| 大香蕉丁香| 天天激情视频| 日本啪啪网| 狠狠狠狠狠狠草| 9er热在线精品视频| 婷婷天天日婷婷| 亚洲V国产V欧美V久久久久久| 国产视频福利| 久久久久久综合五月婷婷| 中文字幕在线播放视频| 婷婷丁香中文字幕| www久久久| 婷婷五月欧美AA片免费| 亚洲综合视频天天精品| 久久婷婷六月综合综合| 99人妻碰碰久久久禁片| 日本三级黄色大片| 91精品久久久久、久五月天| 99久久66综合| 伊人春天av| 色天堂A| 91人人人人人人人| 狠狠久久婷五月综合色| 超碰国产AV| 91a片爽| 五月综合婷婷网| 亚洲久久激情| 五月婷婷综合久久| 99在线观看精品视频| 熟妇高潮一区av| 99这里只有免费的精品| 婷婷五月激情综合| 久久大香蕉视频| 欧美色色网| 日韩在线视频9色| 综合xx网| 饮料下药迷倒漂亮女同事强干| 91精品久久久久久久久| 日日爱激情| 99视频综合| 26uuu欧美亚洲日韩| 五月丁香影视| 九九热只有这里精品| 九月婷婷久久| 999激情视频| 六月婷婷色色色| 日韩精品99久久| 天天天天天日| WWW色色色COM| 五月激情综合深爱| 亚洲五月六月婷婷| 啪啪五月天啪啪| 97碰碰碰免费公开在线视频| 97五月天婷婷午夜| 婷婷丁香六月| 久久婷婷丁香五月一二三| 久久这里只精品| 热中文字幕| 噜噜视频| 密黄站| 色五月成人| 婷婷欧美色| 色综合五月天| 婷婷五月天xxx| 婷婷五月天成人| 五月婷婷六月丁香激情综合网| 日本天天操| yazhouzonghesese| 国产精品久久久爽爽爽麻豆色哟哟| 中文不卡一二三区| 玖玖色综合色| 狠狠干五月丁香综合网| 五月激情久久| 亚洲第一综合| 色天堂在线| 丁香啪啪| 激情综合网络插| 大地9中文在线观看免费高清 | 天天色综网| 華人性愛AV在線| 婷婷五月天激情四射| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 99黄色| 人妻Av在线| 国产精品色婷婷久久久精品| 爽极品色| 婷婷亚洲综合| 色综合开心五月深爱五月| 久久九九激情五月天 | 夜夜干天天干| 激情啪啪五月| 99操| 色人五月婷婷| BlACKEDRAW视频一区二区| 亚洲激情五月| www.99热视频| 99热| SESE无码AV| 高清国产一级婬片a免费| 色婷婷六月天| 丁香五月天色综合| 欧美特大片黄| 激情综合五月婷婷六月丁香| 另类 在线| 99爱在线视频| 五月天婷婷青青草| 99碰视频| 婷婷丁香人妻天天爽| 色综合久久天天综合网| 丁香五月婷婷国产在线| 久9视频免费播放| 丁香五月AV综合| 色五月色开心开心五月| 色综合九九色综合88| 怕怕av| 婷婷五月娱乐在线| av九九| 国产精品久久久60086| 亚洲婷婷五月| 99亚洲精品| 五月天.com| 99激情网| 高清 码 免费看片短视频| 日本久久婷| 青青草视频福利| 色色狼人综合| 9久热精品在线视频| 丁香五月社区| 婷婷日| 色婷婷情片| 北京熟妇搡BBBB搡BBBB| 天天色天天日天天舔| 色五月婷婷狠狠撸| 超碰99热在线观看| 狠狠操天天干| 激情深爱五月天| 五月婷婷亚洲综合网|