日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外设驱动库开发笔记40:AT25xxx外部存储器驱动

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外设驱动库开发笔记40:AT25xxx外部存储器驱动 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??我們?cè)谇懊骈_發(fā)過AT24CXX系列EEPROM存儲(chǔ)器,它使用的是I2C接口。不過有時(shí)候我們也會(huì)使用SPI接口的EEPROM存儲(chǔ)器。在這一篇我們將來討論AT25XXX系列EEPROM存儲(chǔ)器的驅(qū)動(dòng)設(shè)計(jì)、實(shí)現(xiàn)及使用。

1、功能概述

??AT25XXX系列EEPROM存儲(chǔ)器采用SPI接口,因其操作簡單且性價(jià)比高,常用于數(shù)據(jù)保存。出于開發(fā)面向AT25XXX系列EEPROM存儲(chǔ)器操作的驅(qū)動(dòng)目標(biāo),我們先來了解一下AT25XXX系列EEPROM存儲(chǔ)器的基本情況。

1.1、硬件描述

??AT25XXX系列EEPROM存儲(chǔ)器擁有從1K到2M的多種容量。AT25XXX系列EEPROM存儲(chǔ)器采用SPI通訊接口。盡管容量跨度很大,但都采用相同的封裝形式。具體的引腳排布及定義如下:

??為了更好地理解AT25XXX系列EEPROM存儲(chǔ)器的操作過程,我們對(duì)CS、WP以及HOLD引腳做一個(gè)簡單說明。
??首先來看一看CS引腳,CS為芯片選擇引腳,低電平有效,AT25XXX系列EEPROM存儲(chǔ)器被選中。當(dāng)設(shè)備未被選中時(shí),串行數(shù)據(jù)輸入(SI)引腳將不接受數(shù)據(jù),串行輸出(SO)引腳將保持高阻抗?fàn)顟B(tài)。為了確保穩(wěn)定的操作,CS引腳應(yīng)在電源啟動(dòng)時(shí)跟隨VCC。因此建議使用小于或等于10 kΩ的上拉電阻器連接到VCC。在電源啟動(dòng)后,要實(shí)現(xiàn)對(duì)AT25XXX系列EEPROM存儲(chǔ)器的任何操作,都需要先將CS下拉到低電平。
??接下來我們看一看WP引腳,WP引腳為AT25XXX系列EEPROM存儲(chǔ)器的寫保護(hù)引腳。當(dāng)寫保護(hù)(WP)引腳保持高電位時(shí),AT25XXX系列EEPROM存儲(chǔ)器允許正常的讀/寫操作。當(dāng)寫保護(hù)(WP)引腳為低電平時(shí),WPEN位設(shè)置為邏輯“1”時(shí),所有對(duì)狀態(tài)寄存器的寫操作都被禁止。但如果內(nèi)部寫周期已經(jīng)啟動(dòng),那么寫保護(hù)(WP)引腳變?yōu)榈碗娖綄?duì)狀態(tài)寄存器的任何寫操作都沒有影響。當(dāng)狀態(tài)寄存器中的WPEN位設(shè)置為邏輯“0”時(shí),寫保護(hù)(WP)引腳的功能被屏蔽。
??最后我們來看一看HOLD引腳,暫停串行輸入(HOLD)引腳低電平有效。暫停串行輸入(HOLD)引腳與芯片選擇(CS)引腳一起使用來暫停AT25XXX系列EEPROM存儲(chǔ)器。當(dāng)設(shè)備被選中,一個(gè)串行序列正在進(jìn)行中,HOLD可以用來暫停與主設(shè)備的串行通信,而不需要重新設(shè)置串行序列。此時(shí),串行數(shù)據(jù)輸入(SI)引腳的輸入將被忽略,而串行數(shù)據(jù)輸出(SO)引腳將處于高阻抗?fàn)顟B(tài)。

1.2、通訊接口

??AT25XXX系列EEPROM存儲(chǔ)器采用SPI通訊接口。AT25XXX系列EEPROM存儲(chǔ)器由主機(jī)控制器(通常稱為SPI主機(jī))發(fā)送的一組指令控制。與AT25XXX系列EEPROM存儲(chǔ)器的通信必須由SPI主設(shè)備(如微控制器)發(fā)起。SPI主設(shè)備必須在串行數(shù)據(jù)時(shí)鐘(SCK)引腳上為AT25XXX系列EEPROM存儲(chǔ)器生成串行時(shí)鐘。AT25XXX系列EEPROM存儲(chǔ)器總是作為一個(gè)從屬操作,因?yàn)镾CK總是一個(gè)輸入。主機(jī)與AT25XXX系列EEPROM存儲(chǔ)器通訊的拓?fù)鋱D如下所示:

??SPI主機(jī)通過SPI總線與AT25XXX系列EEPROM存儲(chǔ)器通信,SPI總線由四條信號(hào)線組成:芯片選擇(CS)、串行數(shù)據(jù)時(shí)鐘(SCK)、串行數(shù)據(jù)輸入(SI)和串行數(shù)據(jù)輸出(SO)。SPI協(xié)議定義了總共四種操作模式(模式0、模式1、模式2或模式3),每種模式在SCK極性和相位以及極性和相位如何控制SPI總線上的數(shù)據(jù)流方面有所不同。AT25XXX系列EEPROM存儲(chǔ)器支持兩種最常見的模式,SPI模式0和3。

1.3、命令操作

??AT25XXX系列EEPROM存儲(chǔ)器被設(shè)計(jì)成直接與同步串行外圍接口(SPI)接口。AT25XXX系列EEPROM存儲(chǔ)器使用一個(gè)8位指令寄存器。所有的指令、地址和數(shù)據(jù)首先由高位開始傳送,然后由高到低依次進(jìn)行。指令列表及其操作代碼如下:

??從上表我們知道,除了操作存儲(chǔ)區(qū)域外,還可以操作狀態(tài)寄存器。AT25XXX系列EEPROM存儲(chǔ)器包括一個(gè)8位狀態(tài)寄存器。狀態(tài)寄存器位調(diào)節(jié)設(shè)備的各種特性。這些位可以通過指令進(jìn)行更改。具體的結(jié)構(gòu)如下:

??狀態(tài)寄存器除了反應(yīng)當(dāng)前的狀態(tài)外,實(shí)際上有些位還有配置功能。關(guān)于致謝為的屬性及具體含義如下:

??通過寫狀態(tài)寄存器(WRSR)指令可以配置寫保護(hù)使能和寫保護(hù)的區(qū)域。塊寫保護(hù)位(BP1、BP0)決定了存儲(chǔ)陣列的寫保護(hù)區(qū)域。兩位決定了陣列保護(hù)的四個(gè)級(jí)別,分別是:沒有一個(gè)內(nèi)存陣列被保護(hù);上四分之一地址范圍內(nèi)存陣列被保護(hù);上半部分地址范圍內(nèi)存陣列被保護(hù);所有的內(nèi)存陣列都是寫保護(hù)的,這意味著所有的地址位都是只讀的。塊寫保護(hù)級(jí)別和相應(yīng)的狀態(tài)寄存器控制位關(guān)系如下:

