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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

在ARM Linux下使用GPIO模拟SPI时序详解

發(fā)布時間:2023/12/10 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在ARM Linux下使用GPIO模拟SPI时序详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Author:楊正? Data2016.1.1 ?Mailyz2012ww@gmail.com

一、???????概述

SPI是英文SerialPeripheral Interface的縮寫,顧名思義就是串行外圍設(shè)備接口。SPI是一種高速、全雙工、同步通信總線,標準的SPI有4個引腳,常用于單片機和EEPROM、FLASH、實時時鐘、數(shù)字信號處理等器件的通信。SPI通信原理要比I2C簡單,它主要是主從方式通信,這種通信方式通常只有一個主機和一個或多個從機,標準的SPI是4根線,分別是SSEL(片選)、SCLK(時鐘,也寫作SCK)、MOSI(主機輸入,從機輸出)和MISO(主機輸入,從機輸出)。

SSEL:從設(shè)備片選使能信號。譬如從設(shè)備是低電平使能的話,當拉低這個引腳,從設(shè)備就會被選中,主機和這個被選中的從設(shè)備通信。

SCLK:時鐘信號,即主機產(chǎn)生。

MOSI:主機給從機發(fā)送指令或者數(shù)據(jù)的通道。

MISO:主機讀取從機的狀態(tài)或者數(shù)據(jù)的通道。

?

在某些情況下,也可以用3根或者2根線的SPI進行通信。譬如,主機只給從機發(fā)送指令,從機不需要回復數(shù)據(jù)的時候,MISO就可以不要;而主機只讀從機的數(shù)據(jù),不需要給從機發(fā)送數(shù)據(jù)的時候,MOSI就可以不要;當一個主機與一個從機通信時,從機的片選有時可以固定為有效電平而一直處于使能狀態(tài),那么SSEL可以不要,此時如果主機只給從機發(fā)數(shù)據(jù),那么SSEL和MISO都可以不要;如果主機只讀取從機發(fā)送來的數(shù)據(jù),那么SSEL和MOSI都可以不要。當然一般情況下說的SPI都指的是標準的SPI,有4根線進行通信。

?

?

二、? 時序分析

眾所周知,SPI時序有4種模式,在講解4種模式之前先學習兩個單詞,即PolarityPhase,這兩個單詞分別是SPI的時鐘極性(Polarity)和相位(Phase),最常見的寫法CPOLCPHA,也有其它的一些寫法,如:

(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity =(時鐘)極性
(2) CKPHA (Clock Phase) ??= CPHA = PHA = Phase =
(時鐘)相位

?

那么時鐘極性是什么概念呢?SPI通信過程分為空閑狀態(tài)和通信狀態(tài),空閑狀態(tài)是指SCLK在數(shù)據(jù)發(fā)送之前和發(fā)送完之后的狀態(tài),通信狀態(tài)當然就是指發(fā)送數(shù)據(jù)的狀態(tài)。CPOL=1,那么空閑狀態(tài)SCLK為高電平,反之,CPOL=0,則空閑狀態(tài)SCLK為低電平。

?

SPI是一個環(huán)形的總線結(jié)構(gòu),主要是在SCLK的控制下,兩個雙向移位寄存器進行數(shù)據(jù)交換。那么主機和從機在進行交換數(shù)據(jù)的時候就設(shè)計到一個問題,即主機在什么時刻輸出到MOSI上而從機在什么時刻采樣這個數(shù)據(jù),或者從機什么時刻輸出到MISO上而主機什么時刻采樣這個數(shù)據(jù)。同步通信的一個特點就是所有數(shù)據(jù)的變化和采樣都是伴隨著時鐘沿進行的,也就是說數(shù)據(jù)總是在時鐘的邊沿附近變化或被采樣,而一個完整的時鐘周期必定包含了一個上升沿和一個下降沿,這是周期的定義所決定的,只是這兩個沿的先后并無規(guī)定。又因為數(shù)據(jù)從產(chǎn)生到它穩(wěn)定是需要一定的時間,那么如果主機在上升沿輸出數(shù)據(jù)到MOSI,從機就只能在下降沿去采樣這個數(shù)據(jù)了。反之,如果一方在下降沿輸出數(shù)據(jù),那么另一方就必須在上升沿采樣這個數(shù)據(jù)。那么由誰來決定上升沿采樣還是下降沿采樣,上升沿輸出還是下降沿輸出呢?

?

CPHA=1時,表示數(shù)據(jù)的輸出在一個時鐘周期的第一個沿上,至于這個沿是上升沿還是下降沿,就得由CPOL來決定。CPOL=1那就是下降沿,反之就是上升沿。那么數(shù)據(jù)采樣自然就是第二個沿上了。

CPHA=0時,表示數(shù)據(jù)采樣在一個時鐘周期的第一個沿上,至于這個沿是上升沿還是下降沿,就得由CPOL來決定。CPOL=1那就是下降沿,反之就是上升沿。那么數(shù)據(jù)輸出自然就是第二個沿上了。

?

通過以上的學習,SPI的4中模式其實已經(jīng)浮現(xiàn)出來了,下面對此做一總結(jié):

Mode0

CPOL=0CPHA=0

Mode1

CPOL=0CPHA=1

Mode2

CPOL=1CPHA=0

Mode3

CPOL=1CPHA=1

?

圖形比文字更容易看懂,所以SPI4種模式的時序圖如下:


再進一步說明模式1SPI處于使能狀態(tài),而且發(fā)送FIFO內(nèi)有有效數(shù)據(jù)時,設(shè)置SSEL信號為低,表示開始傳輸數(shù)據(jù)。來自Slave的數(shù)據(jù)立刻發(fā)送到Master的接收數(shù)據(jù)線MISO。半個SCLK時鐘周期之后,有效的Master數(shù)據(jù)傳輸?shù)?/span>MOSI。此時MasterSlave數(shù)據(jù)都已經(jīng)有效,SCLK管腳在接下來的半個SCLK時鐘周期之后變?yōu)楦唠娖健?shù)據(jù)在SCLK時鐘的上升沿被捕獲(采樣),在時鐘的下降沿被傳送(輸出),傳輸完成后SSEL恢復為高電平。

?

再進一步說明模式2。當SPI為使能狀態(tài),而且發(fā)送FIFO內(nèi)有有效數(shù)據(jù)時,設(shè)置SSEL信號為低表示開始傳輸數(shù)據(jù)。半個SCLK時鐘周期之后,MasterSlave的有效數(shù)據(jù)分別在各自的傳輸線上有效。同時,SCLK從第一個上升沿開始有效。數(shù)據(jù)在SCLK時鐘的下降沿被捕獲,在時鐘的上升沿被傳送,傳輸完成后SSEL恢復為高電平。

?

