色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

STM32H7硬件IIC驅(qū)動EEPROM:從CubeMX配置到HAL庫實(shí)戰(zhàn)

STM32H7硬件IIC驅(qū)動EEPROM:從CubeMX配置到HAL庫實(shí)戰(zhàn) 1. 項(xiàng)目概述與核心價值最近在做一個基于STM32H7系列的高性能數(shù)據(jù)采集板需要頻繁、可靠地存儲一些校準(zhǔn)參數(shù)和運(yùn)行配置。一開始圖省事用了軟件模擬IIC去讀寫那片AT24C256結(jié)果在系統(tǒng)負(fù)載高的時候偶爾會出現(xiàn)數(shù)據(jù)錯亂調(diào)試起來非常頭疼。后來一咬牙決定把硬件IIC給調(diào)通。網(wǎng)上關(guān)于STM32硬件IIC的資料尤其是H7系列的要么是CubeMX配置截圖加幾句代碼要么就是老掉牙的標(biāo)準(zhǔn)庫版本真正把HAL庫下硬件IIC讀寫EEPROM的坑講透的并不多。今天我就把自己從零搭建、調(diào)試到穩(wěn)定運(yùn)行的整個過程包括源碼和配置細(xì)節(jié)完整地分享出來。這個項(xiàng)目不僅適用于AT24Cxx系列的EEPROM其思路和方法對于其他IIC從設(shè)備如傳感器、RTC時鐘芯片等也同樣具有參考價值。無論你是正在被IIC通信不穩(wěn)定所困擾還是希望深入理解STM32H7的IIC外設(shè)特性這篇文章都能給你提供一條清晰的路徑和可復(fù)現(xiàn)的解決方案。2. 硬件IIC與EEPROM選型解析2.1 為什么選擇硬件IIC而非軟件模擬在項(xiàng)目初期很多人包括我會傾向于使用軟件模擬IICSoftware IIC因?yàn)樗`活、不占用特定硬件引腳、移植方便。但在STM32H7這種高性能MCU上面對EEPROM這類需要可靠通信的設(shè)備硬件IIC的優(yōu)勢就凸顯出來了。首先時序精度與可靠性。軟件IIC靠CPU延時或定時器來模擬時序在高主頻如H7的400MHz且中斷頻繁、任務(wù)調(diào)度復(fù)雜的系統(tǒng)中延時極易被干擾導(dǎo)致SCL/SDA波形畸變通信失敗。硬件IIC由專用外設(shè)生成時序與CPU負(fù)載無關(guān)波形標(biāo)準(zhǔn)穩(wěn)定。其次效率與CPU占用。一次完整的EEPROM頁寫入或連續(xù)讀取軟件模擬需要CPU持續(xù)參與占用大量時鐘周期。硬件IIC在配置好DMA后數(shù)據(jù)傳輸幾乎不占用CPU尤其在H7這種支持內(nèi)存到外設(shè)DMA的架構(gòu)上優(yōu)勢巨大。最后錯誤處理與狀態(tài)管理。硬件IIC外設(shè)有完善的狀態(tài)寄存器SR、中斷和錯誤標(biāo)志。通信超時、仲裁丟失、從機(jī)無應(yīng)答NACK等異常都能被硬件捕獲并產(chǎn)生中斷便于我們編寫健壯的錯誤處理程序。軟件模擬實(shí)現(xiàn)這些功能則復(fù)雜且容易遺漏。注意STM32的IIC外設(shè)尤其是F1/F4系列早期版本曾被詬病設(shè)計復(fù)雜、有缺陷。但在H7系列上ST對IIC外設(shè)I2C進(jìn)行了大幅改進(jìn)和增強(qiáng)穩(wěn)定性已今非昔比。只要配置得當(dāng)完全可以勝任工業(yè)級應(yīng)用。2.2 EEPROM器件選型與關(guān)鍵參數(shù)我選用的是Microchip的AT24C256這是一款256Kbit32KB的串行EEPROM支持標(biāo)準(zhǔn)模式100kHz、快速模式400kHz和快速模式Plus1MHz。選擇它主要基于以下幾點(diǎn)考量容量與頁結(jié)構(gòu)32KB容量足以存儲大量參數(shù)。其頁大小為64字節(jié)這意味著一次頁寫入操作最多可以連續(xù)寫入64字節(jié)。理解頁結(jié)構(gòu)對優(yōu)化寫入效率至關(guān)重要。電壓范圍支持1.7V至5.5V寬電壓與STM32H7的多種供電方案兼容。寫周期壽命標(biāo)稱100萬次寫周期對于參數(shù)存儲場景綽綽有余。從機(jī)地址AT24C256的7位從機(jī)地址為0x50二進(jìn)制1010000。通過將A2, A1, A0引腳接高或低電平可以改變地址低3位實(shí)現(xiàn)同一IIC總線上掛載最多8片同型號EEPROM。關(guān)鍵操作時序字節(jié)寫發(fā)送設(shè)備地址含寫標(biāo)志 字地址2字節(jié) 數(shù)據(jù)字節(jié)。EEPROM在內(nèi)部寫周期t~WR~典型5ms期間不會應(yīng)答。頁寫發(fā)送設(shè)備地址字地址后可連續(xù)發(fā)送最多一頁的數(shù)據(jù)。跨越頁邊界會自動回卷到頁首導(dǎo)致數(shù)據(jù)覆蓋這是編程時需要特別注意的。當(dāng)前地址讀讀取內(nèi)部地址指針指向的位置。指針在上次操作后遞增。隨機(jī)讀先發(fā)送一個“偽寫”操作設(shè)定字地址然后發(fā)送重啟信號和讀地址開始讀取數(shù)據(jù)。順序讀在啟動讀操作后可以連續(xù)讀取多個字節(jié)地址指針會自動遞增。3. STM32CubeMX工程配置詳解3.1 IIC外設(shè)與GPIO初始化使用STM32CubeMX進(jìn)行圖形化配置是HAL庫開發(fā)的第一步能避免大量底層寄存器配置錯誤。選擇I2C外設(shè)根據(jù)你的原理圖連接選擇對應(yīng)的I2C外設(shè)例如I2C1。在H7系列中I2C1、I2C2、I2C3等都是獨(dú)立的外設(shè)。配置模式將I2C Mode設(shè)置為I2C。No Stretch Mode時鐘延展模式通常禁用除非你的從設(shè)備支持并需要使用時鐘延展。參數(shù)設(shè)置Timing Parameter Configuration這是硬件IIC穩(wěn)定性的核心。不要直接填寫數(shù)字點(diǎn)擊Calculate按鈕根據(jù)你期望的IIC速度如Fast Mode 400kHz和I2C Clock Source即APB總線時鐘在Clock Configuration標(biāo)簽頁查看自動計算。HAL庫會根據(jù)你選擇的模式標(biāo)準(zhǔn)/快速和APB時鐘生成一個符合IIC規(guī)格的時序寄存器值TIMINGR。務(wù)必使用計算值手動填寫極易出錯。GPIO設(shè)置對應(yīng)的SCL和SDA引腳會自動配置為復(fù)用開漏模式Alternate Function Open Drain并啟用上拉。硬件IIC必須使用開漏模式并依賴外部或內(nèi)部上拉電阻通常4.7kΩ將總線拉高。CubeMX通常會幫你使能內(nèi)部上拉但為了抗干擾能力強(qiáng)烈建議在PCB上預(yù)留外部上拉電阻的位置。NVIC中斷如果你計劃使用中斷或DMA方式需要在此處使能I2C event interrupt和I2C error interrupt。3.2 時鐘樹與DMA配置要點(diǎn)時鐘樹Clock Configuration 確保你所選I2C外設(shè)的時鐘源如PCLK1或PCLK2頻率正確且穩(wěn)定。這個頻率是CubeMX計算IIC時序參數(shù)的依據(jù)。H7的時鐘樹比較復(fù)雜建議先使用CubeMX的默認(rèn)配置生成一個基礎(chǔ)工程確保系統(tǒng)時鐘、總線時鐘正確后再進(jìn)行其他外設(shè)配置。DMA配置可選但推薦 對于大量數(shù)據(jù)的讀寫如讀取整個EEPROM頁使用DMA可以極大解放CPU。在CubeMX的DMA Settings標(biāo)簽頁為對應(yīng)的I2C外設(shè)添加DMA請求。方向分別為I2Cx_RX和I2Cx_TX添加DMA流。模式設(shè)置為Normal單次傳輸或Circular循環(huán)傳輸適用于持續(xù)通信場景EEPROM讀寫用Normal即可。數(shù)據(jù)寬度外設(shè)和內(nèi)存端通常都設(shè)置為Byte字節(jié)。優(yōu)先級根據(jù)系統(tǒng)需求設(shè)置默認(rèn)Low。使能中斷勾選DMA interrupt以便在DMA傳輸完成或出錯時得到通知。配置完成后生成代碼。CubeMX會幫你生成MX_I2C1_Init()這樣的初始化函數(shù)其中包含了所有寄存器配置代碼。4. HAL庫驅(qū)動源碼實(shí)現(xiàn)與解析CubeMX生成的代碼完成了底層初始化我們還需要編寫應(yīng)用層的讀寫驅(qū)動函數(shù)。下面以AT24C256為例詳細(xì)拆解每個函數(shù)。4.1 底層讀寫函數(shù)封裝首先定義一些宏和變量提高代碼可讀性和可維護(hù)性。/* eeprom.h */ #define EEPROM_I2C_HANDLE hi2c1 // 你的I2C句柄由CubeMX生成 #define EEPROM_ADDRESS 0xA0 // AT24C256的寫地址 (0x50 1) #define EEPROM_PAGE_SIZE 64 #define EEPROM_MAX_ADDR 0x7FFF // 32KB - 1 /* 操作狀態(tài) */ typedef enum { EEPROM_OK 0, EEPROM_ERROR, EEPROM_TIMEOUT, EEPROM_ADDR_OVF // 地址溢出 } EEPROM_StatusTypeDef;基礎(chǔ)寫函數(shù)向指定地址寫入一個字節(jié)。/* eeprom.c */ EEPROM_StatusTypeDef EEPROM_WriteByte(uint16_t addr, uint8_t data) { uint8_t buffer[3]; HAL_StatusTypeDef hal_status; if (addr EEPROM_MAX_ADDR) return EEPROM_ADDR_OVF; // AT24C256需要2字節(jié)地址 buffer[0] (uint8_t)(addr 8); // 地址高字節(jié) buffer[1] (uint8_t)(addr 0xFF); // 地址低字節(jié) buffer[2] data; // 使用HAL_I2C_Master_Transmit 發(fā)送設(shè)備地址寫和3字節(jié)數(shù)據(jù)地址高、低、數(shù)據(jù) hal_status HAL_I2C_Master_Transmit(EEPROM_I2C_HANDLE, EEPROM_ADDRESS, buffer, 3, HAL_MAX_DELAY); if (hal_status ! HAL_OK) { // 可以在這里添加更詳細(xì)的錯誤日志例如通過hal_status判斷是總線錯誤、仲裁丟失還是超時 return EEPROM_ERROR; } // 等待EEPROM內(nèi)部寫周期完成tWR HAL_Delay(5); // 簡單延時更優(yōu)做法是輪詢ACK見下文注意事項(xiàng) return EEPROM_OK; }基礎(chǔ)讀函數(shù)從指定地址讀取一個字節(jié)。這里使用了“隨機(jī)讀”操作。EEPROM_StatusTypeDef EEPROM_ReadByte(uint16_t addr, uint8_t *pData) { HAL_StatusTypeDef hal_status; if (addr EEPROM_MAX_ADDR) return EEPROM_ADDR_OVF; // 隨機(jī)讀操作先發(fā)送寫命令目標(biāo)地址然后重啟并發(fā)送讀命令 hal_status HAL_I2C_Mem_Read(EEPROM_I2C_HANDLE, EEPROM_ADDRESS, addr, I2C_MEMADD_SIZE_16BIT, pData, 1, HAL_MAX_DELAY); if (hal_status ! HAL_OK) { return EEPROM_ERROR; } return EEPROM_OK; }實(shí)操心得HAL_I2C_Mem_Read/Write是HAL庫提供的非常方便的“存儲器”操作函數(shù)它內(nèi)部封裝了設(shè)置內(nèi)存地址對于我們就是EEPROM的字地址的流程。對于支持類似“設(shè)置地址后讀寫”協(xié)議的IIC從設(shè)備如EEPROM、某些傳感器應(yīng)優(yōu)先使用這兩個函數(shù)代碼更簡潔且不易出錯。4.2 頁寫入與連續(xù)讀取優(yōu)化單字節(jié)操作效率低實(shí)際應(yīng)用中更常用頁寫入和連續(xù)讀取。頁寫入函數(shù)EEPROM_StatusTypeDef EEPROM_WritePage(uint16_t addr, uint8_t *pData, uint16_t len) { HAL_StatusTypeDef hal_status; uint16_t write_len; if (addr EEPROM_MAX_ADDR) return EEPROM_ADDR_OVF; // 計算當(dāng)前頁剩余空間 uint16_t page_boundary ((addr / EEPROM_PAGE_SIZE) 1) * EEPROM_PAGE_SIZE; uint16_t space_in_page page_boundary - addr; // 本次實(shí)際寫入長度不能超過頁剩余空間和請求長度 write_len (len space_in_page) ? space_in_page : len; // 使用Mem_Write函數(shù)指定16位地址 hal_status HAL_I2C_Mem_Write(EEPROM_I2C_HANDLE, EEPROM_ADDRESS, addr, I2C_MEMADD_SIZE_16BIT, pData, write_len, HAL_MAX_DELAY); if (hal_status ! HAL_OK) { return EEPROM_ERROR; } HAL_Delay(5); // 等待頁寫入完成 return EEPROM_OK; } // 封裝一個任意長度寫入函數(shù)內(nèi)部自動處理頁邊界 EEPROM_StatusTypeDef EEPROM_Write(uint16_t addr, uint8_t *pData, uint16_t len) { EEPROM_StatusTypeDef status; uint16_t bytes_written 0; uint16_t to_write; while (bytes_written len) { to_write ((len - bytes_written) EEPROM_PAGE_SIZE) ? EEPROM_PAGE_SIZE : (len - bytes_written); // 注意處理地址跨頁問題WritePage函數(shù)內(nèi)部已做保護(hù)這里直接調(diào)用 status EEPROM_WritePage(addr bytes_written, pData bytes_written, to_write); if (status ! EEPROM_OK) { return status; } bytes_written to_write; } return EEPROM_OK; }連續(xù)讀取函數(shù) 連續(xù)讀取相對簡單因?yàn)镋EPROM內(nèi)部地址指針會在每次讀取后自動遞增。EEPROM_StatusTypeDef EEPROM_Read(uint16_t addr, uint8_t *pBuffer, uint16_t len) { HAL_StatusTypeDef hal_status; if ((addr len - 1) EEPROM_MAX_ADDR) return EEPROM_ADDR_OVF; // 直接使用Mem_Read指定起始地址和讀取長度 hal_status HAL_I2C_Mem_Read(EEPROM_I2C_HANDLE, EEPROM_ADDRESS, addr, I2C_MEMADD_SIZE_16BIT, pBuffer, len, HAL_MAX_DELAY); if (hal_status ! HAL_OK) { return EEPROM_ERROR; } return EEPROM_OK; }4.3 使用DMA提升大數(shù)據(jù)量傳輸效率當(dāng)需要讀寫大量數(shù)據(jù)時例如初始化時加載整個配置區(qū)使用DMA可以避免CPU被長時間阻塞。DMA寫入示例 首先確保CubeMX中已配置好I2C的TX DMA。// 全局變量用于DMA傳輸完成回調(diào) volatile uint8_t dma_tx_complete 0; void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) { if (hi2c-Instance EEPROM_I2C_HANDLE.Instance) { dma_tx_complete 1; } } EEPROM_StatusTypeDef EEPROM_Write_DMA(uint16_t addr, uint8_t *pData, uint16_t len) { HAL_StatusTypeDef hal_status; // 注意DMA傳輸需要確保pData所在內(nèi)存區(qū)域是DMA可訪問的如位于D1域AXI SRAM或D2域SRAM if ((addr len - 1) EEPROM_MAX_ADDR) return EEPROM_ADDR_OVF; dma_tx_complete 0; // 使用帶DMA的Mem_Write函數(shù) hal_status HAL_I2C_Mem_Write_DMA(EEPROM_I2C_HANDLE, EEPROM_ADDRESS, addr, I2C_MEMADD_SIZE_16BIT, pData, len); if (hal_status ! HAL_OK) { return EEPROM_ERROR; } // 等待DMA傳輸完成超時處理很重要 uint32_t tickstart HAL_GetTick(); while (!dma_tx_complete) { if ((HAL_GetTick() - tickstart) 100) { // 100ms超時 HAL_I2C_DMAStop(EEPROM_I2C_HANDLE); return EEPROM_TIMEOUT; } } // 等待EEPROM內(nèi)部寫周期對于DMA寫入需要等待最后一個字節(jié)寫完 HAL_Delay(5); return EEPROM_OK; }關(guān)鍵點(diǎn)DMA傳輸完成后僅代表數(shù)據(jù)已從內(nèi)存搬運(yùn)到I2C外設(shè)的發(fā)送寄存器并開始發(fā)送。整個I2C總線傳輸包括地址、數(shù)據(jù)、ACK仍由I2C外設(shè)控制。HAL_I2C_MasterTxCpltCallback回調(diào)是在I2C外設(shè)報告“傳輸完成”時觸發(fā)的此時總線上的數(shù)據(jù)發(fā)送才真正結(jié)束。5. 調(diào)試技巧與常見問題排查即使按照上述步驟操作在實(shí)際硬件調(diào)試中仍可能遇到問題。以下是我在調(diào)試過程中總結(jié)的排查清單和經(jīng)驗(yàn)。5.1 硬件連接與信號測量上拉電阻確認(rèn)SCL和SDA線上有合適的上拉電阻通常4.7kΩ至10kΩ。電阻值過大會導(dǎo)致上升沿太慢在高速模式下容易出錯過小則增加MCU引腳電流負(fù)擔(dān)。用示波器測量總線空閑時的電壓應(yīng)接近VCC。電源與地線確保EEPROM和STM32共地良好電源干凈無毛刺。可以在VCC和GND之間并聯(lián)一個0.1uF的退耦電容。波形觀察使用示波器或邏輯分析儀抓取SCL和SDA波形。起始條件SSDA在SCL高電平時拉低。停止條件PSDA在SCL高電平時拉高。數(shù)據(jù)有效性數(shù)據(jù)位SDA在SCL高電平期間必須保持穩(wěn)定。ACK信號在第9個時鐘周期SDA是否被從機(jī)拉低。觀察波形是否干凈有無過沖、振鈴或毛刺。5.2 軟件調(diào)試與HAL庫狀態(tài)檢查初始化順序確保在調(diào)用IIC讀寫函數(shù)前HAL_I2C_Init()已經(jīng)成功執(zhí)行。可以在初始化后調(diào)用HAL_I2C_IsDeviceReady()來簡單探測從設(shè)備是否存在。HAL_StatusTypeDef status HAL_I2C_IsDeviceReady(hi2c1, EEPROM_ADDRESS, 3, 100); if (status HAL_OK) { printf(“EEPROM Device is Ready!\n”); }HAL庫函數(shù)返回值仔細(xì)檢查每一個HAL_I2C_*函數(shù)的返回值。HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT分別代表不同含義。在調(diào)試階段建議將返回值打印出來。超時設(shè)置HAL_MAX_DELAY會阻塞直到操作完成或發(fā)生錯誤。在產(chǎn)品代碼中應(yīng)根據(jù)實(shí)際情況設(shè)置合理的超時值單位ms避免程序死鎖。中斷優(yōu)先級如果使用了I2C中斷或DMA中斷注意它們的優(yōu)先級配置。避免被更高優(yōu)先級的中斷長時間阻塞導(dǎo)致I2C通信超時。5.3 典型問題與解決方案速查表問題現(xiàn)象可能原因排查步驟與解決方案HAL_I2C_Master_Transmit返回HAL_ERROR或HAL_TIMEOUT1. 硬件連接錯誤線接反、虛焊2. 上拉電阻缺失或阻值不對3. I2C時序配置錯誤TIMINGR寄存器值4. 從設(shè)備地址錯誤5. 從設(shè)備未上電或損壞1. 檢查硬件連線用萬用表測通斷。2. 用示波器看總線是否有上拉空閑是否為高電平。3.重點(diǎn)檢查CubeMX中TIMINGR的計算是否基于正確的I2C Clock Source頻率。4. 核對EEPROM數(shù)據(jù)手冊的7位地址并注意HAL庫函數(shù)需要傳入的是左移1位后的8位地址寫地址。5. 測量從設(shè)備VCC電壓。能發(fā)送地址但收不到ACKNACK1. 從機(jī)地址錯誤2. 從機(jī)忙正在內(nèi)部寫周期3. 總線競爭仲裁丟失1. 確認(rèn)地址包括A2/A1/A0引腳電平。2. 寫入操作后等待足夠時間5ms或使用應(yīng)答輪詢ACK Polling持續(xù)發(fā)送設(shè)備地址寫直到收到ACK為止這表示內(nèi)部寫周期結(jié)束。3. 檢查總線上是否有其他主設(shè)備。寫入成功但讀取數(shù)據(jù)錯誤1. 讀/寫地址錯位16位地址高低字節(jié)順序2. 頁寫入時跨越頁邊界未處理3. 電源不穩(wěn)定導(dǎo)致寫入數(shù)據(jù)錯誤4. 讀函數(shù)邏輯錯誤如未正確發(fā)送重啟信號1. 確認(rèn)發(fā)送的地址字節(jié)順序是否符合EEPROM要求通常是先高字節(jié)后低字節(jié)。2. 確保EEPROM_Write函數(shù)正確處理了頁邊界分割。3. 加強(qiáng)電源濾波寫入后延遲時間加長再讀取驗(yàn)證。4. 使用邏輯分析儀對比實(shí)際波形與數(shù)據(jù)手冊的“隨機(jī)讀”時序圖。使用DMA時數(shù)據(jù)錯誤或程序卡死1. DMA緩沖區(qū)內(nèi)存不可訪問如用了Cache但未做一致性處理2. DMA傳輸完成中斷未觸發(fā)3. I2C與DMA中斷優(yōu)先級沖突導(dǎo)致死鎖1.H7重點(diǎn)確保DMA操作的緩沖區(qū)位于DMA-accessible內(nèi)存區(qū)如DTCM以外的SRAM如果用了D-Cache需要在DMA傳輸前后調(diào)用SCB_CleanDCache_by_Addr和SCB_InvalidateDCache_by_Addr。2. 檢查DMA和I2C中斷是否使能回調(diào)函數(shù)是否正確重寫。3. 調(diào)整中斷優(yōu)先級確保I2C事件/錯誤中斷不被長時間屏蔽。通信偶爾失敗系統(tǒng)負(fù)載高時更易出現(xiàn)1. 軟件模擬IIC時序被中斷打斷2. 硬件IIC時序配置處于臨界狀態(tài)3. 總線干擾長線、靠近噪聲源1.換用硬件IIC。2. 適當(dāng)降低I2C速度如從400kHz降到100kHz或微調(diào)TIMINGR寄存器值增加建立保持時間裕量。3. 縮短走線增加屏蔽或在總線上串聯(lián)小電阻如22Ω-100Ω抑制振鈴。5.4 STM32H7特有的Cache一致性處理這是H7系列相比F1/F4系列一個非常重要的不同點(diǎn)。H7的Cortex-M7內(nèi)核有數(shù)據(jù)緩存D-Cache。當(dāng)你使用DMA從內(nèi)存如SRAM搬運(yùn)數(shù)據(jù)到外設(shè)如I2C時如果CPU曾經(jīng)寫過這塊內(nèi)存數(shù)據(jù)可能還在Cache里并未真正寫入SRAM。此時DMA從SRAM讀到的就是舊數(shù)據(jù)或錯誤數(shù)據(jù)。解決方案 在啟動DMA傳輸前清理CleanCache中對應(yīng)緩沖區(qū)數(shù)據(jù)到實(shí)際內(nèi)存。 在DMA傳輸完成后如果CPU要讀取被DMA修改過的內(nèi)存區(qū)域需要無效化InvalidateCache以便從真實(shí)內(nèi)存重新加載數(shù)據(jù)。#include “stm32h7xx_hal.h” // 確保包含HAL頭文件 uint8_t tx_buffer[128]; // 假設(shè)這是要發(fā)送的數(shù)據(jù) // 在啟動DMA傳輸前 SCB_CleanDCache_by_Addr((uint32_t*)tx_buffer, sizeof(tx_buffer)); // 調(diào)用 HAL_I2C_Mem_Write_DMA(...) // 在DMA傳輸完成中斷回調(diào)函數(shù)中如果還需要處理可能需要無效化但發(fā)送一般不需要對于I2C接收DMA將數(shù)據(jù)從外設(shè)搬到內(nèi)存則需要在DMA完成后無效化Cachevoid HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) { if (hi2c-Instance EEPROM_I2C_HANDLE.Instance) { // 無效化接收緩沖區(qū)的Cache SCB_InvalidateDCache_by_Addr((uint32_t*)rx_buffer, sizeof(rx_buffer)); dma_rx_complete 1; } }不處理Cache一致性問題會導(dǎo)致DMA傳輸?shù)臄?shù)據(jù)“神出鬼沒”時而正確時而錯誤是H7開發(fā)中最隱蔽的坑之一。6. 項(xiàng)目集成與高級應(yīng)用建議將穩(wěn)定的EEPROM驅(qū)動集成到實(shí)際項(xiàng)目中還需要考慮一些工程化的問題。6.1 設(shè)計一個參數(shù)管理模塊不要直接在應(yīng)用層調(diào)用底層的EEPROM_Read/Write。建議抽象出一個參數(shù)管理模塊param.c/.h它定義所有需要存儲的參數(shù)結(jié)構(gòu)體并提供Param_Save()和Param_Load()接口。內(nèi)部處理參數(shù)的序列化打包成字節(jié)流、反序列化、CRC校驗(yàn)、磨損均衡如果寫入頻繁等邏輯。typedef struct { uint32_t serial_number; float calibration_factor; uint8_t device_mode; // ... 其他參數(shù) uint32_t crc32; // 用于校驗(yàn)數(shù)據(jù)完整性 } SystemParams_t; SystemParams_t g_system_params; EEPROM_StatusTypeDef Param_Save(void) { // 1. 計算g_system_params的CRC除crc32字段本身 // 2. 調(diào)用EEPROM_Write將整個結(jié)構(gòu)體寫入EEPROM的固定區(qū)域 // 3. 返回狀態(tài) } EEPROM_StatusTypeDef Param_Load(void) { // 1. 從EEPROM讀取結(jié)構(gòu)體數(shù)據(jù)到臨時變量 // 2. 校驗(yàn)CRC // 3. 校驗(yàn)通過則復(fù)制到g_system_params // 4. 返回成功/失敗狀態(tài) }6.2 實(shí)現(xiàn)寫保護(hù)與數(shù)據(jù)安全軟件寫保護(hù)在參數(shù)管理模塊中可以設(shè)置一個“臟”標(biāo)志。當(dāng)參數(shù)被修改時只標(biāo)記“臟”標(biāo)志而不是立即寫入EEPROM。在系統(tǒng)空閑時、或定時、或關(guān)機(jī)前再統(tǒng)一執(zhí)行保存操作。這可以減少不必要的寫入次數(shù)延長EEPROM壽命。硬件寫保護(hù)AT24C256有WP引腳接高電平時寫保護(hù)生效??梢詫⒋艘_連接到STM32的一個GPIO在正常運(yùn)行時拉高保護(hù)數(shù)據(jù)僅在需要升級參數(shù)時短暫拉低。數(shù)據(jù)備份與恢復(fù)在EEPROM中開辟兩個或多個區(qū)域存儲同一份參數(shù)。每次寫入時輪流寫到不同區(qū)域類似簡易磨損均衡。讀取時通過CRC校驗(yàn)選擇一份有效的數(shù)據(jù)。這可以防止某次寫入失敗或某塊存儲區(qū)損壞導(dǎo)致數(shù)據(jù)徹底丟失。6.3 性能優(yōu)化與實(shí)時性考量中斷與DMA結(jié)合對于非阻塞式操作可以使用HAL_I2C_Mem_Write_IT或HAL_I2C_Mem_Read_IT中斷方式。結(jié)合DMA可以實(shí)現(xiàn)“后臺”數(shù)據(jù)搬運(yùn)CPU只在開始和結(jié)束時介入極大提高系統(tǒng)實(shí)時性。延時優(yōu)化HAL_Delay(5)是阻塞延時在實(shí)時系統(tǒng)中不友好??梢愿挠梅亲枞绞綉?yīng)答輪詢ACK Polling在寫入后啟動一個定時器或在一個低優(yōu)先級任務(wù)中周期性地調(diào)用HAL_I2C_IsDeviceReady。一旦返回成功即可進(jìn)行下一次操作無需固定等待5ms。狀態(tài)機(jī)將EEPROM操作設(shè)計成非阻塞狀態(tài)機(jī)在系統(tǒng)主循環(huán)或RTOS任務(wù)中根據(jù)狀態(tài)執(zhí)行不同步驟避免長時間阻塞。調(diào)試穩(wěn)定后的硬件IIC驅(qū)動其可靠性和效率是軟件模擬無法比擬的。尤其是在STM32H7這種高性能平臺上充分利用其硬件外設(shè)和DMA能力能讓你的系統(tǒng)運(yùn)行得更穩(wěn)健、更高效。希望這份詳細(xì)的配置與源碼解析能幫你徹底搞定STM32H7的硬件IIC驅(qū)動開發(fā)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
好涩综合| 亚洲天堂自拍| 亚洲欧洲自拍图片专区满春格| 天天看片麻豆| 婷婷五月影院| 91成人在线免费视频| 久久久78| 操逼999| 伊人色综合网| 亚洲图片偷拍视频区| 国产肏逼网站| 综合 亚洲 欧美| 亚洲欧美日韩国产丝袜自拍中文| 在线啊啊啊啊| 免费一级精品啪啪视频| 嗯嗯不要 视频| 亚洲色图加勒比| av大香蕉| 国产精品成人蜜臀AV在线| 91精品人| 韩日欧亚a级| 天天综合有色网| 性爱网站一区二区| 青青青青青手机视频| 最新av在线| 口爆综合网| 国产精品久久久久无码AV会牛| 大香蕉78| 久久人| 欧美青青草视频| 日本天堂网| 婷婷激情五月| 亚洲人妻av| 国产精品视频一区二区三区八戒| 久操操AV电影| 精品性爱| 放黄片放3级黄片没穿衣服| 欧美熟妇色| 国产久久久久久久久一区二区| 亚洲性爱乱操x| 丰满人妻aA一区二区三区| 欧美综合狠| 一二三四视频在线社区中文字幕| 和协影院中文字幕三区| 国产AV天美| 日本道不卡| 无码heyzo高清一区| 天天综合精品| 五月天社区| 丁香五月天堂| 97午夜剧场日韩| 色爱综合网| 无码日韩人妻av一| 天天操天天舔| 亚洲欧美日韩免费电影| 男插女青青影院| 亚洲日韩av专区无码| 欧美综合91| 午夜久久久| 尤物视频偷拍免费| 久久久精品一区二区| 一区二区三区成人| 亚洲Av噜噜一区二区三区妖精| 国产精品91一样| 2019午夜福利视频| 久久产精品一区二区三区电影| a片亚洲一本通视频| 久久一二三四五六七八九区| 免费精品99| 丰满的三级少妇欧美久久久| 激情综合五月婷婷| 可以免费观看的AV| 青青草伊人久久| 夜夜操91744565| 艳美熟妇先锋一二三区| 旡码电影特区| 人妻在线大香蕉| 国产馆极品诱惑| 国产一区二区三区影片| 久久人妻办公室视频| 99精品成人免费看| 无套内射性感少妇视频| 色婷婷亚洲婷婷| 91精品啪在线观看国产城中村| 日韩一区二区精彩视频| 操逼天美3区| 日韩黄片视频试看| 顶级丝袜熟女一区二区三区| 99精品久久久久久久婷婷| 大香网站| 欧美一区二区观看在线| 久草国产在线视频| 污啪啪啪视频| 日本一区三级韩国| 又黑又大又粗| 色九九九| 超碰97最新人妻| 亚洲国产丝袜在线观看| 免费视频观看60秒| 东北女人无套内谢视频| 天天干天天燥| www…国产操逼| 桃色五月天| 操狠狠| 日韩久久超碰色| 日本五十路在线| 99热18这里只有精品| 97操B| 校园春色综合网| CCYY草草影院地址入口| 破苞ⅩXXX性无码动漫无码| 99色视频| 亚洲第一二区另类图| 国产精品suv一区| 欧美,亚洲,日韩,v,天堂,手机在线观看| 亚洲综合色图欧美| 91视频伊人| 99久久精品无码一区二区| 91碰碰| 亚洲综合小视频小说在线观看| 色天欧美| 顶级少妇BT天堂| 中文字幕视频免费| 屁股久久久久久| 欧美aa一级片| 久久婷婷五月| 亚洲美女黄色| 超碰九7| 国产AV色黄看到爽| av天堂手机版追回| 青春草A| 欧美日韩国产精品久久色婷婷| 日本精品999| 人人摸人人添人人操| 91欧美高清| 日日嗨AV一区二区夜夜| 久久久久九九九| 国产亚洲中文不卡二区| 欧美精品另类人妖xxxx| 蜜桃臀AV在线| 天天夜躁日日躁狠狠2002| 国产伦乱91| 国产精品视频电影| JuliaAnnXXX888| 岛国福利在线精品播放| 啪啪综合网| 国产精品密臀网在线观看| 深喉吞精| 婷婷丁香五月天综合东京热| 超碰久久性爱| 天天碰久久入| 十八禁av无码免费网站APP| 婷婷五月天小说| 久久噜| 囯产精品久久久久久久久久梁医生| 男女真人网18| 国内黄色精品| 青青草中出视频| 韩国一级做a久久久久| 被体育老师抱着c到高潮| 丁香婷婷激情五月天无毒不卡| 96久久久久久久| 伊人网综合在线视频| 欧洲综合视频| 99re视频在线播放青草| 91N综合网| 欧美日韩性爱操大逼| 熟啊v色欧美热| 黄页av| 91热爆在线| 丝袜狂射91| 国产一区二区三区免费视频在性观看 | 国产日本顶级一区二区三区| 夜夜影视四色| 日韩欧美水蜜桃人妻| 一本久道久久综合狠狠爱一密臀精 | 久久精品免费| 九九九九九九视频免费| 99热这里只有精品8| 亚洲中文字幕久久无码精品| 中文字幕乱在线伦视频中文字幕乱码在线| 91AV老熟女视频| 久久亚洲一区女同性恋中文字幕| 丁香五月激情综合国产| 欧美手机在线综合| 囯产操逼片| 伊蕉97蜜桃97狠狠综合干| 久96热在线观看视频| 综合色图区| 少妇熟女一区二区三区| 人妻天天夜夜爽一区二区| 加勒比aⅴ| 成人aⅴ一区二区三区| 久操 高清| 大象AV在线| 亚洲欧美大香蕉| 东北女人性交| 我爱大香蕉| 久久后入制服| 国产精品视频精品一二| 香港久久久| 97碰在线视频| 男人综合网| 91综合在线| 超碰久超碰久| 9九九九九视频在线观看| 欧亚三区动漫| 欧美少妇大量自拍视频在线观看| 91在线丝袜视频| 日本国产欧美一区三区二区| 精品久久久中文字幕不| 91一区二区三区蜜桃| 超碰人妻久久人妻中文97| 黄色片A级一区二区三区| 欧美另类自拍 | 亚洲精品人妻吞精av| 久久久久久久综合,国产| 亚洲五码一区二区三区| 精品久久久久成人码免| 超碰免费在线| 91亚洲色图| 热久久精品| 日韩肏逼视频| 天天综合香 ld视频| 综合国产影视三级| 日日摸日日碰| 久久丁香五月天| 9久热这里只有精品| 综合久久中文字幕综合日韩精品| 亚洲欧美校园| 超91综合网| 成人av性爱电影在线观看| 91女人的网站| 国产精品嫩草久久久久| 中文字幕AV片| 免费作爱一级视频| 99热国产精品| 防屏蔽在线视频| 天堂v无码免费视频| 欧美精品双插| 亚洲精品无码久久AV| 中文字幕在线第二页| 99热在线播放| av网站免费线看| 91少妇香蕉久久精品| 欧美极度丰满熟妇hd| 91性片| 久久亚州高清| 黄色欧美性爱视频| 亚洲牲交| 久久动漫精品视频这里只有精品| 欧洲熟妇xxXx欧美老妇裸体 | 视频国产欧美在线播放| 国产欧美后入| 亚洲日本成人动漫| 国产精品麻豆视频网站| 亚洲精品久久久久久久蜜桃臀| 黄色高清久久无码依人| 青青草丝袜在线视频| 男人天堂网站| 美女91av| 大香蕉手机在线视频| 一本久道在线综合视频| 亚洲精品97| 欧亚成人在线视频| 色婷婷香蕉| 国产精品第一区第一页| 9美女超碰在线免费观看| 自拍盗摄一区| 激情AV| 天堂а√在线最新版在线| 992大香蕉| 啊啊啊在线观看免费视频| 福利社区午夜一区二区| 天久久久噜噜噜久久国产精品爽爽| 91草草草| 男人的天堂亚洲| 国产成年精品高清在线观看91| 国产搭汕a级片| 欧美在线啊啊啊| 亚洲人妻av| 精品日韩中文在线| 日本孕妇一区二区视频操逼免费看| 天堂涩涩| 天天综合欧美综合| 亚州伊人色综台| 午夜电影在线观看无码专区| 五月天我淫我色av| 欧美激情精品| 人妻精品一区一区三区蜜桃91| 欧美不卡在线美女| 337p大胆噜噜噜噜噜91Av| 日本黄色精品专区网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 91亚洲影视| 九九九九免费高| 久久黄黄| 国模少妇一区二区三区| 国产精品第一区第一页| 欧美综合另类| 亚洲高清欧美总合| 伊人玖玖网| 91在线美女| 久久综合激情| 91人妻做a观看视频| 测评在线观看AV| 好涩综合| 91四海无码日韩欧美| 青娱乐蜜桃臀AV色婷| 九色 人妻 大香蕉| 玖玖在线视频| 黄色网址在线免费观看| 日本免费一级AAA大片器| 99无码| 欧美性五月| 国产精品丝袜久久亚洲不卡| 欧洲精品一区二区三区| 国内黄色精品| 日韩 人妻 精品| 伊人久久88国产女| 久久久精品无码亚免费| 国产乱色国产精品免费视| 白嫩少妇| 九九九九九九视频免费| 欧美日韩亚洲天堂| 久久精品超碰| 国产农村妇女毛片精品久久| 在线二区不卡| 嗯嗯不要 视频| 插插综合网天天影视网| 日韩BBN| 日韩特一级久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲性网| 色吧5亚洲| 偷拍 欧美 日韩| 男女啪啪网站免费视频| 2017av无码免费无线播| 免费观看网黄| 色哟哟综合| 26uuu久久| 一起草三级AV电影在线观看 | 日日干日日| 人妻aa| 激情干在线| 亚洲欧美日韩精品久| 亚洲强奸乱伦影视网| 激情视屏国产乱伦强奸| 牛牛aV| 在线人人人人人人精品超| 黄色欧美性爱视频| 无码国产精品午夜不卡(| 亚洲精品美女久久久久久久久| 乱伦日本色图AⅤ| 两性综合网| 我爱大香蕉| 日日干夜夜干| 欧美性后入| 精品国产污一区二区三区| 色诱中文字幕| 欧美97视频| 国产亚卅97| 狠狠做深爱婷婷久久二区| 午夜无码熟妇丰满人妻| 99国内熟女露脸视频| 1二区9| 人妻无码视频一区二区三区久久| 色噜噜人妻av中文字幕| 91欧美网| 女性喷水高潮在线观看| 成人麻豆av电影网站| 综合影院永久入口国产| 成人激情无码在线视频| 99热9| 国产视频三区四区| 粘花网06av视频| 超碰天天操你比| 91高清日| 在线亚洲欧美| 嫩草一区二区在线观看| 日韩AV一起草| 91久久久久久| 少妇天堂网络| 本道在线| av中亚| se01国产在线视频| 国产真实野战在线视频| 久久女人一区二区三区| 青青操97| 丰满人妻一区二区中文| 亚洲色图欧美| 51久久夜色精品国产麻豆| 熟妇操花| 人妻密肉在线观看| 少妇第一页| 欧美亚洲特P| 亚洲在线网站| 天天色综亚洲91污| 97亚洲性爱| 天堂综合| 亚洲不雅视频1区二区| 激情 欧美 亚洲 小说| 曰韩成人免费视频| 成人综合网 欧美| 玖色av| 精品国产Av无码久久久伦古装| 密乳无码| 久久五月份| 激情小说亚洲图片| 欧美大片91| 国产中文字幕曰本毛片| 手机在线人成免费视频| 亚洲中文字幕乱码无码一区二区| 夫妻AV网站| 欧美性爱第一页久久| 免费啪啪啪网站18岁| 97一区二区蜜臀| 大色网久久| 色欲三区| 日本综合久久| 9长久久精品| 色香欲影| 国产67194| 青女在线| 偷拍偷窥与盗摄视频专区| 日本性爱少妇| 超碰在线人妻不卡| 久久啊啊啊| 国产精品久久久久久片| 丝袜性亚洲| 97综合激情| 亚洲最大成人a毛毛片| 日韩人妻操B| 精品免费国产二区三区 | 中字幕人妻一区二区三区| 婷婷香蕉| 中文精品少妇天堂| 夜嗨影院| 日韩国产十八禁| 欧美日韩在线小说| 六十路日本| 性性久久| 香伊人在线| 综合婷婷| 中文字幕无码不卡啪啪| 日韩免费三级黄片电影| 天天肏美女| 后入人妻无码| 人妻精品视频一区二区| AV中文字幕剧情1区2区3| 激情熟女12P| 在现视频女上位好爽| 97伦综合| 91动漫操逼视频| 色噜噜人妻丝袜AV资源| 熟妇人妻精品一区二区| 国产操操日韩三级黄| 秋霞一级A片黄色视频| 综合色图区| 欧美色图校园春色| 中文字幕在线高清男人的天堂| www.男人天堂| AAAAAAAAA黄片| 熟女中出视频| 黑人美精品 A片| 久久av色| 老子午夜伦不卡影院| 高树玛利亚无码流出| 五月丁香激情四射| 亚洲国产欧美日韩人妻日中文| 亚洲Av诱惑| 熟女乱伦二区| juliaann欧美丝袜办公室| 无码高清专| 色拍偷亚洲| 都市久久精品激情亚洲| 91 国产丝袜在线放观看 | 九九干| 日本最新免费韩国1区2区视频播放| 午夜福利一区二区影院| 亚洲精品蜜桃久久久一区二区三区| 国产熟妇 码视频户外直播| 熟女丰满人妻一区| 久久大香蕉97| 五月丁香综合| 久久加勒比| 国产欧美日韩女同性恋ww喷水精品 | 97超碰人人模人人拍人人| 九色 人妻 大香蕉| 精品人妻一区二区三区日产| 国产伊人自拍| 亚洲国产精品V?在线播放| 综合亚洲情色| 亚洲制服aⅴ中文字幕| 日本一天色道久久久精品视频| 亚洲图片色图欧美另类| 人妻-91porn| 在线二区不卡| 91精品电影18| 蜜臀99久久精品久久久懂爱| 欧美超碰96| 国产中文字幕在线点播| 精品176精品2| 日本成人电影资源网| 日本不卡免费二区| 人妻少妇久久久| 国产 日韩,欧美 自拍| 91国产大片| 伊人网综合在线视频| 热久久无毒不卡| 99啪啪| 精品人妻一二三| 熟妇熟女一区二三区| 国产在线强奸视频| 亚洲综合色图欧美| 91国产精品在线看| 91综合色| 伦在线97| 婷婷久草| 国产高清视频无码在线| 国产91专区| 国产欧美日韩在线观看麻豆传媒公司| 无码直播久久久| 青青草国产一区二区三区| 25国产精品免费观看| 日韩亚洲欧美中文字幕| 熟女AV一区| 色啪网| 麻豆国产视频精品观看| 91亚.色| 天天射网| 人妻日日干| 欧美少妇高潮视频| 大香蕉免| 91狼人| 激情婷婷综合久久| 粉嫩久久久极品| 99热色这里只有精品| www.av在线视频| 插插综合网天天影视网| 红桃视频高潮| www激情| 人妻一区二区三区视频| 久久久久久久久9| 一区二区 日韩 欧美 国产 传媒| 色婷婷九月| 啪啪性爱免费视频| 高精欧美色| 操b网站亚洲无码| 九九AV| 超碰成人公开| 人妻少妇精品久久久久久久| 偷拍在线观看视频| 天天综合~91入口| 久久青青草原免费视频| 亚州综合在线| 十八禁电影伊人网| 人人综合| 熟妇熟女视频一区二区三区| 风流老熟女一区二区三区l| 一区二区乱码福利| 日本久久久久久久久久| 性性久久| 精品久久久久9999| 玖玖婷婷五月天| 日本一级婬片试看三分钟| 性色A∨91| 亚洲中文字幕噜噜噜久久久| 亚洲成人美女无吗| 成人av福利在线观看| 91性情| 一区二区三区四区在线不卡| 久久久久久久久久久久黄色| 亚洲 欧美都市激情| 国产精品婬乱一级毛片彝族| 大香蕉乱级| 91A欧美电影网站| 美女网站黄页| 欧美91精彩| 97一区二区蜜臀| 六月色色| 欧美成人一区二区三区在线播放| 国产成人自拍视频视频| 亚洲av噜噜噜噜噜噜| 老熟女综合网| 91网站18+| 久操在97| 啊啊好多水| 亚洲另类久操网| 大香蕉啪啪啪| 国产女人成人精品视频| 日本操大逼| 久久天天艹| 999久久久免费精品国产牛牛| 精品久9| 亚洲中文sv| 欧美日韩系列| 免费亚洲国产精品久久一区| AV99热18这里只有精品| 另类综合另类| 亚洲欧洲偷拍一区| 国产无马av| 亚洲高清无码AAA久久久精品| 这里只有精品视频在线观看麻豆| 超碰国产精品无码| 国产丝袜美女在线一区| 久久天堂| 又大又大又大又粗爽高潮观看 | 婷婷丁香人妻 | 久久性爱城| 国产粉嫩出水在线播放| 亚洲制服欧美另类内射| 思思性爱| 中文字幕亚韩| 伦理片秋霞免费影院| 欧美午夜视频精品久久| 国产不卡免费在线视频| 日韩一级特黄av毛片| 亚洲成人免费中文字幕| 艹少妇网站| 福利伊人玖玖国产| 秋霞影音一区二区三区| 特级丰满少妇一级AAAA爱毛片| 午夜精品五区| 国产 丝袜 欧美中文 另类| 8050午夜少妇无码| 国内三级自拍小视频在线观看| 欧美性爱精品一区二区| 色综合色| 麻豆精品久久久久久久| 啊啊啊啊啊啊啊国| 日韩中文字幕熟妇人妻 | 天天干天天舔| 高清一区AV无码| www.91逼逼.com| 久久久久九九九| 久久亚洲婷婷| 手机午夜电影神马久久| 囯戸精品高潮呻吟旡码| 日韩A优精品在线观看| 国语对白在线播放视频| 欧美日韩99| 色色色色色色色色色色色色色色综合| 青青草日逼视频| 久久內射| 欧美A√综合网 | 少妇99成人麻豆| 中文乱码99| 国产熟女精品区| 天天操人人操骚逼网站| 亚洲se电影| 欧美在线天堂| 色吧 综合| 中文字幕五月婷婷免费| 太久视频| 综合欧美日韩在线观看| 五月花婷婷| 欧美天天谢综合网| 欧美玖玖爱免费玖玖| 密臀在线视频| 最新日本中文字幕| 亚洲蜜乳av| 国产农村一一级特黄毛片| 欧美躁死她一区二区| 亚洲乱色视频一区、二区在线| 成人热久久精品| 久久久三区二区一区| 青青草好吊色| 国产精品露脸在线观看| 日本日皮视频逼| 日本久久久久久久久| 中文字幕十五区| 神马久久久久久久久| 男人的天堂网页| 美女好片色日本| 亚洲一区二区 麻豆传媒| 亚洲素人综合| 97日韩欧美| 中文字幕奈奈美被公侵犯| 久久人人爽人人爽人人片Ⅴ| 丁香五月天婷婷姐| 97视频在线视频| 999精品久久久久久久| 日本成人A片网站| 五月色网| 欧美操逼视频二区| 国产精品另类| 影音先锋日本一区二区| 国产亚洲国产超碰| 中文字幕av久久爽Av| 久久熟女精品不卡一区| 一级性爱视频免费观看| 国产小视频91| 国产久久一区二区三区野外在线| 亚洲女人毛茸茸91| 91中文字幕制服丝袜免费视频| 国产一区免费午夜视频| www.色婷婷| 色综合久久夜色精品国产天堂| 色逼综合| 国产亚洲日本精品在线| 欧美激情 日韩精品| 精品欧美日韩在线观看| 69XX一中文字幕人妻91| 色婷婷视频| 精品成人女人久久| 欧美 日韩 另类 亚洲| 校园春色亚洲色图| 艹比视频国产精品| 欧美五区| 4tube欧美女厕所| 一级@啪啪视频| 婷婷四五区| 亚洲风情综合网| 成人小说另类在线| 天天日天天色| 五月天欧美色图| 东京热视频网| 一二三四日本视频高清| 国产一| 中文字幕一区二区三区字幕| 日韩草久视频| 天天影视综合色| 岛国片国产成人亚洲播放| 久久综合久久综合人久久夜精品| 日日97| 欧美日韩性爱无码| 97爱b| 免费αV在线视频| 旡码电影特区| 婷婷综合伊人一区| 丁香激情五月| 97这里有精品| 五月婷婷啪啪| 狠狠干妹子| 亚洲成人免费中文字幕| 熟女自慰久久久| 自拍第一页| 美女啊啊啊啊pc| av天堂手机版追回 | 18精品一区| 色色99| 激情综合二| 夜夜操青青草| 亚洲无线码欧洲精品区别| 成人精品无码| 欧美日韩国产成人高清| 欧美综合综合| 国产视频大全| 天天摸天天舔天天操| wwe 天天干.com| 人妻密肉在线观看| 亚洲s在线观看| 日韩素人无码一区二区三区三州| 五月天色综合| 亚洲色吧网| 嗯嗯啊中文字幕| 婷婷丁香六月| 香蕉在线一区二区三区| 亚洲AV永久无码一区仙野| 在线播放一级无码视频| 秋霞色色影院| 久久久久久9| 亚洲欧美清纯| 欧美狠狠狠| 国产成人啪一区二区| 日韩欧美水蜜桃人妻| 97频视在线| 亚洲九九视频| 亚洲自拍偷拍视频在线| 操操逼视频| 黄aaaaaaaaaaaaaaaaaa色网站| 日日操天天操| 日日干夜夜操视频h| 久久国产999| 偷拍盗拍亚洲色图图片| 翔田千里爆乳巨臀无码| 国产精品成人无码av无码免费| 91精品大奶人妻| 精品久久在线区一区| 久久综合久色欧美综合狠狠| 熟妇人妻精品一区二区| se吧提供91精品国产91久久久久久| 中文操嬖片。| 中文字幕第95页| 啊啊啊操死我| 92午夜免费福利视频| 98一区二区精品| 极品AV网站在线观看| 鸥美中出| 激情国产乱伦Av| 久操综合在线| 综合网亚洲1| 国产一级内射高清视频| 乱伦3P视频| av大香蕉网站| 国产成人五月天丁香花| 欧美日韩免费性爱| 亚洲色人妻综合| 无码人妻丰满熟妇区毛片| 日韩三级伊人| 五月婷婷六月天| 人妻五十路在线| 伊人热综合| 色婷婷丁香五月| 91碰碰| 免费1级a做爰片观看| 欧美另类色图片| 亚洲在线综合| 欧美成人AⅤ大片在线观看| 日韩亚洲美女一区久久| 大逼色网站| 久久久精品无码亚免费| 午夜精品久久久久久久99热影院| 91亚洲人| 97色色视频| 蜜臀在线网站| 蜜乳性色无码专日粉嫩骚逼AV| 少妇一区二区三区在线观看| 国产欧美另类久久久精品课程| 午夜久久无码1000合集| 大香蕉宅男伊人| 国产精品人妻无码久久久老鸭窝| 人人操AV| 久久久久久久唑| 人人扣人人操| 亚洲在线A| 午夜高清成人在线视频| 青操影院| 一区二区三区 日韩欧美| 加勒比AV网| 超清福利精品视频在线| 超碰性爱97| 欧美人与动性人交a| 一区=区三区视频| 少妇被c 黄 免费观看| 蜜臀av在线播放一区二区三区| 天天操妹子| 午夜天堂精品久久久久91| 水滴偷拍| 女人的久久久| 狠狠操狠狠操操| 密臀在线免费观看| 91网九色蝌蚪操熟女| 99国产天美| 国产高清精品一区二区三区毛片| 熟妇精品juliaannAV| 免费精品中文字幕| 91亚洲狠狠色| 丁香五月影院| 亚洲图片激情小说| 日韩AV中文字幕电影| 久久69精品久久久久久久| 日韩中文字幕宗合在线| 人人射人人操人人摸| 亚洲激情在线| 欧美亚洲激情小说| 国产Av超碰| 久久久久久久9最新免费视频观看| 欧美性爱一级操| 男人的天堂com| 日本久久久久久久久| 免费成人在线观看91| 亚洲天堂日本| 丁香五月色| 爱妃国产亚洲视频中文字幕| 久久久久网站-538在线视频-欧美永久乱码 | 色哟哟511老熟女| 国产91丝袜 在线播放| 国产久久一区二区午夜| 91综合网| 亚洲性图91| 五月婷视频| 亚洲成aⅴ人片不卡无码| 美日韩一二三区| 欧美人妻熟女在线| 极品色社| 上海一级黄片| 久久免费少妇| 操死我了嗯嗯嗯| 欧美久热| 国产精品毛片?v一区二区三区| 99re在线视频这里只有精品| 色婷婷狠狠| 色色网91| 9Ⅰ超碰| 国产精品久久久久久久免牛肉蒲团| 一道α片欧美| 91精品婷婷国产综合久久| 91扒丝袜综合在线| 欧美亚洲中文字幕| 精品日韩人妻精品一二三区| 久热99999| 亚欧美天堂在线| 婷婷五月天久久久| 性暴力欧美猛交在线直播| 九九九九欧美| 大鸡吧尹人在线| 日本中文字幕在线电影| 2017人人操,人人摸| 欧美78P| 天天内射| 性色中出| www.激情| 全球成人中文在线| 欧美热图99| 九九国产热| 爱欲AV| 日韩国语字幕| 无遮挡h肉动漫在线观看| 日韩av性爱在线播放| 亚洲欧美碰碰| 久久亚州大香蕉| 极品久久久久久久久久久久久久| 荡小穴在线观看| 99久久网站| 亚洲操逼无码| 精品无码不卡视频| 国产午夜精品理论片一二三区区| 91天堂丝袜美腿| 制服中出中文人人精品| 日日骚 av| 高树玛利亚无码流出| 狠狠中文字幕| 99精品久久| 91久操| 中文字幕黄色片| 国产在线精品偷| 久久综合亚洲色1080p| 91久久免费视频互動交流| 日本操逼视频免费| 欧美懂色综合网| 无码78| 色97干| 欧美激情亚洲情色| WWW美腿丝袜香蕉中文| 欧美性视频二区三区| 成人久久久精品| 国产成人啪一区二区| 久久伦理视频久久大香蕉视频| 10000部十八禁看电影| 99re95| 久久九精品| 加勒比东京热五月天天堂网| 婷婷丁香一区二区三区| 日韩av色图| 色偷偷男人的天堂麻豆| 久久精品成人一区二区三区蜜臀 | 日韩字幕一区| 免费一级精品啪啪视频| 国产精品毛片?v一区二区三区| 乱伦a片视频| 26UUU欧美激情一区二区| 久久成人国产| 少妇滛荡视频| 久久久草成人网站久久久草成人久久久草久久久 | 久久久久久久久国产| 久热精品在线| 日韩综合色图| 超碰欧美| 日韩在线性爱免费视频| 日韩不卡毛片Av免费高清| 久久HD| 精品人人| 欧美 日韩 国产传媒| 激情视频一二三| 91亚洲丝袜熟女| 91制服丝袜中文字幕| 日韩欧美亚洲自拍偷拍| 性爱视频免费网址| 美中日韩无码| 人妻啊啊人妻啊| 久久久久久91香蕉国产| 素人一区二区三区日韩| 日韩无码黄色片| 欧美激情综合色综合啪啪五月| 久久久久性熟视频| 亚洲999综合| 九九九九九精品视频| 欧美日本成人一区二区| 国产第25页在线观看| 青青网三级视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 夜色综合| 黄片免费看的| 亚洲欧美精品一区天堂久久| 亚洲色图国产另类| 国产9l 大屁股| 欧美人人操人人插| 日欧操屄视频| 日逼五月天| 国产精品一区二区密臀| 日日插夜夜| 六月婷婷色综合| 神马久久网| 久热最新在线杭州| 国模艳艳啪啪一区| 艳美熟妇先锋一二三区| 美女诱惑在线一区| 五十路三区在线| 最新日产中文在线麻豆| 91在线限制级| 久久久性爱| 无码最新| 顶级少妇BT天堂| 9精品久久久久| 美國A片| 97色色国产视频| 亚洲人天堂| 国人欧美精品一区二区| 91偷拍欧美亚洲| 性色亚洲| 思思99热| 亚洲图片视频小说| 久久久久免费看少妇A片特黄| 91粉芽高清在线一区二区| 国产热av| 一起草日韩| AV丝袜少妇| 97亚洲欧美| 99在线免费观看| 久久99久久99精品天美传媒棢·纸:. | 亚洲一区二区中文字幕| 伊人操操| 人人做天天爱| 曰本精品久久久| 超碰欧美| av优播| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产欧美日韩在线观看麻豆传媒公司| 人妻天天爽夜夜爽2| 18禁精品网站在线看| 99www.bibizy香蕉资源国产一区二区三区高清 | 国产精品视频内谢女人| 夜夜中出国产| 99999精品| 97色插| 人妻色偷色噜| 97人人中文网| 五月亭亭六月丁香| 国内精品不卡无毒99999| 欧美中出| 一区二区首页| 国产多人在线观看视频| 天天碰操中国年青熟妇| 26uuu久久| 黄网站黄视频网站进入口| 性饥渴少妇av无码毛片| 国产极品久久久| 又大又长又粗又爽又黄| 91熟女.com| 国产AV无码AV| 欧美亚州综合网图片| 99热这里都是精品| 亚洲国产成人精品女人久久久| 蜜桃精品一区二区三区ww | 亚洲五区熟女| 日韩性爱1级片视频| 欧美韩日精品资源| 女人爽到高潮潮喷18禁网站| 亚洲交性| baisiav| 人人操人人操人人人操| 久久九操在线观看| 免费啪啪啪网站18岁| 日日躁夜夜躁狠狠躁超爽| 爽 好舒服 无码刺激久久| 美女91网| 夜夜高潮夜夜爽高清视频一| 国产成人无码啪| 91中出在线| 嗯嗯嗯嗯啊啊啊好紧好大| 超碰精品日韩欧美国产| 熟妇人妻一区二区三在线| 免费综合亚洲中文| 视频二区美腿丝袜制服人妻欧美| 精品福利| 亚洲综合九| 无码视频黄色网战| 亚洲欧洲激情卡通另类文学四射小说网站 | 国产精品美女在线一区| 欧美在线亚洲| 尻女朋友一夜| 黄色电影观看久久9| 国产精品夜夜| 午夜精品久久久久| 超碰九色| 久热在线精品免费观看| 婷婷精品国产欧美精品亚洲人人爽| 五月丁香| 国产二区视频在线观看电影| 国产suv一区二区三区6| 色噜噜人妻丝袜AV资源| 色欲久久综合| 欧美性爱精品七区| 天天综合91入口| 绑缚麻绳人妻寝取完整版| 香蕉久久国产AV一区二区| 国产一区二区三区免费视频在性观看| 亚洲人妻久久久| 久久久噜噜噜久久久| 国产精品老师| 蜜乳AV.COM| 热99这里有精品综合久久| 日韩av电影网站| n1038 一二三区| 强奸乱亚洲| 婷婷在线视频在线观看| 欧美人妖内射| 天综合网欧美| 欧美第38页| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 老女人爆菊| 精品国产91内射久久| 日韩情色一区二区| 久久久九九| 超碰综合色| 熟女一区二区| 亚洲天堂人妻一区二区| 亚洲AV成人无码一区二区三区在线观看| 久久精品一区二区一8| 三级色影综合网| 久久一二三四五六七八九区| 在线亚洲丝袜视频网站| 东北老女人的激情视频| 白丝1区2区3区| 婷婷亚洲综合| 在线v中文字幕一区二区三区| 国产精品久久久久久久电影渣男| 日本影视久久免费| 天美传媒婬乱在| 欧美自拍网| 99日免费视频中文字幕| 一区,二区,三区视频| 欧美 青青草| 婷婷伊人一区| 91亚洲精品青草| 久久天天摸| 91久久久久久久久久久| 久久婷婷五月综合| www.91色| 大香蕉综合| 99热久| 大奶啊啊好爽| 日韩精品一二三四| 免费AV播放| 亚洲高潮少妇| 1024久久高清视频| 东北黄色电影| 性色高清在线| 亚州 综合 色图| 老司机午夜福利视频一区二区| 中文字幕人妻色偷偷久久皮 | 搡老女人老妇女AAA一VU麻豆| 免费超碰97在线观看| 黄色AAAAAAAAAAA大片| AAAA欧美日韩| 日韩精品色呦呦| 精品国产丝袜一区二区三区乱码| 日本精品无码三级网站|