??而寫保護(hù)使能 (WPEN)位用于啟用或禁用寫保護(hù) (WP) 引腳。當(dāng)WPEN位設(shè)置為邏輯“0”時(shí),寫入EEPROM數(shù)組的能力取決于塊寫保護(hù)(BP1、BP0)位的值。寫入狀態(tài)寄存器的權(quán)限是由WEL位控制的。當(dāng)WPEN位設(shè)置為邏輯“1”時(shí),狀態(tài)寄存器是只讀的。當(dāng)WP引腳低且WPEN位設(shè)置為邏輯“1”時(shí),硬件寫保護(hù)就啟用了。當(dāng)設(shè)備被硬件寫保護(hù)時(shí),對(duì)狀態(tài)寄存器的寫操作,包括塊寫保護(hù)、WEL和WPEN位,以及對(duì)塊寫保護(hù)位所選擇的內(nèi)存陣列中的段的寫操作被禁用。當(dāng)啟用硬件寫保護(hù)時(shí),只允許對(duì)未受塊保護(hù)的內(nèi)存段進(jìn)行寫。當(dāng)WP引腳為高電平或WPEN位邏輯為“0”時(shí),硬件寫保護(hù)被禁用。當(dāng)硬件寫保護(hù)被禁用時(shí),只允許對(duì)未被塊保護(hù)的內(nèi)存段進(jìn)行寫。當(dāng)WPEN位被硬件寫保護(hù)時(shí),只要WP引腳保持低,它就不能被設(shè)置回邏輯“0”。寫保護(hù)的關(guān)系如下所示:

??AT25XXX系列EEPROM存儲(chǔ)器擁有從1K到2M的不同容量,尋址范圍的不同所需的地址位數(shù)也不相同。地址位數(shù)根據(jù)容量從7位到18位不等,分別對(duì)應(yīng)1到3個(gè)字節(jié)。具體的容量與地址位關(guān)系如下:

??需要注意的是,4K(512x8)容量的AT25XXX系列EEPROM存儲(chǔ)器需要9為地址,但在實(shí)際操作時(shí)只用了1個(gè)字節(jié)來裝載地址,最高位(第9位)地址借用了操作碼的第4位來傳送。

2、驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

??我們已經(jīng)了解了AT25XXX存儲(chǔ)器的基本功能及讀寫方式,接下來我們將開發(fā)操作AT25XXX系列EEPROM存儲(chǔ)器的驅(qū)動(dòng)程序。

2.1、對(duì)象定義

??在使用一個(gè)對(duì)象之前我們需要獲得一個(gè)對(duì)象。同樣的我們想要AT25XXX系列EEPROM存儲(chǔ)器就需要先定義AT25XXX系列EEPROM存儲(chǔ)器的對(duì)象。

2.1.1、對(duì)象的抽象

??我們要得到AT25XXX系列EEPROM存儲(chǔ)器對(duì)象,需要先分析其基本特性。一般來說,一個(gè)對(duì)象至少包含兩方面的特性:屬性與操作。接下來我們就來從這兩個(gè)方面思考一下AT25XXX系列EEPROM存儲(chǔ)器的對(duì)象。
??先來考慮屬性,作為屬性肯定是用于標(biāo)識(shí)或記錄對(duì)象特征的東西。我們來考慮AT25XXX系列EEPROM存儲(chǔ)器對(duì)象屬性。首先AT25XXX系列EEPROM存儲(chǔ)器有多種型號(hào),不同型號(hào)在容量、地址位數(shù)等方面都有較大差異。為了區(qū)別不同類型的AT25XXX系列EEPROM存儲(chǔ)器,我們將類型作為對(duì)象的屬性。另外每一個(gè)AT25XXX對(duì)象都有一個(gè)狀態(tài)寄存器,它標(biāo)識(shí)了AT25XXX對(duì)象的當(dāng)前狀態(tài),所以我們也將它作為對(duì)象的屬性。
??接著我們還需要考慮AT25XXX系列EEPROM存儲(chǔ)器對(duì)象的操作問題。我們總是要對(duì)AT25XXX對(duì)象進(jìn)行數(shù)據(jù)讀寫,但讀寫操作使用SPI接口依賴于具體的硬件平臺(tái),所以我們將數(shù)據(jù)讀寫作為對(duì)象的操作。片選信號(hào)、寫保護(hù)以及hold信號(hào)均依賴于具體的硬件定義來實(shí)現(xiàn),所以我們將其作為對(duì)象的操作。還有用于時(shí)序控制的延時(shí),其也要根據(jù)具體的軟硬件平臺(tái)來實(shí)現(xiàn),所以我們也將其定義為對(duì)象的操作。
??根據(jù)上述我們對(duì)AT25XXX系列EEPROM存儲(chǔ)器的分析,我們可以定義AT25XXX系列EEPROM存儲(chǔ)器的對(duì)象類型如下:

/*定義AT25XXX對(duì)象類型*/ typedef struct At25Object {uint8_t status; //狀態(tài)寄存器At25ModeType mode; //設(shè)備類型void (*Read)(uint8_t *rData,uint16_t rSize); //讀數(shù)據(jù)操作指針void (*Write)(uint8_t *wData,uint16_t wSize); //寫數(shù)據(jù)操作指針void (*Delayms)(volatile uint32_t nTime); //毫秒延時(shí)操作指針void (*ChipSelect)(AT25xxxCSType cs); //使用SPI接口時(shí),片選操作void (*WP)(AT25WPType wp); //寫保護(hù)操作void (*Hold)(AT25HoldType hold); //保持信號(hào) }At25ObjectType;

2.1.2、對(duì)象初始化

??我們知道,一個(gè)對(duì)象僅作聲明是不能使用的,我們需要先對(duì)其進(jìn)行初始化,所以這里我們來考慮AT25XXX系列EEPROM存儲(chǔ)器對(duì)象的初始化函數(shù)。一般來說,初始化函數(shù)需要處理幾個(gè)方面的問題。一是檢查輸入?yún)?shù)是否合理;二是為對(duì)象的屬性賦初值;三是對(duì)對(duì)象作必要的初始化配置。據(jù)此我們?cè)O(shè)計(jì)AT25XXX系列EEPROM存儲(chǔ)器對(duì)象的初始化函數(shù)如下:

/* 初始化AT25XXX對(duì)象 */ void At25xxxInitialization(At25ObjectType *at, //AT25XXX對(duì)象實(shí)體At25ModeType mode, //AT25XXX對(duì)象類型AT25Read read, //讀AT25XXX對(duì)象操作指針AT25Write write, //寫AT25XXX對(duì)象操作指針AT25Delayms delayms, //延時(shí)操作指針AT25ChipSelect cs //片選操作函數(shù)指針) {if((at==NULL)||(read==NULL)||(write==NULL)||(delayms==NULL)){return;}at->Read=read;at->Write=write;at->Delayms=delayms;if(cs!=NULL){at->ChipSelect=cs;}else{at->ChipSelect=AT25ChipSelectDefault;}if(mode>=AT25Number){return;}at->mode=mode;if(mode<AT25080B){at->memAddLength=AT258BitMemAdd;}else if(mode<AT25M01){at->memAddLength=AT2516BitMemAdd;}else{at->memAddLength=AT2524BitMemAdd;}ReadStatusForAT25xxx(at);//寫允許SetWriteEnableLatchForAT25xxx(at);uint8_t cmd;//使能寫保護(hù),保護(hù)全部區(qū)域cmd=at->status|AT25_WPEN|AT25_BPALL;WriteStatusForAT25xx(at,cmd);ReadStatusForAT25xxx(at); }

2.2、對(duì)象操作

??我們已經(jīng)完成了AT25XXX系列EEPROM存儲(chǔ)器對(duì)象類型的定義和對(duì)象初始化函數(shù)的設(shè)計(jì)。但我們的主要目標(biāo)是獲取對(duì)象的信息,接下來我們還要實(shí)現(xiàn)面向AT25XXX系列EEPROM存儲(chǔ)器的各類操作。

2.2.1、讀數(shù)據(jù)操作

??讀取AT25XXX系列EEPROM存儲(chǔ)器需要先將CS線拉低以選擇設(shè)備,爾后發(fā)送READ(0x03)指令,在后發(fā)送要讀的寄存器地址。一旦接收完寄存器地址,后續(xù)的信號(hào)將被忽略。然后返回指定地址的數(shù)據(jù)。讀AT25XXX系列EEPROM存儲(chǔ)器數(shù)據(jù)的操作時(shí)序如下:

??根據(jù)上述時(shí)序圖,我們可以編寫讀AT25XXX系列EEPROM存儲(chǔ)器數(shù)據(jù)的程序如下:

/*從AT25xxx讀取數(shù)據(jù)*/ void ReadDatasFromAT25xxx(At25ObjectType *at,uint32_t regAddress,uint8_t *rData,uint16_t rSize) {uint8_t data[4];uint16_t index=0;uint8_t temp;uint16_t size=0;data[index++]=AT25_READ;if(at->memAddLength==AT258BitMemAdd){data[index++]=(uint8_t)regAddress;if(at->mode==AT25040B){temp=(uint8_t)(regAddress>>8);data[0]|=((temp&0x01)<<3);}}else if(at->memAddLength==AT2516BitMemAdd){data[index++]=(uint8_t)(regAddress>>8);data[index++]=(uint8_t)regAddress;}else{data[index++]=(uint8_t)(regAddress>>16);data[index++]=(uint8_t)(regAddress>>8);data[index++]=(uint8_t)regAddress;}temp=(uint8_t)(regAddress&regAddMask[at->mode]);if((rSize<=pageBytes[at->mode])&&(rSize<=(pageBytes[at->mode]-temp))){size=rSize;}else{size=pageBytes[at->mode]-temp;}at->ChipSelect(AT25CS_Enable);at->Write(data,index);at->Delayms(1);at->Read(rData,size);at->ChipSelect(AT25CS_Disable); }

??如果只需要讀取一個(gè)字節(jié),那么在讀取一個(gè)字節(jié)后CS信號(hào)需在讀取后恢復(fù)高電平。如果想讀取多個(gè)字節(jié),那么CS信號(hào)必須持續(xù)低電平,在存儲(chǔ)器內(nèi)部字節(jié)地址將自動(dòng)遞增,數(shù)據(jù)將繼續(xù)移位。當(dāng)?shù)竭_(dá)最高地址時(shí),地址計(jì)數(shù)器將滾動(dòng)到最低階地址,從而允許在一個(gè)連續(xù)的讀取循環(huán)中讀取整個(gè)內(nèi)存,而不管起始地址是什么。