再進一步的說明模式3。當SPI為使能狀態(tài),而且發(fā)送FIFO內(nèi)有有效數(shù)據(jù)時,設(shè)置SSEL信號為低表示開始傳輸數(shù)據(jù)。此時Slave的數(shù)據(jù)立刻發(fā)送到Master的接收數(shù)據(jù)線MISO。半個SCLK周期之后,Master的有效數(shù)據(jù)傳送到MOSI。再過半個SCLK時鐘周期之后,SCLK管腳設(shè)置為低。這表示數(shù)據(jù)在SCLK時鐘的下降沿被捕獲,在SCLK時鐘的上升沿被傳送,傳輸完成后SSEL恢復為高電平。

?

再進一步的說明模式4。當SPI為使能狀態(tài),而且發(fā)送FIFO內(nèi)有有效數(shù)據(jù)時,設(shè)置SSEL信號為低表示開始傳輸數(shù)據(jù)。半個SCLK時鐘周期后,MasterSlave數(shù)據(jù)在各自的傳輸線上有效。同時,時鐘SCLK1個下降沿開始有效。數(shù)據(jù)在SCLK時鐘的上升沿被捕獲,在時鐘的下降沿被傳送,傳輸完成后SSEL恢復為高電平。

?

?

?

三、? SPI訪問寄存器模式

?

常見的SPI訪問寄存器模式有3種,分別是SingleAccess(單次訪問)、Burst Access(突發(fā)訪問)、FIFO Access(FIFO訪問)。

?

SingleAccess:通過寫訪問發(fā)送一個地址字節(jié)后跟一個數(shù)據(jù)字節(jié),或者發(fā)送一個地址字節(jié),再通過讀訪問接收一個數(shù)據(jù)字節(jié)。發(fā)送幀時SSEL為低,發(fā)送完最后一個字節(jié)后SSEL變?yōu)楦摺H缦聢D,將0x0A寫到寄存器0x02上,再從該寄存器上讀其值。


W + addr. 0x02 Data: 0x0A ?????????????????????R + addr. 0x02 Data:

注意:SSEL第一次為低電平使能時,MISO變?yōu)楦唠娖?#xff0c;然后立即變?yōu)榈碗娖?#xff0c;這表示從設(shè)備芯片已經(jīng)裝備好(Thefirst time CSn goes low, MISO goes high and then low again immediately,indicating that the chip is ready.)。


Single Byte Access (Write and Read)

?

?

BurstAccess:一個地址字節(jié)后跟多個數(shù)據(jù)字節(jié)。在每個數(shù)據(jù)字節(jié)之間地址字節(jié)會在內(nèi)部自動增加,并且片選信號SSEL在發(fā)送幀時為低電平,在每個數(shù)據(jù)字節(jié)之間也保持低電平,當發(fā)送完最后一個字節(jié)后變?yōu)楦唠娖健H?#xff1a;

BYTE xdata regValues[] = {1,2,3};

halSpiWriteBurstReg(0x00, regValues,sizeof(regValues));

halSpiReadReg(0x00);

halSpiReadReg(0x01);

halSpiReadReg(0x02);


BurstWrite Followed by Single Read

?

?

FIFO Access:如果地址字節(jié)對應(yīng)的是FIFO地址,那么隨后的數(shù)據(jù)字節(jié)將針對FIFO。該地址字節(jié)沒有自動遞增而被存儲,并且不需要在每個數(shù)據(jù)字節(jié)之間發(fā)送該地址。片選信號SSEL在發(fā)送幀時為低電平,在每個數(shù)據(jù)字節(jié)之間也保持低電平,當發(fā)送完最后一個字節(jié)后變?yōu)楦唠娖健?/p>

?

特別說明不同的SPI從設(shè)備地址字節(jié)的內(nèi)容不一定相同,需要查看相關(guān)手冊,才能知道地址字節(jié)的構(gòu)成是什么樣的。例如:RFM69H這個模塊SPI的地址字節(jié)的組成如下:

The first byteis the address byte. It is made of:

u? wnr bit, whichis 1 for write access and 0 for read access

u?7 bits of address, MSB first

?

又如CCXX00的地址字節(jié)組成如下:

The R/W bit in the address header controlsif the register should be written or read, and the burst bit controls if it

is a single access or a burst access.

R/W

Burst

A5

A4

A3

A2

A1

A0

:其實地址位只有5位,最高位為讀寫位,1為讀,0為寫;后面一位是burstAccess的使能位,當為1時使能。

?

?

四、? 例程解析

特別注意:在主設(shè)備這邊配置SPI接口時鐘的時候一定要弄清楚從設(shè)備的時鐘要求,因為主設(shè)備這邊的時鐘極性和相位都是以從設(shè)備為基準的。因此在時鐘極性的配置上一定要搞清楚從設(shè)備是在時鐘的上升沿還是下降沿接收數(shù)據(jù),是在時鐘的下降沿還是上升沿輸出數(shù)據(jù)。但要注意的是,由于主設(shè)備的SDO連接從設(shè)備的SDI,從設(shè)備的SDO連接主設(shè)備的SDI,從設(shè)備SDI接收的數(shù)據(jù)是主設(shè)備的SDO發(fā)送過來的,主設(shè)備SDI接收的數(shù)據(jù)是從設(shè)備SDO發(fā)送過來的,所以主設(shè)備這邊SPI時鐘極性的配置(即SDO的配置)跟從設(shè)備的SDI接收數(shù)據(jù)的極性是相反的,跟從設(shè)備SDO發(fā)送數(shù)據(jù)的極性是相同的。

?

通過手冊得知(MOSI is generated by the master on the falling edge ofSCK and is sampled by the slave (i.e. this SPI interface) on the rising edge ofSCK. MISO is generated by the slave on the falling edge of SCK.A transferalways starts by the NSS pin going low. MISO is high impedance when NSS ishigh.),本例程使用的從設(shè)備的SPI工作在Mode1,即CPOL= 0 and CPHA = 0,且SSEL低電平使能,當SSEL為高電平時,MISO為高。故主機的MOSI在空閑狀態(tài)時為高。