2.2.2、寫數(shù)據(jù)操作

??寫AT25XXX系列EEPROM存儲(chǔ)器,必須執(zhí)行兩條單獨(dú)的指令。首先,必須通過寫使能(WREN)指令使設(shè)備能夠?qū)憽H缓?#xff0c;可以執(zhí)行寫序列。如果設(shè)備沒有啟用寫(WREN),設(shè)備將忽略寫指令。在內(nèi)部寫周期中,除了RDSR指令外,所有命令都將被忽略。寫AT25XXX系列EEPROM存儲(chǔ)器的時(shí)序如下:

??根據(jù)上述時(shí)序圖,我們可以編寫寫AT25XXX系列EEPROM存儲(chǔ)器數(shù)據(jù)的程序如下:

/*向AT25xxx寫入數(shù)據(jù)*/ void WriteDatasToAT25xxx(At25ObjectType *at,uint16_t regAddress,uint8_t *wData,uint16_t wSize) {uint8_t data[wSize+4];uint16_t index=0;uint8_t temp;uint16_t size=0;data[index++]=AT25_WRITE;if(at->memAddLength==AT258BitMemAdd){data[index++]=(uint8_t)regAddress;if(at->mode==AT25040B){temp=(uint8_t)(regAddress>>8);data[0]|=((temp&0x01)<<3);}}else if(at->memAddLength==AT2516BitMemAdd){data[index++]=(uint8_t)(regAddress>>8);data[index++]=(uint8_t)regAddress;}else{data[index++]=(uint8_t)(regAddress>>16);data[index++]=(uint8_t)(regAddress>>8);data[index++]=(uint8_t)regAddress;}temp=(uint8_t)(regAddress&regAddMask[at->mode]);if((wSize<=pageBytes[at->mode])&&(wSize<=(pageBytes[at->mode]-temp))){size=wSize;}else{size=pageBytes[at->mode]-temp;}for(int i;i<size;i++){data[index++]=wData[i];}if(((at->status)&0x02)!=0x02){SetWriteEnableLatchForAT25xxx(at);}if(((at->status)&0x0C)!=0x00){WriteStatusForAT25xx(at,at->status|AT25_BPNONE);}at->ChipSelect(AT25CS_Enable);at->Write(data,index);at->ChipSelect(AT25CS_Disable);WriteStatusForAT25xx(at,at->status|AT25_BPALL); }

2.2.3、狀態(tài)寄存器操作

??前面我們已經(jīng)詳細(xì)描述過狀態(tài)寄存器的格式以及每一位的定義。有一些位是只讀的,有一些位是可讀寫的,記下來我們實(shí)現(xiàn)針對(duì)狀態(tài)寄存器中的操作。

(1)、讀狀態(tài)寄存器

??讀狀態(tài)寄存器(RDSR)指令提供對(duì)狀態(tài)寄存器的訪問。RDSR指令可以確定設(shè)備的狀態(tài)以及塊寫保護(hù)(BP1, BP0)位表示所使用的內(nèi)存陣列保護(hù)的范圍。讀取狀態(tài)寄存器的方法是拉低CS信號(hào),然后發(fā)送0x05操作碼。操作碼完成后,設(shè)備將返回8位狀態(tài)寄存器值。具體時(shí)序如下:

??根據(jù)上述時(shí)序圖,我們可以編寫讀AT25XXX系列EEPROM存儲(chǔ)器狀態(tài)寄存器的程序如下:

/*讀AT25xxx狀態(tài)寄存器*/ void ReadStatusForAT25xxx(At25ObjectType *at) {uint8_t opCode=AT25_RDSR;uint8_t status;at->ChipSelect(AT25CS_Enable);at->Write(&opCode,1);at->Delayms(1);at->Read(&status,1);at->ChipSelect(AT25CS_Enable);at->status=status; }

(2)、寫狀態(tài)寄存器

??寫狀態(tài)寄存器(WRSR)指令使SPI主機(jī)能夠更改狀態(tài)寄存器的選定位。在WRSR指令開始之前,必須執(zhí)行一條WREN指令,將WEL位設(shè)置為邏輯“1”。WREN指令完成后,可以執(zhí)行WRSR指令。在WRSR指令之后,AT25XXX系列EEPROM存儲(chǔ)器將不會(huì)響應(yīng)除RDSR以外的命令,直到自動(dòng)計(jì)時(shí)的內(nèi)部寫周期完成。寫周期結(jié)束后,狀態(tài)寄存器中的WEL位復(fù)位為邏輯“0”。具體的時(shí)序圖如下:

??根據(jù)上述時(shí)序圖,我們可以編寫寫AT25XXX系列EEPROM存儲(chǔ)器狀態(tài)寄存器的程序如下:

/*寫AT25xxx狀態(tài)寄存器*/ void WriteStatusForAT25xx(At25ObjectType *at,uint8_t cmd) {uint8_t data[2];data[0]=AT25_WRSR;data[1]=cmd;if(((at->status)&0x02)!=0x02){SetWriteEnableLatchForAT25xxx(at);}if((((at->status)&AT25_WPEN)!=AT25_WPEN)&&(at->WP!=NULL)){at->WP(AT25WP_Disable);}at->ChipSelect(AT25CS_Enable);at->Write(data,2);at->ChipSelect(AT25CS_Disable);ReadStatusForAT25xxx(at);if(at->WP!=NULL){at->WP(AT25WP_Enable);} }

??WRSR指令對(duì)狀態(tài)寄存器的第6位、第5位、第4位、第1位和第0位沒有影響。只有第7位、第3位和第2位可以通過WRSR指令進(jìn)行更改。這些可修改的位是寫保護(hù)使能(WPEN)和塊保護(hù)(BP1, BP0)位。這三個(gè)位元是非易失性位元,具有與常規(guī)EEPROM單元相同的特性和功能。當(dāng)電源從設(shè)備中移除時(shí),它們的值被保留。

2.2.4、寫操作使能與失能操作

??通過寫使能(WREN)指令和寫失能(WRDI)指令實(shí)現(xiàn)對(duì)狀態(tài)寄存器和EEPROM陣列的寫操作的啟用和禁用。這些功能改變了狀態(tài)寄存器中WEL位的狀態(tài)。

(1)寫操作啟用

??狀態(tài)寄存器的寫能門閂(WEL)位必須在每個(gè)寫狀態(tài)寄存器(WRSR)和寫入內(nèi)存陣列(Write)指令之前設(shè)置為邏輯“1”。這是通過向AT25XXX系列EEPROM存儲(chǔ)器發(fā)送一條WREN(0x06)指令來完成的。首先,CS引腳被拉低以選擇設(shè)備,然后發(fā)送WREN指令。然后CS信號(hào)被拉高,并將狀態(tài)寄存器中的WEL位更新為邏輯“1”。具體的操作時(shí)序如下:

??根據(jù)上述時(shí)序圖,我們可以編寫AT25XXX系列EEPROM存儲(chǔ)器操作啟用的程序如下:

/* AT25XXX設(shè)置寫使能所存器*/ void SetWriteEnableLatchForAT25xxx(At25ObjectType *at) {uint8_t opCode=AT25_WREN;at->ChipSelect(AT25CS_Enable);at->Write(&opCode,1);at->ChipSelect(AT25CS_Enable);ReadStatusForAT25xxx(at); }

(2)、寫操作禁用

??為了防止誤寫,寫禁用(WRDI)指令(0x04)通過將WEL位設(shè)置為邏輯“0”來禁用所有編程模式。WRDI指令與WP引腳的狀態(tài)無關(guān)。具體的操作時(shí)序如下圖所示:

??根據(jù)上述時(shí)序圖,我們可以編寫AT25XXX系列EEPROM存儲(chǔ)器操作禁用的程序如下:

/* AT25XXX復(fù)位寫使能所存器*/ void ResetWriteEnableLatchForAT25xxx(At25ObjectType *at) {uint8_t opCode=AT25_WRDI;at->ChipSelect(AT25CS_Enable);at->Write(&opCode,1);at->ChipSelect(AT25CS_Enable);ReadStatusForAT25xxx(at); }

3、驅(qū)動(dòng)的使用

??在上一節(jié)我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了AT25XXX系列EEPROM存儲(chǔ)器的驅(qū)動(dòng)程序,而這一節(jié)我們將設(shè)計(jì)一個(gè)簡單的應(yīng)用來驗(yàn)證這一驅(qū)動(dòng)程序。

3.1、聲明并初始化對(duì)象

??使用基于對(duì)象的操作我們需要先得到這個(gè)對(duì)象,所以我們先要使用前面定義的AT25XXX系列EEPROM存儲(chǔ)器對(duì)象類型聲明一個(gè)AT25XXX系列EEPROM存儲(chǔ)器對(duì)象變量,具體操作格式如下:
??At25ObjectType at25;
??聲明了這個(gè)對(duì)象變量并不能立即使用,我們還需要使用驅(qū)動(dòng)中定義的初始化函數(shù)對(duì)這個(gè)變量進(jìn)行初始化。這個(gè)初始化函數(shù)所需要的輸入?yún)?shù)如下:

At25ObjectType *at,AT25XXX對(duì)象實(shí)體 At25ModeType mode,AT25XXX對(duì)象類型 AT25Read read,讀AT25XXX對(duì)象操作指針 AT25Write write,寫AT25XXX對(duì)象操作指針 AT25Delayms delayms,延時(shí)操作指針 AT25ChipSelect cs,片選操作函數(shù)指針

??對(duì)于這些參數(shù),對(duì)象變量我們已經(jīng)定義了。而對(duì)象類型為枚舉,根據(jù)實(shí)際使用的AT25XXX系列EEPROM存儲(chǔ)器來選擇就好了。主要的是我們需要定義幾個(gè)函數(shù),并將函數(shù)指針作為參數(shù)。這幾個(gè)函數(shù)的類型如下:

/* 定義讀數(shù)據(jù)操作函數(shù)指針類型 */ typedef void (*AT25Read)(uint8_t *rData,uint16_t rSize); /* 定義寫數(shù)據(jù)操作函數(shù)指針類型 */ typedef void (*AT25Write)(uint8_t *wData,uint16_t wSize); /* 定義延時(shí)操作函數(shù)指針類型 */ typedef void (*AT25Delayms)(volatile uint32_t nTime); /* 定義使用SPI接口時(shí),片選操作函數(shù)指針類型 */ typedef void (*AT25ChipSelect)(AT25xxxCSType cs);

??對(duì)于這幾個(gè)函數(shù)我們根據(jù)樣式定義就可以了,具體的操作可能與使用的硬件平臺(tái)有關(guān)系。片選操作函數(shù)用于多設(shè)備需要軟件操作時(shí),如采用硬件片選可以傳入NULL即可。具體函數(shù)定義如下:

/*讀AT25寄存器值*/ static void ReadDataFromAT25(uint8_t *rData,uint16_t rSize) {HAL_SPI_Receive (&at25hspi,rData,rSize,1000); }/*寫AT25寄存器值*/ static void WriteDataToAT25(uint8_t *wData,uint16_t wSize) {HAL_SPI_Transmit (&at25hspi,wData,wSize,1000); }/*片選操作*/ void ChipSelectForAT25(AT25xxxCSType cs) {if(cs==AT25CS_Enable){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);}else{HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);} }

??對(duì)于延時(shí)函數(shù)我們可以采用各種方法實(shí)現(xiàn)。我們采用的STM32平臺(tái)和HAL庫則可以直接使用HAL_Delay()函數(shù)。于是我們可以調(diào)用初始化函數(shù)如下:

At25xxxInitialization(&at25, //AT25XXX對(duì)象實(shí)體AT25M01, //AT25XXX對(duì)象類型ReadDataFromAT25, //讀AT25XXX對(duì)象操作指針WriteDataToAT25, //寫AT25XXX對(duì)象操作指針HAL_Delay, //延時(shí)操作指針ChipSelectForAT25 //片選操作函數(shù));

3.2、基于對(duì)象進(jìn)行操作

??我們定義了對(duì)象變量并使用初始化函數(shù)給其作了初始化。接著我們就來考慮操作這一對(duì)象獲取我們想要的數(shù)據(jù)。我們?cè)隍?qū)動(dòng)中已經(jīng)將獲取數(shù)據(jù)并轉(zhuǎn)換為轉(zhuǎn)換值的比例值,接下來我們使用這一驅(qū)動(dòng)開發(fā)我們的應(yīng)用實(shí)例。

/*AT25XXX數(shù)據(jù)讀寫操作*/ void AT25ReadWriteData(void) {uint16_t regAddress=0x02;uint8_t readByte;uint8_t writeByte=0x0A;uint8_t rData[2];uint16_t rSize=2;uint8_t wData[]={0x5A,0xA5};uint16_t wSize=2;/*從AT25XXX讀取單個(gè)字節(jié),從隨機(jī)地址讀取*/readByte=ReadByteFromAT25xxx(&at25,regAddress);/*向AT25XXX寫入單個(gè)字節(jié)*/WriteByteToAT25xxx(&at25,regAddress,writeByte);/*從AT25XXX讀取多個(gè)字節(jié),從指定地址最多到所在頁的結(jié)尾*/ReadBytesFromAT25xxx(&at25,regAddress,rData,rSize);/*向AT25XXX寫入多個(gè)字節(jié),從指定地址最多到所在頁的結(jié)尾*/WriteBytesToAT25xxx(&at25,regAddress,wData,wSize); }

4、應(yīng)用總結(jié)