/********************************************************************************** Copyright: (C) 2015 YangZheng<yz2012ww@gmail.com> * All rights reserved.** Filename: dev_rfm69h.c* Description: This file* * Version: 1.0.0(12/28/2015~)* Author: Yang Zheng<yz2012ww@gmail.com>* ChangeLog: 1, Release initialversion on "12/28/2015 07:46:07 PM"* ********************************************************************************/ #include<linux/kernel.h> #include<linux/version.h> #include<linux/module.h> #include<linux/types.h> #include<linux/errno.h> #include<linux/fcntl.h> #include<linux/mm.h> #include<linux/proc_fs.h> #include<linux/fs.h> #include<linux/slab.h> #include<linux/init.h> #include<asm/uaccess.h> #include<asm/io.h> #include <asm/system.h> #include<linux/miscdevice.h> #include<linux/delay.h> #include<linux/sched.h>#include<linux/proc_fs.h> #include<linux/poll.h>#include<asm/bitops.h> #include<asm/uaccess.h> #include<asm/irq.h>#include<linux/moduleparam.h> #include <linux/ioport.h> #include<linux/interrupt.h> #include<linux/cdev.h> #include<linux/semaphore.h> #include<linux/wait.h>#define IOCONFIG4_4 IO_ADDRESS(0x200f0000+ 0x054) //復用管腳gpio4_4 #define IOCONFIG4_5 IO_ADDRESS(0x200f0000+ 0x050) //復用管腳gpio4_5 #define IOCONFIG4_6 IO_ADDRESS(0x200f0000+ 0x04c) //復用管腳gpio4_6 #define IOCONFIG4_7 IO_ADDRESS(0x200f0000+ 0x048) //復用管腳gpio4_7#define GPIO4_BASE 0x20180000 //gpio基地址 #define GPIO4_SIZE 0x10000 // 64KB #define GPIO4_DIR IO_ADDRESS(GPIO4_BASE + 0x400) //gpio4方向寄存器 #defineGPIO_SPI_CS_REG IO_ADDRESS(GPIO4_BASE+ 0x40) //gpio4_4數(shù)據(jù)寄存器 #defineGPIO4_SPI_SCK_REG IO_ADDRESS(GPIO4_BASE + 0x80) //gpio4_5數(shù)據(jù)寄存器 #defineGPIO4_SPI_MOSI_REG IO_ADDRESS(GPIO4_BASE+ 0x100) //gpio4_6數(shù)據(jù)寄存器 #defineGPIO4_SPI_MISO_REG IO_ADDRESS(GPIO4_BASE+ 0x200) //gpio4_7數(shù)據(jù)寄存器 #define GPIO4_4 (1<< 4) //gpio4_4 #define GPIO4_5 (1<< 5) //gpio4_5 #define GPIO4_6 (1<< 6) //gpio4_6 #define GPIO4_7 (1<< 7) //gpio4_7#define DATA_LENGTH 21#define DRV_AUTHOR "Yang Zheng<yz2012ww@gmail.com>" #define DRV_DESC "spi driver" #define DRV_VERSION "v0.0.1"#if 0 #defineDBG(x...) printk(x) #define DBG_PRINT #else #defineDBG(x...) do {} while (0) #endifstaticDECLARE_WAIT_QUEUE_HEAD(spi_waitq); unsigned char read_tmp_data[DATA_LENGTH] = {0}; void __iomem *reg_ssp_base_va;typedef unsignedchar byte; typedef unsignedshort word;static int read_flag = 0;/****************************************************************************** **函數(shù)名稱:Set_nCS **函數(shù)功能:禁用片選 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: 高電平為禁用片選,低電平為使能片選 ******************************************************************************/ void Set_nCS(void) {unsigned char regvalue;writel(0, IOCONFIG4_4); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_4;writel(regvalue, GPIO4_DIR);regvalue = readl(GPIO_SPI_CS_REG); regvalue |= GPIO4_4;writel(regvalue, GPIO_SPI_CS_REG); //禁用片選 }/****************************************************************************** **函數(shù)名稱:Clr_nCS **函數(shù)功能:使能片選 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: 高電平為禁用片選,低電平為使能片選 ******************************************************************************/ void Clr_nCS(void) {unsigned char regvalue;writel(0, IOCONFIG4_4); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_4;writel(regvalue, GPIO4_DIR);regvalue = readl(GPIO_SPI_CS_REG); regvalue &= ~GPIO4_4;writel(0, GPIO_SPI_CS_REG); //使能片選}/****************************************************************************** **函數(shù)名稱:Set_SCK **函數(shù)功能:SCK為高電平 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: ******************************************************************************/ void Set_SCK(void) {unsigned char regvalue;writel(0, IOCONFIG4_5); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_5;writel(regvalue, GPIO4_DIR);regvalue =readl(GPIO4_SPI_SCK_REG); //設(shè)置gpio輸出高電平regvalue |= GPIO4_5;writel(regvalue, GPIO4_SPI_SCK_REG); }/****************************************************************************** **函數(shù)名稱:Set_SCK **函數(shù)功能:SCK為高電平 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: ******************************************************************************/ void Clr_SCK(void) {unsigned char regvalue;writel(0, IOCONFIG4_5); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_5;writel(regvalue, GPIO4_DIR);regvalue =readl(GPIO4_SPI_SCK_REG); //設(shè)置gpio輸出低電平regvalue &= ~GPIO4_5;writel(regvalue,GPIO4_SPI_SCK_REG); }/****************************************************************************** **函數(shù)名稱:Set_MOSI **函數(shù)功能:MOSI為高電平 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: ******************************************************************************/ void Set_MOSI(void) {unsigned char regvalue;writel(0, IOCONFIG4_6); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_6;writel(regvalue, GPIO4_DIR);regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出高電平regvalue |= GPIO4_6;writel(regvalue, GPIO4_SPI_MOSI_REG);}/****************************************************************************** **函數(shù)名稱:Set_MOSI **函數(shù)功能:MOSI為低電平 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: ******************************************************************************/ void Clr_MOSI(void) {unsigned char regvalue;writel(0, IOCONFIG4_6); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出regvalue |= GPIO4_6;writel(regvalue, GPIO4_DIR);regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸出低電平regvalue &= ~GPIO4_6;writel(regvalue, GPIO4_SPI_MOSI_REG);}/****************************************************************************** **函數(shù)名稱:MISO_H **函數(shù)功能:讀取MISO_H的值 **輸入?yún)?shù):無 **輸出參數(shù):無 **注意: ******************************************************************************/ unsigned charMISO_H(void) {unsigned char regvalue;writel(0, IOCONFIG4_7); //gpio模式regvalue = readl(GPIO4_DIR); //設(shè)置gpio輸入regvalue &= ~GPIO4_7;writel(regvalue, GPIO4_DIR);regvalue =readl(GPIO4_SPI_MISO_REG); //讀取輸入值//DBG("regvalue = %x\n",regvalue);return regvalue; }/****************************************************************************** **函數(shù)名稱:SPICmd8bit **函數(shù)功能:SPI寫入?yún)?shù)8bit **輸入?yún)?shù):WrPara **輸出參數(shù):無 **注意: 保留nCS輸出Low ******************************************************************************/ voidSPICmd8bit(byte WrPara) {byte bitcnt; Clr_nCS();Clr_SCK();for(bitcnt = 8; bitcnt != 0; bitcnt--){Clr_SCK();if(WrPara&0x80){Set_MOSI();}else{Clr_MOSI();}Set_SCK();WrPara <<= 1;}Clr_SCK();Set_MOSI();//Set_nCS(); //*此處不關(guān)閉nCS,使用連續(xù)模式* }/****************************************************************************** **函數(shù)名稱:SPIRead8bitt **函數(shù)功能:SPI讀取參數(shù)8bit **輸入?yún)?shù):讀取8bit數(shù)據(jù)——RdPara **輸出參數(shù):無 **注意: 保留nCS輸出Low ******************************************************************************/ byte SPIRead8bit(void) {byte RdPara = 0;byte bitcnt;Clr_nCS();Set_MOSI(); //讀FIFO,維持SDI為H for(bitcnt=8; bitcnt!=0; bitcnt--){Clr_SCK();RdPara <<= 1;Set_SCK();if(MISO_H()){RdPara |= 0x01;}else{;}}Clr_SCK();//Set_nCS(); //*此處不關(guān)閉nCS,使用連續(xù)模式*//DBG("RdPara = %x\n",RdPara);return(RdPara); }/****************************************************************************** **函數(shù)名稱:SPIRead **函數(shù)功能:SPI讀取一個地址數(shù)據(jù) **輸入?yún)?shù):adr **輸出參數(shù):無 ******************************************************************************/ byte SPIRead(byteadr) {byte tmp; SPICmd8bit(adr); //發(fā)送要讀取的地址tmp = SPIRead8bit(); //讀取數(shù)據(jù) Set_nCS();return(tmp); }/****************************************************************************** **函數(shù)名稱:SPIWrite **函數(shù)功能:SPI寫入一個16數(shù)據(jù)(高8位地址,低8位數(shù)據(jù)) **輸入?yún)?shù):WrPara **輸出參數(shù):無 ******************************************************************************/ void SPIWrite(wordWrPara) { byte bitcnt; Clr_SCK(); //注意SCK先清0,保持低Clr_nCS();WrPara |= 0x8000; //寫數(shù)據(jù)高位置1for(bitcnt=16; bitcnt!=0; bitcnt--){Clr_SCK();if(WrPara&0x8000){Set_MOSI();}else{Clr_MOSI();}Set_SCK();WrPara <<= 1;}Clr_SCK();Set_MOSI();Set_nCS(); } /****************************************************************************** **函數(shù)名稱:SPIBurstRead **函數(shù)功能:SPI連續(xù)讀取模式 **輸入?yún)?shù):adr——讀取地址 ** ptr——存儲數(shù)據(jù)指針 ** length 讀取長度 **輸出參數(shù):無,數(shù)據(jù)存在ptr中 ******************************************************************************/ voidSPIBurstRead(byte adr, byte *ptr, byte length) {byte i;if(length<=1) //讀取長度必須大于1{return;}else{Clr_SCK(); //注意SCK先清0,保持低Clr_nCS();SPICmd8bit(adr); //讀取地址for(i=0;i<length;i++){ptr[i]= SPIRead8bit();}Set_nCS(); } }/****************************************************************************** **函數(shù)名稱:SPIBurstWrite **函數(shù)功能:SPI連續(xù)寫入模式 **輸入?yún)?shù):adr——寫入地址 ** ptr——存儲數(shù)據(jù)指針 ** length 寫入長度 **輸出參數(shù):無 ******************************************************************************/ voidBurstWrite(byte adr, byte *ptr, byte length) {byte i;if(length<=1) //讀取長度不為0或1{return;}else { Clr_SCK(); //注意SCK先清0,保持低Clr_nCS(); SPICmd8bit(adr|0x80); //連續(xù)寫for(i=0;i<length;i++){SPICmd8bit(ptr[i]);}Set_nCS(); } }longspi_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {……switch(cmd){case SSP_READ_ALT:…...val = *(unsigned int*)arg;addr = (unsignedchar)(val&0xff);data =SPIRead(addr);……*(unsigned int *)arg= (unsigned int)(data&0x0000ff);break;case SSP_READ_BURST:{unsignedchar addr = 0x00;……/*讀取數(shù)據(jù) */SPIBurstRead(addr,read_tmp_data, DATA_LENGTH);…...break;}case SSP_WRITE_ALT:data = 0;val = *(unsigned int *)arg;tmp = (unsignedshort)((val&0xff0000)>>8); tmp |= (unsignedshort)((val&0x0000ff)>>0);……SPIWrite(tmp);break; case SSP_WRITE_BURST:res =copy_from_user(tmp_str, (unsigned char *)arg, sizeof(tmp_str));if (res != 0){printk("copydata from the user space error\n");}……BurstWrite(addr,data, DATA_LENGTH);break;default:{printk("Nosuch spi command %#x!\n", cmd);return -1;}}return 0; }int spi_open(structinode * inode, struct file * file) {……return 0; }intspi_close(struct inode * inode, struct file * file) {return 0; }static structfile_operations spi_fops = {.owner =THIS_MODULE,.unlocked_ioctl = spi_ioctl,.open =spi_open,.release =spi_close };static structmiscdevice spi_dev = {.minor =MISC_DYNAMIC_MINOR, .name =DEV_NAME,.fops =&spi_fops, };static int __initspi_gpio_init(void) {int ret;ret = misc_register(&spi_dev);if (ret < 0){printk("registerspi_gpio device failed!\n");return -1;}printk("SPI driver initializesuccessful! .\n");return 0; }static void __exitspi_gpio_exit(void) {misc_deregister(&spi_dev);printk("SPI driver exit!\n"); } module_init(spi_gpio_init); module_exit(spi_gpio_exit);MODULE_LICENSE("GPL"); MODULE_AUTHOR(DRV_AUTHOR); MODULE_DESCRIPTION(DRV_DESC);
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的在ARM Linux下使用GPIO模拟SPI时序详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