??在本片中我們討論并設(shè)計(jì)了AT25XXX系列EEPROM存儲(chǔ)器的驅(qū)動(dòng)程序,并據(jù)此設(shè)計(jì)了一個(gè)簡單的驗(yàn)證應(yīng)用。無論是寫數(shù)據(jù)還是讀數(shù)據(jù)均可順利執(zhí)行,說明我們的驅(qū)動(dòng)設(shè)計(jì)是正確的。
??需要注意的是,4K(512x8)容量的AT25XXX系列EEPROM存儲(chǔ)器需要9為地址,但在實(shí)際操作時(shí)只用了1個(gè)字節(jié)來裝載地址,最高位(第9位)地址借用了操作碼的第4位來傳送。
??在使用驅(qū)動(dòng)時(shí)需注意,采用SPI接口的器件需要考慮片選操作的問題。如果片選信號(hào)是通過硬件電路來實(shí)現(xiàn)的,我們?cè)诔跏蓟瘯r(shí)給其傳遞NULL值。如果是軟件操作片選則傳遞我們編寫的片選操作函數(shù)。
??在這一驅(qū)動(dòng)設(shè)計(jì)的過程中我們并未驗(yàn)證讀寫數(shù)據(jù)的正確性,事實(shí)上如果是比較重要的數(shù)據(jù)我們可以為其添加驗(yàn)證,如CRC驗(yàn)證等。

歡迎關(guān)注:

總結(jié)

以上是生活随笔為你收集整理的外设驱动库开发笔记40:AT25xxx外部存储器驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美极品在线播放 | 免费在线国产视频 | 免费毛片一区二区三区久久久 | 欧美男男激情videos | 精久久久久 | 最近中文字幕大全中文字幕免费 | 亚洲v精品 | 99久久精品久久久久久动态片 | 国产一区播放 | 天天艹天天操 | 亚洲国产成人在线 | 中文字幕综合在线 | 国产高清视频在线观看 | 色网站免费在线观看 | 国产一级二级在线播放 | 国产日韩欧美自拍 | 久久久久久久久艹 | 午夜久久福利视频 | 五月在线 | 天天干天天草天天爽 | 国产精品久久久久久69 | 亚洲黄色精品 | 成人a在线观看 | 中文字幕精品三级久久久 | 欧美日一级片 | 国产精品免费人成网站 | 久久国精品 | 日韩视频中文字幕在线观看 | 黄色免费观看 | 国产精品原创视频 | 天天操天天操天天操天天操 | 免费看特级毛片 | 亚洲精品电影在线 | 国产一区二区视频在线播放 | 黄色三级免费看 | 欧美日韩国产亚洲乱码字幕 | 久久精品一二三区白丝高潮 | 国产麻豆精品一区二区 | 中文字幕电影高清在线观看 | 91精品国产91久久久久久三级 | 国产在线传媒 | 久久九九国产视频 | 精品国产免费av | 久章草在线 | 偷拍精偷拍精品欧洲亚洲网站 | 91一区啪爱嗯打偷拍欧美 | 97超级碰| 国产在线理论片 | 国产精品乱码一区二三区 | 91视频在线播放视频 | 国产手机在线精品 | 欧美精品做受xxx性少妇 | 一级黄色在线视频 | 成人国产精品av | 国产伦理久久 | 成人国产精品免费观看 | 亚洲成人资源 | 国产在线探花 | 国产精品99久久久久久宅男 | 精品二区视频 | 久久欧美精品 | 毛片a级片 | 99久久99久久精品国产片果冰 | 亚洲精品在线观 | 精品久久精品久久 | 久久五月天综合 | 欧美日韩高清在线一区 | 亚洲黄色影院 | 国产福利精品一区二区 | 午夜国产福利视频 | 91精品国产综合久久福利不卡 | 亚洲一级理论片 | 91专区在线观看 | 91精品成人 | 麻豆视频国产在线观看 | 久久亚洲欧美日韩精品专区 | 久久国内精品视频 | 国产一区成人 | 黄色影院在线免费观看 | 激情综合一区 | 天天色天天草天天射 | 久福利| 久久久久久久久久久成人 | 午夜精品一区二区三区免费 | 四虎影视成人精品国库在线观看 | 亚洲成年人在线播放 | 看全黄大色黄大片 | 色播五月激情五月 | 免费视频色| 狠狠色丁香婷婷综合最新地址 | 精品国内| av免费成人 | 91亚洲精品国产 | 久久免费看毛片 | 超碰在线色| av高清影院 | 欧美日韩国产一区二区三区在线观看 | 国产又粗又猛又黄又爽的视频 | 亚洲美女免费视频 | 久99久在线视频 | 久久露脸国产精品 | 国产免费高清 | 免费看的国产视频网站 | 久久综合色播五月 | 国产精品久久婷婷六月丁香 | 91网免费看 | 久久久久国产精品午夜一区 | 97视频在线看| 在线亚洲激情 | 亚洲视频www | 亚洲欧洲国产日韩精品 | 国产亚洲91 | 免费a视频在线 | 欧美91精品久久久久国产性生爱 | 色噜噜狠狠色综合中国 | 在线一二三四区 | 日本精品一区二区三区在线播放视频 | 精品二区久久 | 日韩中文字幕免费看 | 久久污视频 | 成人在线视频网 | 不卡中文字幕av | 国产高清在线 | 九色视频网站 | 中文字幕av一区二区三区四区 | www91在线| 成人片在线播放 | 免费观看性生交大片3 | 欧美老少交 | 久久免费视频一区 | 91九色性视频| 在线看日韩 | 欧美黑人巨大xxxxx | 日韩区欠美精品av视频 | 精品uu| 久久久精品免费看 | 天天干,天天射,天天操,天天摸 | 国产一级黄色av | 8090yy亚洲精品久久 | 欧美一级日韩免费不卡 | 在线а√天堂中文官网 | 欧美精品久久久久久久久久白贞 | 六月激情网 | 久久精品亚洲一区二区三区观看模式 | 天天插天天狠天天透 | 少妇精品久久久一区二区免费 | 欧美精品一区二区三区四区在线 | 在线观看av的网站 | 91中文字幕网 | 欧美性极品xxxx做受 | 色婷在线 | 18国产精品白浆在线观看免费 | 日韩a在线看 | 天天操操操操操操 | 国产一级a毛片视频爆浆 | 在线观看黄网站 | 亚洲国产日韩精品 | 亚洲毛片在线观看. | 五月天亚洲激情 | 国产精品毛片久久久 | 免费人做人爱www的视 | 深夜视频久久 | 国产三级久久久 | 色噜噜在线观看 | 91成人免费看片 | a视频在线看 | 久久免费av电影 | 成人av高清在线观看 | av3级在线 | 91av播放 | 久久免费黄色大片 | www夜夜操com| 在线国产能看的 | 婷婷久久一区二区三区 | 国产欧美三级 | 亚洲精品日韩一区二区电影 | 国产一级片在线播放 | 久久免费精品一区二区三区 | 热久久视久久精品18亚洲精品 | 成年人电影免费看 | 欧美久久久久 | 九九久久国产精品 | 九九九九精品九九九九 | 超碰伊人网 | 亚洲香蕉在线观看 | 国产精品日韩在线观看 | 欧美激情精品久久久久久 | 欧美va天堂在线电影 | 91精彩视频在线观看 | 欧美少妇18p | 色欧美视频 | 欧美视屏一区二区 | 久久精品视频网址 | 国产精品久久久久久超碰 | 特片网久久 | 黄在线免费观看 | 亚洲一区欧美激情 | 欧美日韩成人 | av福利在线播放 | 国产一级电影 | 国产精品久久久久久高潮 | 国产精品久久二区 | 日韩久久精品一区二区三区下载 | 国产在线资源 | 在线免费观看视频一区 | 视频一区二区免费 | 91免费高清观看 | 久久9视频| 五月天伊人 | 日本公妇在线观看高清 | 国产涩图 | 精品久久久久国产免费第一页 | 久久神马影院 | 日韩av一区二区在线 | 国产精品久久在线 | japanesexxxhd奶水 91在线精品一区二区 | 美女黄频在线观看 | 99国产在线视频 | a色视频 | 视频 天天草 | 成人av在线影院 | 麻豆视频国产 | 在线观看日本高清mv视频 | 在线观看91精品国产网站 | 精品视频免费播放 | 国产美女搞久久 | 欧美另类sm图片 | 免费av观看| 伊人天天操 | 国产黄色免费电影 | 在线观看免费 | 婷婷六月天综合 | 在线免费观看欧美日韩 | 精品国产一区二区三区久久 | 日韩久久久久久久久久 | 久久久久精 | 亚洲区另类春色综合小说校园片 | 久久国产女人 | 欧美一区二区在线刺激视频 | 天天做日日做天天爽视频免费 | 福利网在线 | av视屏在线播放 | 成人亚洲网 | 久久99国产综合精品免费 | 伊人天天干| 午夜免费福利片 | 久久久久久久久久毛片 | 日本一区二区三区视频在线播放 | 草樱av | 天天爱天天色 | 精品一二 | 曰本免费av | 久久久久成人精品 | 日日夜夜中文字幕 | 国产黄色片免费在线观看 | 精品国产一二三四区 | 国产成人av电影在线 | 精品视频免费播放 | 欧美在线1区 | 午夜一级免费电影 | 99视频精品在线 | 精品99在线观看 | 五月花婷婷| 免费看黄网站在线 | 最近中文字幕在线中文高清版 | 我要看黄色一级片 | 99热最新地址 | 福利视频一区二区 | 8x成人在线| 午夜成人免费影院 | 在线播放精品一区二区三区 | 亚洲一级二级 | 91看片淫黄大片在线播放 | 青青草视频精品 | 青青河边草免费直播 | 一区中文字幕在线观看 | 丁香综合av| 婷久久| 中文字幕成人 | 欧美在线观看小视频 | 国产视频精品免费 | 欧美日韩在线视频观看 | 日本三级国产 | a在线一区 | 久久久官网 | 国产精品第一页在线 | 日日夜夜天天久久 | a级片在线播放 | 免费看片日韩 | 一级免费看 | 日韩视频免费观看高清 | 99精品视频网站 | 免费av高清 | 久久久久亚洲精品男人的天堂 | 91看片网址| 久久噜噜少妇网站 | 黄色av网站在线观看免费 | 中文伊人 | 免费在线观看日韩 | 国产欧美日韩精品一区二区免费 | 一区二区三区中文字幕在线 | 久久久久高清毛片一级 | 亚洲作爱视频 | 黄色毛片在线 | 久久视频在线视频 | 91色蜜桃 | 国产福利免费看 | 欧美一区二区三区免费看 | 综合天天色 | 99久久精品一区二区成人 | 国产又粗又猛又色 | 久久成人麻豆午夜电影 | 久久av观看 | 国产精品久久久久久久婷婷 | 日韩二区三区在线 | 91av久久| 在线观看av黄色 | 久久国产91 | 国产亚洲精品久久19p | 在线视频 成人 | 精品国产一区二区三区久久久蜜臀 | www.福利 | 一区二区三区在线免费观看视频 | 女人18精品一区二区三区 | 国产做爰视频 | 激情av一区二区 | 国产一级免费片 | 欧美国产日韩在线视频 | av成人免费观看 | 国产专区在线视频 | 69中文字幕 | 欧美日韩国产页 | 夜夜骑日日操 | 日韩在线播放欧美字幕 | 国产片免费在线观看视频 | 最近中文字幕免费av | 精品一区二区三区久久久 | 国产精品久久一区二区无卡 | 国产91精品一区二区 | 国产精品国产三级在线专区 | 永久免费毛片 | 成年人免费电影 | 免费a现在观看 | 又黄又刺激视频 | 国语对白少妇爽91 | 最新国产精品亚洲 | 久久国产精品一区二区三区 | 精品一区久久 | 粉嫩一区二区三区粉嫩91 | 99热这里只有精品久久 | 久久成人黄色 | 国产在线播放观看 | 久久一精品 | 不卡的av中文字幕 | 少妇视频一区 | 欧美日韩在线网站 | 97在线视 | www.狠狠操 | 特级黄色视频毛片 | 最近日本韩国中文字幕 | av色一区 | 国产精品久久久久高潮 | 久久精品这里都是精品 | 亚洲视频免费在线 | 国产在线观看不卡 | 亚洲成人频道 | 韩国av三级 | 日黄网站 | 久久视频在线 | 狠狠躁日日躁夜夜躁av | a视频在线| 久久国产综合视频 | 人人干在线 | 91精品综合在线观看 | 97精品国产91久久久久久 | 久久精品一区二区三区中文字幕 | 欧美最爽乱淫视频播放 | zzijzzij亚洲成熟少妇 | 超碰在线天天 | 人人射人人射 | 国产视频1区2区 | 成人久久18免费网站图片 | 久久精品国产一区二区电影 | 久久综合色天天久久综合图片 | 成人在线视频免费观看 | 999国内精品永久免费视频 | 久久精品国产第一区二区三区 | 麻豆视频免费入口 | 成人久久18免费网站图片 | 麻豆久久一区二区 | 国产精品一级视频 | 中文字幕精品一区二区三区电影 | 人人看97 | 欧美精品免费在线观看 | 丝袜美女在线观看 | 一级精品视频在线观看宜春院 | 日韩一级黄色av | 99r在线视频| 国语麻豆 | 亚洲视频第一页 | 狠狠干狠狠艹 | 免费av大片| 九九九九九国产 | 麻豆国产视频下载 | 天天操天天操天天干 | 在线精品亚洲 | 欧美坐爱视频 | 黄色网在线免费观看 | 天天综合在线观看 | 夜添久久精品亚洲国产精品 | 国产 精品 资源 | 一区二区精品在线观看 | 国产第一页福利影院 | 免费看一级特黄a大片 | 在线 欧美 日韩 | 日韩精品一区二区三区在线视频 | 国产18精品乱码免费看 | 国产在线国偷精品产拍免费yy | 亚洲爱爱视频 | 国产精品区二区三区日本 | 亚洲精品av中文字幕在线在线 | 88av色| 久久久国产99久久国产一 | 日韩午夜在线观看 | 玖玖精品在线 | 自拍超碰在线 | 天天久久综合 | 久久久久久影视 | 国产很黄很色的视频 | 国产伦理久久精品久久久久_ | 午夜国产福利在线观看 | 草草草影院| 激情综合五月天 | 国产小视频免费在线网址 | 久久免费av电影 | 精品999 | 日韩色高清 | 久色小说 | 18+视频网站链接 | 国产成人三级 | 国产精品一区二区美女视频免费看 | 18性欧美xxxⅹ性满足 | 97夜夜澡人人爽人人免费 | 免费日韩av片 | 91视频在线网址 | 亚洲综合丁香 | 亚洲国产中文字幕在线观看 | 国产精品大片免费观看 | 免费av一级电影 | 欧美激情h| 国产精品久久久久久久久久不蜜月 | 91精品国产欧美一区二区 | 色视频在线观看免费 | 久久久久麻豆v国产 | 欧美aa级| 五月天亚洲激情 | 精品日韩在线一区 | 国产精品美女免费看 | 夜夜爽夜夜操 | 五月天婷婷在线观看视频 | 天天玩天天干 | 天堂av网在线| 激情欧美日韩一区二区 | 国产一级片免费视频 | 亚洲 精品在线视频 | www黄色 | 亚洲精品视频一二三 | 91视频最新网址 | 久久亚洲在线 | 久久成人毛片 | 日韩欧美大片免费观看 | 精品一区二区久久久久久久网站 | av日韩av| 国产麻豆电影在线观看 | 在线亚州| 麻豆免费观看视频 | 久久久久久国产一区二区三区 | 成人黄色中文字幕 | 最新午夜 | 最近中文字幕mv免费高清在线 | 狠狠色丁香久久婷婷综合丁香 | 国产精品久久久久久久久久尿 | 国外av在线 | 美女天天操 | 欧美影片| 伊人伊成久久人综合网小说 | 99免费国产 | 91插插影库 | 中文字幕观看av | 在线观看91网站 | 中文在线字幕免费观 | 久久er99热精品一区二区 | 成人久久久久久久久久 | 99精品视频在线观看免费 | 九九热在线观看 | 亚洲资源在线网 | 国产综合久久 | 亚洲日本一区二区在线 | 91精品视频在线免费观看 | 日韩a免费 | 亚洲japanese制服美女 | 久久久精品久久 | 国产成人精品日本亚洲999 | 欧美-第1页-屁屁影院 | 国产精品久久久久久久久久久久冷 | 99久久久国产精品免费99 | 免费在线一区二区三区 | 狠狠综合久久 | 天堂在线v | 少妇超碰在线 | 久久狠狠干| 久久伦理网 | 亚洲日本在线视频观看 | 韩国精品一区二区三区六区色诱 | 91污在线观看 | 国产亚洲亚洲 | a色视频| 欧美日韩高清一区二区 国产亚洲免费看 | av中文字幕在线电影 | 国产精品高清一区二区三区 | 在线观看你懂的网站 | 天天天天综合 | 午夜精品999| 九九有精品 | 欧美日韩国产二区 | 久久久成人精品 | 97夜夜澡人人爽人人免费 | 色午夜 | 欧美日韩在线观看视频 | 日日日日 | 欧美性猛片, | 国产精品久久久久永久免费看 | 国产精品高清一区二区三区 | 日本美女xx| 久久九精品 | 男女啪啪免费网站 | 成年人免费av网站 | 国产免费成人av | 超碰免费av | 久久久免费看 | 久久免费一级片 | 天天爱天天操天天爽 | 久久婷婷丁香 | 九九av| 国产玖玖视频 | 欧美性生交大片免网 | 中文字幕二区 | 免费观看视频的网站 | 天天天干夜夜夜操 | 久草在线免费播放 | 久久久精品国产一区二区电影四季 | 国产手机精品视频 | 亚洲天天草 | 日韩高清一区 | 九九精品视频在线观看 | 国产夫妻性生活自拍 | 人人干人人爽 | 国产成人精品网站 | 免费成人av在线 | 在线成人小视频 | 九九亚洲视频 | 国产手机视频 | 欧美俄罗斯性视频 | 久草综合在线观看 | 久久视精品 | 麻豆av一区二区三区在线观看 | 久久精品99国产精品 | av在线播放观看 | 国产在线播放一区二区 | 亚洲在线成人精品 | 免费国产一区二区视频 | 亚洲精品黄 | 亚洲精品午夜国产va久久成人 | 91在线网址 | 99久久99久久免费精品蜜臀 | 国产精品乱码久久久久久1区2区 | 久久只精品99品免费久23小说 | 国产黄色片在线免费观看 | 97人人爽 | 成人毛片100免费观看 | 免费福利片2019潦草影视午夜 | 五月婷av| 国产亚洲一区二区三区 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 五月天com | 久草在| 免费观看第二部31集 | 激情五月婷婷激情 | 成年人在线观看 | 久久久久久久久毛片 | 国产成人黄色片 | 91av手机在线观看 | 肉色欧美久久久久久久免费看 | 国产一区二区不卡视频 | 日韩精品1区2区 | 九九有精品 | 麻豆成人网 | 亚洲精品视频在线免费播放 | 97在线免费 | 99久久精品免费看 | 色综合色综合久久综合频道88 | 亚洲 综合 国产 精品 | 天天艹天天干天天 | 又湿又紧又大又爽a视频国产 | 免费看的国产视频网站 | 在线免费黄色av | 日韩黄色大片在线观看 | 国产精品va在线观看入 | 国产一级视屏 | 久久综合婷婷综合 | 91成人精品国产刺激国语对白 | 91尤物国产尤物福利在线播放 | 久久夜色精品国产欧美一区麻豆 | 日韩高清在线一区二区三区 | 91精品国产成 | 亚洲爱视频 | 天天干天天草天天爽 | 狠狠狠色丁香综合久久天下网 | 五月视频 | 在线99热| 99久久精品免费看国产麻豆 | 国产精品久久久久毛片大屁完整版 | 狠狠躁日日躁狂躁夜夜躁av | 丁香婷婷色月天 | 又黄又爽的视频在线观看网站 | 婷婷在线网站 | 在线视频成人 | 九九精品无码 | 最新亚洲视频 | 91日韩精品一区 | 亚洲国产激情 | 国产精品久久久久婷婷二区次 | 超碰在线亚洲 | 天海翼一区二区三区免费 | 日日草av | 狠狠色狠狠综合久久 | www.色五月| 国产五月婷 | 欧美性天天 | 久久久久国产精品免费网站 | 久久久久 免费视频 | 日韩久久久久久久久久 | 国产精品 日韩精品 | 国产一级二级在线观看 | 安徽妇搡bbbb搡bbbb | 久久99久久99精品中文字幕 | 亚洲高清视频在线播放 | 综合色中文 | 正在播放五月婷婷狠狠干 | 热re99久久精品国产66热 | 久久99国产精品 | 国产中文字幕一区二区 | 成人精品国产免费网站 | 在线网址你懂得 | 天天干天天做天天操 | 欧美日韩国产精品爽爽 | 色婷婷色| 免费看的av片 | 99中文字幕视频 | 久久国产精品一区二区三区 | 午夜精品一区二区三区视频免费看 | 亚洲精品三级 | 欧美色伊人 | 又黄又网站 | 亚洲精品网站 | 色综合国产 | 天天射天天爱天天干 | 色婷婷国产精品 | 日本色小说视频 | 最新日韩在线观看 | 亚洲精品动漫在线 | 国产人成看黄久久久久久久久 | 天天操天天操天天操天天操天天操天天操 | 一区三区视频在线观看 | 中文字幕日韩伦理 | 97人人澡人人爽人人模亚洲 | 亚洲在线网址 | 国产美女精品 | 精品久久久久国产 | 99视频国产精品免费观看 | 五月综合激情 | 亚洲成熟女人毛片在线 | 日韩在线影视 | 欧美日韩在线观看一区二区 | 免费一级特黄毛大片 | 韩国av一区二区三区在线观看 | 狠狠干夜夜爱 | 国产精品99久久久久的智能播放 | 久草在线视频资源 | 欧美福利片在线观看 | 日韩剧| 国产一区二区高清视频 | 中文字幕一区二 | 美女黄频在线观看 | 亚洲欧洲中文日韩久久av乱码 | 久久久久久久av | 亚洲视频999 | 亚洲精品在线观看免费 | 国产亚洲精品久久久久久久久久 | 四虎在线免费视频 | 国内精品久久久久影院一蜜桃 | 综合久久久久久久久 | 在线观看爱爱视频 | 91九色蝌蚪视频网站 | 日韩丝袜在线 | 久久国产精品99久久久久久进口 | 亚洲一区二区三区在线看 | 久久99精品国产麻豆宅宅 | 精品国产一二三四区 | 91麻豆精品国产91久久久久久 | 91免费版在线 | 四虎永久网站 | 久久专区 | 亚洲午夜精品在线观看 | 韩国av免费观看 | 在线影院 国内精品 | 国产精品永久免费观看 | 99超碰在线播放 | 77国产精品| 国产做a爱一级久久 | 在线国产小视频 | 色五月成人 | 国产精品免费观看在线 | 中文字幕在线观看亚洲 | 久久99热国产 | 97视频资源 | 91精品国产自产在线观看 | 久久97久久97精品免视看 | 国产又粗又猛又色 | 精品在线观看视频 | 99麻豆视频 | 亚洲人av免费网站 | 521色香蕉网站在线观看 | 久久婷婷一区二区三区 | 国产高清在线免费视频 | 人交video另类hd | 精品国产免费人成在线观看 | 91插插插网站 | 国产999精品视频 | 亚洲精品国产高清 | 亚洲精选在线 | 久久a级片| 成人蜜桃视频 | 看v片| a黄色一级 | 中文字幕高清视频 | 亚洲国产欧美在线人成大黄瓜 | 日韩欧美不卡 | 国产欧美综合在线观看 | 亚欧日韩av | 91麻豆网站 | 久久久久久久免费 | 精品麻豆 | 国产免费久久久久 | 97色婷婷| 欧美人zozo | 国产精品乱码久久久久久1区2区 | 99在线免费视频 | 天天性天天草 | 久久精品成人 | 亚洲成色777777在线观看影院 | 精品欧美在线视频 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 西西www4444大胆视频 | 国产99久久久国产精品 | 成年人在线观看免费视频 | 最近中文字幕久久 | 国产a网站 | 国产在线久草 | 日本一区二区三区免费观看 | 日p视频 | 黄色的视频网站 | 国产精品久久久久久久久毛片 | 狠狠色丁香婷婷综合欧美 | 91片网 | 最新中文字幕在线播放 | 黄色成人av | 91av免费在线观看 | 日韩免费区 | 国产精品免费不 | 欧美午夜寂寞影院 | 超碰免费97 | 国内精品久久久久久久久久 | 亚洲 欧美 另类人妖 | 美女黄频 | 一区二区三区在线观看免费 | 伊人精品在线 | 成人免费在线网 | 91成人天堂久久成人 | 色视频在线免费 | 97av.com| 国产亚洲情侣一区二区无 | 99精品国产一区二区三区麻豆 | 福利视频导航网址 | 久久在视频 | 天天操天天爱天天干 | 色综合天天综合在线视频 | 国内精品久久久久影院优 | 国产精品videossex国产高清 | 九九九在线观看 | 欧美精品乱码99久久影院 | 日日干av | 亚州av一区 | 日韩av一区二区在线 | 色88久久| 91在线视频免费91 | 丁香av| 国产精品成人久久久 | 国产成人精品久久亚洲高清不卡 | 99爱精品在线| 麻花豆传媒一二三产区 | 黄网站色成年免费观看 | 婷婷综合久久 | 日日操网 | 欧美成人一区二区 | 人人干97 | 天天综合久久 | 欧美激情另类 | 中文在线亚洲 | 免费在线中文字幕 | 美女网站色在线观看 | 日韩精品一区在线播放 | 久久精品久久久久 | 国产青草视频在线观看 | 奇米影视8888在线观看大全免费 | 91在线中文字幕 | av九九九| 丝袜美腿在线 | 香蕉在线视频观看 | 亚洲在线视频免费观看 | 狠狠狠狠狠狠天天爱 | 久久久久久久久久久久99 | 国产黄色av网站 | 中文乱码视频在线观看 | 99精品亚洲 | 日韩动漫免费观看高清完整版在线观看 | 国产一级免费在线观看 | av黄色在线播放 | www.com久久 | 黄色成年| www五月婷婷 | 免费特级黄色片 | 韩国av一区二区三区在线观看 | 亚洲日本va午夜在线影院 | 国内揄拍国内精品 | 中文字幕在线播放av | 久久黄色网址 | 免费av在线网 | 国产成人精品一区二区三区福利 | 日日夜夜操av | 久久久一本精品99久久精品 | wwwwww色| 日日操日日干 | 国产亚洲精品无 | 九色在线视频 | 中文字幕在线观看av | 亚洲激情网站免费观看 | 中文字幕在线观看免费 | 亚洲天堂在线观看完整版 | 天天操天天操天天操天天操天天操天天操 | 婷婷丁香狠狠爱 | 天天射综合| 天天天天爱天天躁 | 天天操 夜夜操 | 久久人人做 | 美女黄频| 国产精品系列在线 | 中文字幕一区二区三区在线视频 | 国产精品视频app | 91精品伦理 | 亚洲毛片一区二区三区 | 97在线看 | 啪啪免费观看网站 | 中文字幕日本在线观看 | 欧美日韩国产mv | 久久久久成人精品亚洲国产 | 日韩理论影院 | 中文字幕日本特黄aa毛片 | 精品影院| 亚洲理论影院 | 久久久久久中文字幕 | 九九热免费精品视频 | 97人人爽 | 免费观看成人网 | 中文字幕 国产视频 | 成人午夜剧场在线观看 | 久久只精品99品免费久23小说 | 亚洲精品黄色片 | 天天艹天天 | 成年人网站免费在线观看 | 久久综合婷婷 | 久久另类小说 | 亚洲三级网站 | 国内精品国产三级国产aⅴ久 | 欧美一区二区三区在线看 | 欧美日韩国产一二三区 | 国产成人不卡 | a天堂中文在线 | 夜夜操网 | 亚洲精品无 | 国产精品美女免费视频 | 中文字幕免费高清在线 | 日韩视频一区二区三区在线播放免费观看 | 国产明星视频三级a三级点| 99热精品国产一区二区在线观看 | 麻豆视频91 | 成人国产精品免费观看 | 97偷拍在线视频 | a在线一区| 中文永久免费观看 | 又黄又爽又刺激视频 | 日韩一级成人av | 欧美视频日韩 | 人人草人| 中文字幕国产一区二区 | 中文不卡视频 | 天天干天天操天天爱 | 国产精品久久久久国产精品日日 | 99久久这里有精品 | 国产精品99在线播放 | 亚洲自拍偷拍色图 | 五月天亚洲综合 | 久久久久国产精品免费 | 亚洲欧美国产精品va在线观看 | 成人片在线播放 | 色停停五月天 | 黄色小网站在线观看 | 在线视频第一页 | 91在线你懂的 | 国产日韩在线视频 | 黄色在线网站噜噜噜 | 中文av影院 | 91九色精品女同系列 | 欧美天堂视频在线 | 久久99精品一区二区三区三区 | 国产日韩欧美在线观看 | 久久久精品影视 | 在线观看一二三区 | 97精品国产97久久久久久 | 久久精品视频观看 | 中文字幕在线国产精品 | 在线观看中文字幕亚洲 | 97**国产露脸精品国产 | av中文字幕在线播放 | 日日夜夜人人天天 | 国产一区二区在线播放视频 | 五月婷在线播放 | 成 人 黄 色 免费播放 | 中文字幕日韩一区二区三区不卡 | 久久精品中文 | 国产精品综合久久 | 97人人模人人爽人人少妇 | 午夜精品电影 | 国产美女久久久 | 亚洲国产精品999 | 国产无遮挡又黄又爽馒头漫画 | 国产护士hd高朝护士1 | 欧美激情视频免费看 | 在线观看911视频 | 国产精品完整版 | 亚洲伊人第一页 | 天堂av在线| 久久在线影院 | 久久国产精品免费看 | 成年人视频在线免费播放 | 又黄又爽又湿又无遮挡的在线视频 | 中文字幕av网站 | 亚洲在线a | www色片| 中文字幕乱在线伦视频中文字幕乱码在线 | 在线电影 一区 | 亚洲天堂网在线视频 | 在线观av | 亚洲精品国产区 | 亚洲成人精品国产 | 久免费视频 | 一区二区日韩av | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产美女久久 | 久久久久久久久久伊人 | 国产高清视频免费最新在线 | 在线观看成人福利 | 日韩欧美高清视频在线观看 | 日韩乱码在线 | 人人网av| 中文字幕在线专区 | 久久不射电影网 | 中文字幕电影高清在线观看 | av福利第一导航 | 免费视频区| 丁香网五月天 | 婷五月激情 | 国产乱老熟视频网88av | 日韩精品免费在线视频 | 日韩欧美一级二级 | 综合精品久久久 | 亚洲一区二区麻豆 | av综合网址|