91专区在线观看 | 97视频在线观看视频免费视频 | 偷拍精偷拍精品欧洲亚洲网站 | 91av视频在线免费观看 | 美女视频网 | 婷婷六月综合亚洲 | 91视频啊啊啊 | 在线观看免费黄色 | 九九九九色 | 色午夜影院 | 91天堂影院 | 国产精品免费久久 | 日本三级全黄少妇三2023 | 国产区精品视频 | 国产精品综合久久久 | 国产午夜精品一区二区三区四区 | 国产成人久久av免费高清密臂 | 草久在线 | 欧美91视频| 日韩欧在线 | 国产亚洲aⅴaaaaaa毛片 | 国产一区二区不卡视频 | 夜夜躁狠狠躁日日躁 | 久久亚洲免费 | 成+人+色综合| a色视频 | 国产69久久精品成人看 | 国产手机在线观看 | 国产一区二区三区视频在线 | 91av原创 | 国产在线播放一区二区三区 | 日韩久久视频 | 在线97| 国模一区二区三区四区 | 欧美日韩不卡在线观看 | 日韩欧美99| 日韩二区三区在线观看 | 国产精品成人免费精品自在线观看 | 超碰在线97免费 | 国产精品手机在线 | 久久精品五月 | 日韩欧美在线免费观看 | 五月天中文字幕mv在线 | 国产人成一区二区三区影院 | 黄色福利| 婷婷丁香六月天 | 欧美成人69av| 久久久久草| 国产亚洲字幕 | 精品久久久久久久久久国产 | 日日爱av| 国内外成人免费在线视频 | 九九免费在线观看视频 | 欧美日韩天堂 | 黄色精品视频 | 黄色毛片网站在线观看 | 99在线免费视频 | 成人在线播放网站 | 高清视频一区二区三区 | 中文字幕在线观看视频免费 | 国产成人精品亚洲a | 中文字幕在线人 | www激情网 | 99欧美视频 | 免费成人在线观看视频 | 免费精品在线观看 | 又黄又爽又色无遮挡免费 | 亚洲国产操 | 8x成人在线 | 中文字幕在线观看2018 | 丁香六月激情 | 97超碰在线资源 | 精品一区二区三区电影 | 天天搞天天干 | 美女国产| 国产色视频| 在线欧美小视频 | 中文av一区二区 | 久久久久久久久久久免费av | 国产二区视频在线观看 | 国产不卡免费 | 欧美一级激情 | 国产精品999久久久 久产久精国产品 | 毛片一二区 | 一级片视频在线 | 天天干夜夜擦 | 国内外成人在线视频 | 在线观看麻豆av | 在线观看一二三区 | 日韩欧美一区二区三区免费观看 | 亚洲成色777777在线观看影院 | 正在播放国产一区二区 | 五月婷婷激情五月 | 国产亚洲情侣一区二区无 | 日韩在线激情 | 国产黄色特级片 | 欧美日韩在线观看视频 | 丁香六月伊人 | 婷婷中文字幕在线观看 | 久久国产亚洲视频 | 日韩电影中文,亚洲精品乱码 | 激情导航| 国产高清一| 96亚洲精品久久久蜜桃 | 在线观看日韩国产 | 午夜影院在线观看18 | 欧美福利视频 | 在线观看日韩国产 | 国产精品国产三级国产 | 人人爽人人片 | 亚洲精品综合欧美二区变态 | 久久久视频在线 | 久久精品国产久精国产 | 99久久毛片 | 日日干干夜夜 | 久草在线免费色站 | www.久久com| av中文字幕亚洲 | 国产精品2020 | 深爱五月网 | 国产成人亚洲在线电影 | 国产精品久久久久久久久久久久 | 最近中文字幕高清字幕免费mv | 香蕉网站在线观看 | 久久久国产影视 | 日本在线观看一区二区 | 美女视频黄免费的久久 | 五月婷婷久久综合 | 国产精品丝袜在线 | 精品国产欧美一区二区 | 99在线精品视频在线观看 | 天天干人人插 | 人人狠狠 | 久久久久久久久久久久影院 | 中文字幕免费在线 | 久草免费新视频 | 五月婷婷欧美 | 中文永久字幕 | 精品免费久久 | 97在线视频免费看 | 成人黄色在线电影 | 狠狠躁18三区二区一区ai明星 | www.久久91 | 日韩免费在线观看视频 | 玖玖在线观看视频 | 日韩久久精品一区 | 免费看成人片 | 国产成人免费av电影 | 国产成人亚洲精品自产在线 | 99久久精品免费 | 国产精品自在线拍国产 | 日韩极品视频在线观看 | 日韩欧美高清视频在线观看 | 91亚洲在线 | www久草| www视频在线免费观看 | 国产精品99久久久久的智能播放 | 丁香六月天 | 在线导航av | 日韩特级毛片 | 精品国产乱码久久久久久1区2匹 | 国产又粗又猛又黄视频 | 久久免费视频3 | 91成人免费 | 天天操欧美 | 色偷偷网站视频 | 91porny九色91啦中文 | 久久在线精品视频 | 国产97在线视频 | 九九免费精品视频 | 一区三区视频在线观看 | 国产小视频在线免费观看 | 久久久久婷 | 日韩欧美在线观看 | 亚洲国产精品激情在线观看 | 日韩高清在线一区二区 | 国产精品淫片 | 18久久久| 日韩视频一 | 久久综合狠狠综合久久狠狠色综合 | 黄a在线观看 | 国产电影黄色av | 九色91av| 国产精品久久久久一区二区国产 | 国产九九热视频 | 久久久久在线观看 | 91看片淫黄大片一级在线观看 | 免费aa大片 | 国产黄大片 | 亚洲国产影院av久久久久 | 激情五月av | 黄色在线看网站 | 99热在线观看 | 日本久久久久久 | 91亚洲精品视频 | 久久黄色影视 | 欧美性色综合 | 国产精品久久久久av福利动漫 | 九九在线视频免费观看 | 99热最新在线 | 国产色网站 | 天天色天 | 国产偷v国产偷∨精品视频 在线草 | 91手机在线看片 | 青草视频在线看 | 国产玖玖在线 | 美女黄濒 | 亚洲成人av在线播放 | 国产午夜精品一区二区三区在线观看 | 日韩高清免费电影 | 波多野结衣在线中文字幕 | 在线免费黄色 | 亚洲精品xxxx | av三区在线| 色视频在线观看免费 | 国产只有精品 | 色网站免费在线观看 | 婷婷五情天综123 | 久久字幕网 | 国产高清在线免费观看 | 欧美精品国产综合久久 | 免费观看一区 | 国产精品亚洲成人 | 91毛片视频 | 久久视奸| 国产91精品高清一区二区三区 | 成年人免费在线播放 | 国产精品久久久久久久久久久久午夜 | 免费观看性生活大片3 | 国产69久久精品成人看 | 日韩欧美精品在线观看视频 | av丁香花 | 欧美日韩国产综合一区二区 | 国产欧美最新羞羞视频在线观看 | 国产亚洲精品久久久久秋 | 精品视频9999| 国产97视频 | 久草9视频 | 国产成人精品一区二区三区网站观看 | 91人人澡人人爽人人精品 | 国产黄色免费观看 | 欧美一区二区三区不卡 | 国产自产高清不卡 | 免费国产一区二区视频 | 亚洲精品久久久久久国 | 一区 二区电影免费在线观看 | 白丝av在线 | 在线免费观看涩涩 | 综合色影院 | 亚洲精品午夜久久久久久久久久久 | 99视频精品 | 91精品亚洲影视在线观看 | 国产精品乱码久久久久 | 久久免费片 | 精品99在线 | 欧美精品少妇xxxxx喷水 | 天天摸日日摸人人看 | 99热最新精品 | 久久在线免费观看 | 免费高清男女打扑克视频 | 黄色小视频在线观看免费 | 亚洲高清色综合 | 国产黑丝一区二区 | 久久久久久久久久久免费视频 | 999一区二区三区 | 亚洲综合色视频 | 久久综合五月 | 黄色的网站在线 | 91九色蝌蚪在线 | 国产精品久久中文字幕 | 午夜视频二区 | 国产精品三级视频 | 日韩三区在线 | 国产视频一级 | 开心婷婷色 | 亚洲精品在线观看的 | 在线视频观看91 | 精品久久久久久久久久久久久 | 国产蜜臀av | 在线免费观看欧美日韩 | 91中文字幕一区 | 91亚洲欧美 | 激情av一区二区 | 麻豆视频免费看 | 91精品国产综合久久久久久久 | 日韩精品一区在线观看 | 又色又爽又黄高潮的免费视频 | 我要色综合天天 | 欧美日韩在线免费视频 | 爱干视频 | 玖玖999| 国产1区在线观看 | 黄色毛片观看 | 五月婷婷综 | 伊人久在线 | 久久免费大片 | 国产韩国日本高清视频 | 视频一区二区在线观看 | 午夜美女网站 | 久久99精品国产91久久来源 | 亚洲一区二区观看 | 人人干97| www.亚洲精品视频 | 成人黄色在线播放 | www五月| 91香蕉视频在线下载 | 国产亚洲精品久久久久久网站 | 日韩欧美一区视频 | 亚洲理论电影 | 精油按摩av | 黄色软件在线观看免费 | 欧洲视频一区 | 亚洲色五月 | 国产欧美日韩精品一区二区免费 | 亚洲精品乱码久久久久久蜜桃不爽 | 欧美日韩不卡在线 | 亚洲午夜精品久久久 | 天天操天天射天天添 | 免费观看www7722午夜电影 | 国产精品久久久久久久久毛片 | 在线观看一级片 | 麻豆视传媒官网免费观看 | 亚洲精品欧美视频 | 欧美精品乱码久久久久 | 精品美女久久久久久免费 | 亚洲春色成人 | 久久国产精品成人免费浪潮 | 久久99网站 | 狠狠色丁香婷婷综合视频 | 亚洲精品a区 | 久草观看视频 | 四虎永久免费网站 | 久久久一本精品99久久精品 | 国产一区二区在线播放 | 丁香五月亚洲综合在线 | 日韩成人免费观看 | 五月婷婷亚洲 | 欧美一级小视频 | www.黄色片.com| 天天干夜夜爽 | 一区二区三区四区在线 | 奇米影视999 | 黄色.com| 24小时日本在线www免费的 | 亚洲综合视频在线 | 中文字幕在线观看一区二区 | 日本中文字幕在线免费观看 | 亚洲激情 在线 | 国产精品午夜av | 草免费视频 | www..com毛片 | 91九色精品国产 | 国产一级一片免费播放放 | 三级视频日韩 | 女人18片毛片90分钟 | 69xxxx欧美 | 亚洲成人午夜在线 | 国产精品久久久久免费 | 精品一区中文字幕 | 久久99亚洲精品久久 | 岛国av在线 | 成人久久电影 | 久久tv视频| 99视频国产精品免费观看 | 久久综合久久综合这里只有精品 | 一区二区视频播放 | 中文免费在线观看 | 99久久www免费 | 在线观看中文字幕网站 | 亚洲一区二区精品3399 | 国产精品久久久99 | www.色com | 91视频免费看网站 | www成人av | 久久少妇av| 国产成a人亚洲精v品在线观看 | 亚洲精品麻豆 | 久草在线免费色站 | 精品一区二区在线播放 | 欧美精品一区二区三区一线天视频 | 超碰伊人网 | 日本在线观看一区二区三区 | av资源免费看 | 欧美韩日精品 | 在线观看日本高清mv视频 | 最新亚洲视频 | 亚洲人在线视频 | 久久综合偷偷噜噜噜色 | 亚洲精品视频在线观看免费 | 麻豆视频91 | 九九久久精品视频 | 91av视频在线播放 | 午夜精品视频免费在线观看 | 日韩精品高清视频 | 久久综合九色综合久久久精品综合 | 天天操夜夜想 | 超碰免费av| 色综合久久中文字幕综合网 | 亚洲欧美观看 | 国产精品久久人 | 91av免费在线观看 | 欧美日韩一区二区视频在线观看 | 亚洲综合视频在线 | 日韩av电影网站在线观看 | 五月婷婷操 | 毛片网站免费在线观看 | 九九九热精品免费视频观看网站 | 日本中文字幕在线播放 | 国产伦精品一区二区三区免费 | 婷婷精品国产欧美精品亚洲人人爽 | 天天综合网在线观看 | 国产亚洲婷婷 | 在线午夜电影神马影院 | 天天狠狠| 美国三级黄色大片 | 国产黄色片久久久 | 在线看v片成人 | 天天干夜夜想 | 久久国产影视 | 超碰在线99| 色在线视频 | 国产麻豆视频网站 | 少妇bbbb| 国产一级二级在线播放 | 欧美五月婷婷 | 国产在线不卡精品 | 久久伊99综合婷婷久久伊 | 日韩精品一区在线观看 | 美女免费视频观看网站 | 色婷婷六月天 | 天天干天天天 | 天天天射 | 成人av电影免费观看 | 久久久久久美女 | 国产在线a视频 | 欧美日本啪啪无遮挡网站 | 四虎在线观看视频 | 国产香蕉97碰碰久久人人 | 黄色资源在线观看 | 免费观看特级毛片 | www成人精品| 国产精品麻豆果冻传媒在线播放 | 成片人卡1卡2卡3手机免费看 | 91在线视频导航 | 九九久久免费 | 日韩av电影中文字幕在线观看 | 狠狠色噜噜狠狠狠狠2022 | 国产 日韩 在线 亚洲 字幕 中文 | 国产人成精品一区二区三 | 久久久久久久国产精品影院 | 天天干天天操天天搞 | www.黄色小说.com | 天天操网 | 久久精品一区二区国产 | 在线观看国产亚洲 | 在线国产一区二区三区 | 成人在线超碰 | 免费在线黄色av | 日本最新中文字幕 | 激情综合网天天干 | 精品亚洲欧美一区 | 精品久久电影 | 日韩中文字幕国产精品 | 99久久婷婷国产一区二区三区 | 国产精品9区 | 久久久久久久久久久久久国产精品 | 国内视频| 中文在线字幕观看电影 | 99久久99久久精品国产片果冰 | 久草在线视频网站 | 免费在线观看黄网站 | 免费黄色网址网站 | 国产高清视频在线免费观看 | 国产日产亚洲精华av | 激情网站免费观看 | 亚洲精品乱码久久久久久久久久 | 免费在线观看av | 亚洲综合涩 | 99精品视频在线 | 狠狠色狠狠色合久久伊人 | 欧美视频xxx | av手机在线播放 | 中文字幕电影一区 | 久久免费视屏 | 亚洲成人国产精品 | 国产999精品久久久久久麻豆 | 天天插天天 | 又污又黄的网站 | 欧洲亚洲女同hd | av网站地址 | 在线观看91av | 成人黄色大片在线免费观看 | 国产糖心vlog在线观看 | 黄色三级免费看 | 在线观看免费版高清版 | 香蕉影视app | 久久夜色网 | 亚洲一区二区三区四区在线视频 | 天天干人人 | 日韩精品欧美专区 | 国内精品国产三级国产aⅴ久 | 成人一级免费视频 | 天天操天天舔天天干 | 五月亚洲婷婷 | www.国产在线观看 | 国产系列 在线观看 | 久久精品99精品国产香蕉 | 国产又粗又猛又色又黄视频 | 日韩精品中文字幕一区二区 | 天天干天天草 | 免费看一及片 | 丝袜制服天堂 | 精品国产一区二区三区男人吃奶 | 中文字幕日韩高清 | japanesexxxhd奶水| 美女啪啪图片 | 亚洲日本中文字幕在线观看 | 热re99久久精品国产66热 | 99热国产在线中文 | 国产 日韩 在线 亚洲 字幕 中文 | 激情综合亚洲精品 | 插久久| 丁香花五月 | 国产 一区二区三区 在线 | 久久理伦片 | 日韩高清av| 免费在线视频一区二区 | 久久免费精彩视频 | av九九| 日韩av网站在线播放 | 久久亚洲精品国产亚洲老地址 | 成人视屏免费看 | 黄色性av | 日韩av一卡二卡三卡 | 久久久精品国产免费观看一区二区 | 国产一区二区高清 | 国产人成免费视频 | 亚洲欧美视频在线 | 中文字幕123区 | 狠狠干天天干 | 久久综合色影院 | 丁香激情综合国产 | 中文字幕资源网在线观看 | 国产精品美女999 | 亚洲免费a| 一级黄色毛片 | 五月婷婷免费 | 在线免费观看羞羞视频 | 久久99精品一区二区三区三区 | 久久免费片 | 又色又爽又黄高潮的免费视频 | 亚洲一级在线观看 | 成年人黄色免费视频 | 国产精品无av码在线观看 | 中文字幕a∨在线乱码免费看 | 婷婷新五月 | av丝袜制服| 美女网站在线观看 | 丁香婷婷激情国产高清秒播 | 九九九九热精品免费视频点播观看 | 91精品一区二区三区蜜臀 | 丁香婷婷综合激情 | 成人精品福利 | 欧美亚洲免费在线一区 | 99草在线视频 | 国产日韩精品一区二区 | 成人精品国产 | 国产在线2020| 97超碰国产精品 | 中文字幕在线成人 | 午夜色大片在线观看 | 精品视频久久 | 精品久久久久久电影 | 日韩免费不卡视频 | 999在线视频 | 久久久久久久久久久久久9999 | 一级一片免费看 | 99国产视频 | 久久人人爽爽 | 免费十分钟 | 久久免费的精品国产v∧ | 韩日av一区二区 | 国产精品久久影院 | 欧美一级日韩三级 | 99免费看片| 欧美日韩精品在线观看 | 9久久精品| 黄色一级在线免费观看 | 国产综合婷婷 | 国产免费av一区二区三区 | 色a综合| 欧美激情h | 日日麻批40分钟视频免费观看 | 欧美一级片 | 丝袜av一区 | 日韩精品影视 | 亚州精品天堂中文字幕 | 久久久免费网站 | 五月天色中色 | 国产日韩在线视频 | 午夜av网站| a级片久久久| 91色亚洲 | 久草免费新视频 | 黄色片亚洲 | 国产精品久久在线 | 狠狠操影视 | 亚洲无线视频 | sesese图片 | 在线成人短视频 | 色天天中文 | 色综合久久中文字幕综合网 | 久久综合久久综合这里只有精品 | 99国产成+人+综合+亚洲 欧美 | 一级淫片在线观看 | 色婷婷免费 | 久久综合久久久久88 | 三级av黄色 | 97免费在线观看视频 | 999久久久久久久久 69av视频在线观看 | 久久这里只有精品23 | 亚洲人成综合 | 五月婷婷一级片 | 亚洲福利精品 | 日本最新高清不卡中文字幕 | av网站有哪些 | 97理论电影 | 午夜精品导航 | 超碰人人射 | 精品成人a区在线观看 | 欧美a级片网站 | 成人av资源 | 中文字幕在线播放一区 | 免费高清在线观看成人 | 亚洲视频在线观看 | 午夜电影久久 | av在线播放快速免费阴 | 蜜臀久久99精品久久久久久网站 | 国产免码va在线观看免费 | 在线激情网 | 天天操天天爱天天干 | 国产高清在线免费 | 最近免费中文视频 | 日韩美一区二区三区 | 黄色中文字幕在线 | 国产亚洲精品久久久久久久久久 | 色婷婷狠狠五月综合天色拍 | 偷拍精偷拍精品欧洲亚洲网站 | 日韩在线免费视频观看 | 天天综合网天天综合色 | avav99| 久久手机免费视频 | 亚洲国产午夜视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | free. 性欧美.com | 欧美亚洲免费在线一区 | 国产福利av | 天天操天天操 | 日韩在线观看视频在线 | 91视频免费 | 久久久www成人免费毛片 | 日韩久久激情 | 欧美做受高潮 | 精品久久久久久亚洲 | 中文字幕免费在线看 | 欧美日韩一区二区三区视频 | 国产又粗又猛又色 | 久久精品国产v日韩v亚洲 | 国产精品成人免费一区久久羞羞 | 亚洲成人国产精品 | 97免费在线视频 | 国产xxxx | 中午字幕在线观看 | 在线看片视频 | 日韩一区二区三区不卡 | 婷婷丁香视频 | 五月婷婷中文网 | 中文字幕在线观看一区二区三区 | 91入口在线观看 | 欧美中文字幕第一页 | 国产精品一区久久久久 | 丁香婷婷深情五月亚洲 | 三级av在线免费观看 | 狠狠色丁香九九婷婷综合五月 | 99色免费| 久久精品精品 | 亚洲美女精品视频 | 国产精品一区二区久久精品 | 国产高清视频在线 | 九九交易行官网 | 国产精品久久久久久久久久久久午夜 | av不卡中文 | 狠狠色噜噜狠狠 | 色综合久久中文字幕综合网 | 国内成人av| 亚洲伦理中文字幕 | 国产精品入口麻豆www | 国产伦精品一区二区三区四区视频 | 亚洲午夜av电影 | 天天干天天摸 | 国产精品久久久久久久久久久久久久 | 国产精品一区二区吃奶在线观看 | 久久久久久国产精品久久 | 丁香五香天综合情 | 毛片网免费 | 亚洲电影图片小说 | 成年人免费观看国产 | 午夜av免费观看 | 99久久99久久精品国产片果冰 | 欧美吞精 | 亚洲欧美日韩精品久久奇米一区 | 久久精品视频在线 | 国产1区在线 | 欧美日韩精品免费观看 | 天天操天天操天天操 | 日日夜夜爱| www免费网站在线观看 | 激情综合站 | 在线91网| 国产精品福利午夜在线观看 | 欧美最猛性xxxxx免费 | 四虎永久精品在线 | 亚洲精品国产麻豆 | 国产精品欧美日韩在线观看 | 日产乱码一二三区别在线 | 成人一区二区三区在线 | 久草视频在线免费看 | 五月天色中色 | 日韩久久久久久 | 特级毛片在线免费观看 | 成人在线电影观看 | 欧美 激情在线 | 99视频在线免费播放 | 九九热在线精品视频 | 黄色国产大片 | 亚洲一区二区黄色 | 2020天天干夜夜爽 | 欧美巨大荫蒂茸毛毛人妖 | 精品久久精品 | 最新国产精品亚洲 | 精品国产a | 欧美日韩在线免费观看 | 日韩视频一区二区在线 | 成人久久免费 | 黄色在线观看网站 | 久久人人爽 | 欧美激情精品一区 | 久久手机看片 | 国产午夜三级一区二区三 | 国产婷婷精品 | 成年人免费观看国产 | 欧美一区二区三区免费看 | 美女黄视频免费 | 久久综合九色综合欧美狠狠 | 97在线观看视频 | 少妇自拍av | 国产在线国偷精品产拍 | 亚洲一区二区精品在线 | 国产91影院 | 一级淫片a | 成人久久免费 | 狠狠色丁香婷婷 | 亚洲一区二区观看 | 91视频免费 | 天天爽夜夜爽人人爽曰av | 中文字幕在线视频一区二区三区 | 国产成人a v电影 | 8x成人免费视频 | 美女视频黄是免费的 | 92中文资源在线 | 亚洲精品国产视频 | 狠狠操狠狠干天天操 | 在线看日韩| 久久精品网址 | 久草在线久草在线2 | 国产二区视频在线观看 | 九九影视理伦片 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 日韩视频在线不卡 | 国产美女视频免费观看的网站 | 欧美xxxxx在线视频 | 国产精品一区二区三区免费视频 | 一区二区在线电影 | 国产黄色观看 | 色在线网站| 片网站 | 一级免费黄视频 | 午夜av一区二区三区 | 激情丁香月 | 色综合久 | 久久另类小说 | 黄色日本片| 精品女同一区二区三区在线观看 | 91人人爽人人爽人人精88v | 婷婷av网站 | 欧美日本在线视频 | 午夜视频亚洲 | 草久草久 | 91桃色免费视频 | 国产精品久久久久久久久久妇女 | 99久久久国产精品美女 | 成人免费视频免费观看 | 一区二区三区精品在线 | 精品在线播放视频 | 免费福利在线观看 | 色播激情五月 | 亚洲一区 影院 | 国产片免费在线观看视频 | 久久久久国产成人精品亚洲午夜 | 2023亚洲精品国偷拍自产在线 | 日韩精品专区在线影院重磅 | 天天爽夜夜操 | av免费试看 | 成人资源网 | 在线观看一级 | 日韩精品一区二区免费视频 | 五月天亚洲综合小说网 | 天天操天天干天天 | 久久久穴 | 国产精品久久久久aaaa | 中文av在线播放 | 久久久美女 | 又黄又刺激的视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 天天操天天射天天 | 日日操操 | 免费高清在线观看成人 | 天天操天天舔天天干 | 奇米影视8888在线观看大全免费 | 日韩性久久 | 麻豆精品在线 | 日韩高清黄色 | 国产精品美女久久久免费 | 深夜免费小视频 | 99精品乱码国产在线观看 | 久久久精选 | 亚洲电影在线看 | 国产精品一区二区免费视频 | 成人a视频在线观看 | 香蕉视频亚洲 | 精品999 | 欧美另类视频 | 夜夜澡人模人人添人人看 | av先锋影音少妇 | 2017狠狠干 | 国产又粗又猛又爽 | 在线观看国产区 | 亚洲电影成人 | 日本久久久久 | 人人看人人艹 | 久久九九久久九九 | 亚洲精品一区二区在线观看 | 国产69精品久久久久久久久久 | 高潮毛片无遮挡高清免费 | 夜色成人av | 国产高清网站 | 色综合国产 | 超碰激情在线 | 精品福利国产 | 99热最新地址 | 成人小视频在线播放 | 国产黄在线观看 | 午夜精品成人一区二区三区 | av字幕在线 | 久久精品一二区 | 黄免费在线观看 | 国产999视频在线观看 | 日韩黄色在线观看 | 国产人免费人成免费视频 | 玖玖爱免费视频 | 日本公乱妇视频 | 在线欧美中文字幕 | 精品久久99 | 91在线看片 | 亚洲人成免费 | av千婊在线免费观看 | 天天天色综合 | 国产手机在线观看 | 99热在线观看 | 欧美一二区视频 | 久久成人国产精品一区二区 | 成人久久网 | 婷婷夜夜 | 婷香五月 | 中文亚洲欧美日韩 | 日一日操一操 | 亚洲一区二区观看 | 日韩免费网址 | 亚在线播放中文视频 | www夜夜| 国产精品一区二区在线播放 | 婷婷深爱网 | 午夜色站| 免费黄色网址大全 | 日韩黄色网络 | 超碰97在线资源 | 欧美综合在线观看 | 成人久久| 日韩3区| 深夜男人影院 | 日韩a级免费视频 | 伊人久久影视 | 亚洲va韩国va欧美va精四季 | 国产激情免费 | 91成年视频 | 午夜狠狠操 | 久久综合九色欧美综合狠狠 | 成人在线视频免费看 | 日本久久免费视频 | 国产综合在线观看视频 | 男女拍拍免费视频 | a久久免费视频 | 久视频在线 | 久久久高清视频 | 天天操天天操天天操天天操天天操 | 中文字幕在线观看视频网站 | 国产精品入口麻豆www | 亚洲精品视频一二三 | 天天摸天天干天天操天天射 | 在线播放精品一区二区三区 | 在线观看一级视频 | 91桃色在线播放 | 在线观看免费一级片 | 国产一区免费在线观看 | 久久久久美女 | 美女视频黄免费网站 | 人人添人人澡 | 99热免费在线 | 国产精品网红直播 | 国产91精品高清一区二区三区 | 国内精品视频在线播放 | 韩国av免费在线观看 | 久久综合久久综合久久 | 日韩av中文字幕在线 | 亚洲视频在线播放 | 亚洲精品久久久久999中文字幕 | 国产999精品久久久久久麻豆 | 91在线九色| 黄色国产精品 | 精品福利av | 亚洲精品午夜一区人人爽 | 免费a v观看 | 五月天丁香亚洲 | 欧美一二三视频 | 国内久久视频 | 成人三级网站在线观看 | 色插综合| 欧美激情另类 | 国产精品日韩在线播放 | 草免费视频| 久久美女视频 | 97成人精品| 日韩av区 | 91av综合 | 色偷偷人人澡久久超碰69 | 亚洲国产成人精品在线观看 | 成人免费亚洲 | 日操操 | 久久精品日产第一区二区三区乱码 | 天天干,夜夜操 | 狠狠色丁香婷婷综合最新地址 | 免费观看的黄色片 | 成人福利在线播放 | 久久久免费精品视频 | 国产69精品久久久久久久久久 | 精品久久国产一区 | 九九久久免费 | 九九免费在线视频 | 国产99久久久久久免费看 | 91在线看片| 欧美日韩国产一区二区三区 | 91av在线电影 | 国产精品美女视频网站 | 成人中心免费视频 | 日韩和的一区二在线 | 四虎永久免费网站 | 欧美一性一交一乱 | 精品久久久久亚洲 | 日韩mv欧美mv国产精品 | 91精品国产成人 | 国产精品久久久影视 | 国产精品 999 | 欧美天堂影院 | 一级黄色片网站 | 国产精品k频道 | 91色在线观看 | 亚洲在线资源 | 国产一级片一区二区三区 | 高清中文字幕av | 碰超人人 | 狠狠狠色丁香婷婷综合久久88 | 中文字幕在线观看免费 | 人人插人人做 | 久久精品视频18 | 国产又粗又猛又黄又爽视频 | 91精品久久香蕉国产线看观看 | 在线观看日韩精品 | 欧美精品一区二区性色 |