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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MPU6050开发 -- 测试程序分析

發(fā)布時間:2023/12/8 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MPU6050开发 -- 测试程序分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如需轉(zhuǎn)載請注明出處:https://blog.csdn.net/qq_29350001/article/details/78623928

上一篇文章再 C52 單片機上進行了測試,那么接下來我們就分析一下測試程序。看看其中都用到哪些寄存器?

測試代碼,參看:MPU6050開發(fā) -- 在 C52 單片機上測試

一、單片機介紹

這部分上一篇文章已經(jīng)講了,我使用的是郭天祥的STC89C52單片機,該實驗板上面使用的外部晶振頻率是 11.0592MHz。因為STC89C52 沒有集成 I2C 控制器,那么我們就定義51單片機端口:

?

//****************************************
sbit ? ?SCL=P1^5; //IIC時鐘引腳定義
sbit ? ?SDA=P1^4; //IIC數(shù)據(jù)引腳定義

//****************************************

二、定義MPU6050內(nèi)部地址 ?

這應(yīng)該是本篇文章的重點了,找出這幾個重要的寄存器。

(1)寄存器25 - 采樣速率分頻器(SMPRT_DIV)

參數(shù):

SMPLRT_DIV 為8位無符號值。 采樣率是通過將陀螺儀輸出速率除以該值來確定的。

描述:

該寄存器指定用于產(chǎn)生MPU-60X0采樣率的陀螺儀輸出速率的分頻器。傳感器寄存器輸出,FIFO輸出和DMP采樣都基于采樣率。采樣率是通過將陀螺儀輸出速率除以 SMPLRT_DIV 產(chǎn)生的:
采樣率=陀螺儀輸出速率/(1 + SMPLRT_DIV)
當DLPF禁用(DLPF_CFG = 0或7)時,陀螺儀輸出速率= 8kHz,當DLPF使能時(見寄存器26)為1kHz。
注意:加速度計輸出速率是1kHz。 這意味著對于大于1kHz的采樣率,同一個加速度計采樣可能會不止一次輸出到FIFO,DMP和傳感器寄存器。

(2)寄存器26 - 配置(CONFIG)

注:位7和位6保留

參數(shù):

EXT_SYNC_SET 3位無符號值。 配置FSYNC引腳采樣。
DLPF_CFG 3位無符號值。 配置DLPF設(shè)置

描述:

該寄存器為陀螺儀和加速度計配置外部幀同步(FSYNC)引腳采樣和數(shù)字低通濾波器(DLPF)設(shè)置。

連接到FSYNC引腳的外部信號可以通過配置 EXT_SYNC_SET 進行采樣。
FSYNC 引腳的信號變化被鎖存,以便捕獲短閃光燈。 鎖存的FSYNC信號將按照寄存器 25 中定義的采樣速率進行采樣。采樣后,鎖存器將復(fù)位為當前的 FSYNC 信號狀態(tài)。
根據(jù)下表,取樣值將被報告在由 EXT_SYNC_SET 的值確定的傳感器數(shù)據(jù)寄存器中的最低有效位的位置。

DLPF由 DLPF_CFG 配置,加速度計和陀螺儀根據(jù) DLPF_CFG 的值進行過濾,如下表所示。

(3)寄存器27 - 陀螺儀配置(GYRO_CONFIG)

注:位2到位0被保留。

參數(shù):

XG_ST 設(shè)置此位將導致X軸陀螺儀執(zhí)行自檢。
YG_ST 設(shè)置此位將使Y軸陀螺儀執(zhí)行自檢。
ZG_ST 設(shè)置該位使Z軸陀螺儀執(zhí)行自檢。
FS_SEL 2位無符號值。 選擇陀螺儀的全量程范圍。

描述:

該寄存器用于觸發(fā)陀螺儀自檢并配置陀螺儀的滿量程范圍。
陀螺儀自檢允許用戶測試機械和電氣部分陀螺儀。每個陀螺儀軸的自檢可通過控制該寄存器的XG_ST,YG_ST和ZG_ST位來激活。每個軸的自檢可以獨立進行,也可以同時進行。
當自檢被激活時,車載電子裝置將啟動適當?shù)膫鞲衅鳌_@種驅(qū)動將使傳感器的檢測質(zhì)量移動一段相當于預(yù)先確定的科里奧利力的距離。這種檢測質(zhì)量位移導致傳感器輸出發(fā)生變化,這反映在輸出信號中。輸出信號用于觀察自檢響應(yīng)。
自檢響應(yīng)定義如下:

自檢響應(yīng)=啟用自檢的傳感器輸出 - 未啟用自檢的傳感器輸出

每個陀螺儀軸的自檢限制在MPU-6000 / MPU-6050產(chǎn)品規(guī)格文件。當自檢的價值響應(yīng)在產(chǎn)品規(guī)格的最小/最大范圍內(nèi),零件已通過自??檢。當自檢響應(yīng)超過文檔中指定的最小/最大值時,該部分被認為是自檢失敗。

?

FS_SEL根據(jù)下表選擇陀螺儀輸出的滿量程范圍。

(4)寄存器28 - 加速度計配置(ACCEL_CONFIG)

參數(shù):

XA_ST 當設(shè)置為1時,X軸加速度計執(zhí)行自檢。
YA_ST 當設(shè)置為1時,Y軸加速度計執(zhí)行自檢。
ZA_ST 設(shè)置為1時,Z軸加速計執(zhí)行自檢。
AFS_SEL 2位無符號值。 選擇加速度計的全量程范圍。

描述:

該寄存器用于觸發(fā)加速度計自檢并配置加速度計滿量程范圍。該寄存器還配置數(shù)字高通濾波器(DHPF)。
加速度計自檢允許用戶測試加速度計的機械和電子部分。每個加速度計軸的自檢可通過控制該寄存器的XA_ST,YA_ST和ZA_ST位來激活。每個軸的自檢可以獨立進行,也可以同時進行。
當自檢被激活時,車載電子裝置將啟動適當?shù)膫鞲衅鳌_@種致動模擬外力。被驅(qū)動的傳感器又將產(chǎn)生相應(yīng)的輸出信號。輸出信號用于觀察自檢響應(yīng)。
自測響應(yīng)定義如下:
自檢響應(yīng)=啟用自檢的傳感器輸出 - 未啟用自檢的傳感器輸出
MPU-6000 / MPU-6050產(chǎn)品規(guī)格文檔的電氣特性表中提供了每個加速度計軸的自檢限制。當自檢響應(yīng)值在產(chǎn)品規(guī)格的最小/最大范圍內(nèi)時,該部件已通過自??檢。當自測響應(yīng)超過文檔中指定的最小/最大值時,該部分被認為是自檢失敗。


AFS_SEL 根據(jù)下表選擇加速度計輸出的滿量程范圍。

(5)寄存器59到64 - 加速度計測量 ACCEL_XOUT_H,ACCEL_XOUT_L,ACCEL_YOUT_H,ACCEL_YOUT_L,ACCEL_ZOUT_H和ACCEL_ZOUT_L

參數(shù):

ACCEL_XOUT 16位二進制補碼值。存儲最近的X軸加速計測量值。
ACCEL_YOUT 16位二進制補碼值。存儲最近的Y軸加速度計測量值。
ACCEL_ZOUT 16位二進制補碼值。存儲最近的Z軸加速計測量值。

描述:

這些寄存器存儲最新的加速度計測量結(jié)果。
按照 寄存器25 中定義的采樣率將加速度計測量值寫入這些寄存器。
加速度計測量寄存器以及溫度測量寄存器,陀螺儀測量寄存器和外部傳感器數(shù)據(jù)寄存器由兩組寄存器組成:內(nèi)部寄存器組和面向用戶的讀取寄存器組。
加速度計傳感器內(nèi)部寄存器組內(nèi)的數(shù)據(jù)總是以采樣率更新。同時,只要串行接口空閑,面向用戶的讀取寄存器組就會復(fù)制內(nèi)部寄存器組的數(shù)據(jù)值。這保證了傳感器寄存器的突發(fā)讀取將從相同的采樣時刻讀取測量結(jié)果。請注意,如果不使用突發(fā)讀取,則用戶負責通過檢查數(shù)據(jù)就緒中斷來確保一組單個字節(jié)的讀取對應(yīng)于單個采樣時刻。
每個16位加速度計的測量結(jié)果都在 ACCEL_FS(寄存器28)中定義了一個滿量程。對于每個滿量程設(shè)置,ACCEL_xOUT 中的每個 LSB 的加速度計靈敏度如下表所示。

(6)寄存器65和66 - 溫度測量(TEMP_OUT_H和TEMP_OUT_L)

參數(shù):

TEMP_OUT 16位有符號值。存儲最近的溫度傳感器測量值。

描述:

這些寄存器存儲最新的溫度傳感器測量值。
溫度測量值按照 寄存器25 中定義的采樣率寫入這些寄存器。
這些溫度測量寄存器以及加速度計測量寄存器,陀螺儀測量寄存器和外部傳感器數(shù)據(jù)寄存器由兩組寄存器組成:內(nèi)部寄存器組和面向用戶的讀取寄存器組。
溫度傳感器內(nèi)部寄存器組內(nèi)的數(shù)據(jù)始終以采樣率進行更新。
同時,只要串行接口空閑,面向用戶的讀取寄存器組就會復(fù)制內(nèi)部寄存器組的數(shù)據(jù)值。這保證了傳感器寄存器的突發(fā)讀取將從相同的采樣時刻讀取測量結(jié)果。請注意,如果不使用突發(fā)讀取,則用戶負責通過檢查數(shù)據(jù)就緒中斷來確保一組單個字節(jié)的讀取對應(yīng)于單個采樣時刻。
電氣規(guī)格表(MPU-6000 / MPU-6050產(chǎn)品規(guī)格文檔第6.4節(jié))中提供了溫度傳感器的比例因子和偏移量。
對于給定的寄存器值,溫度(攝氏度)可以被計算為:
以℃為單位的溫度=(TEMP_OUT寄存器值作為有符號數(shù)量)/ 340 + 36.53
請注意,上述公式中的數(shù)學是十進制的。

(7)寄存器67至72 - 陀螺儀測量 GYRO_XOUT_H,GYRO_XOUT_L,GYRO_YOUT_H,GYRO_YOUT_L,GYRO_ZOUT_H和GYRO_ZOUT_L

參數(shù):

GYRO_XOUT 16位二進制補碼值。存儲最新的X軸陀螺儀測量。
GYRO_YOUT 16位二進制補碼值。存儲最新的Y軸陀螺儀測量結(jié)果。
GYRO_ZOUT 16位二進制補碼值。存儲最新的Z軸陀螺儀測量結(jié)果。

描述:

這些寄存器存儲最近的陀螺儀測量結(jié)果。
陀螺儀測量值按寄存器25中定義的采樣率寫入這些寄存器。
這些陀螺儀測量寄存器以及加速度計測量寄存器,溫度測量寄存器和外部傳感器數(shù)據(jù)寄存器由兩組寄存器組成:內(nèi)部寄存器組和面向用戶的讀取寄存器組。
陀螺儀傳感器內(nèi)部寄存器組內(nèi)的數(shù)據(jù)總是以采樣率更新。
同時,只要串行接口空閑,面向用戶的讀取寄存器組就會復(fù)制內(nèi)部寄存器組的數(shù)據(jù)值。這保證了傳感器寄存器的突發(fā)讀取將從相同的采樣時刻讀取測量結(jié)果。請注意,如果不使用突發(fā)讀取,則用戶負責通過檢查數(shù)據(jù)就緒中斷來確保一組單個字節(jié)的讀取對應(yīng)于單個采樣時刻。
每個16位陀螺儀測量具有在 FS_SEL(寄存器27)中定義的滿量程。對于每個滿量程設(shè)置,GYRO_xOUT中陀螺儀每個LSB的靈敏度如下表所示:

(8)寄存器107 - 電源管理1 (PWR_MGMT_1)

注:位4保留。

參數(shù):

DEVICE_RESET 設(shè)置為1時,該位將所有內(nèi)部寄存器復(fù)位為默認值。一旦復(fù)位完成,該位自動清零。每個寄存器的默認值可以在第3節(jié)找到。
SLEEP 當該位置1時,該位將MPU-60X0置于睡眠模式。
CYCLE 當該位設(shè)置為1且SLEEP被禁止時,MPU-60X0將循環(huán)。在睡眠模式和喚醒之間以LP_WAKE_CTRL(寄存器108)確定的速率從活動傳感器獲取單個樣本數(shù)據(jù)。
TEMP_DIS 設(shè)置為1時,該位禁用溫度傳感器。
CLKSEL 3位無符號值。 指定設(shè)備的時鐘源。

描述:

該寄存器允許用戶配置電源模式和時鐘源。它還提供了一些重置整個設(shè)備,以及一些禁用溫度傳感器。
通過將 SLEEP 設(shè)置為1,MPU-60X0 可以進入低功耗睡眠模式。當 CYCLE 設(shè)置為1而睡眠模式被禁用時,MPU-60X0 將進入循環(huán)模式。在周期模式下,器件在休眠模式和喚醒之間循環(huán),以由 LP_WAKE_CTRL(寄存器108)確定的速率從加速計獲取單個采樣。要配置喚醒頻率,請使用 電源管理2寄存器(寄存器108)內(nèi)的 LP_WAKE_CTRL。
MPU-60X0 時鐘源可選擇內(nèi)部 8MHz 振蕩器,基于陀螺儀的時鐘或外部時鐘源。當選擇內(nèi)部 8MHz 振蕩器或外部時鐘源作為時鐘源時,MPU-60X0 可以在陀螺儀禁用的低功耗模式下工作。
上電時,MPU-60X0 時鐘源默認為內(nèi)部振蕩器。但是,強烈建議將器件配置為使用其中一個陀螺儀(或外部時鐘源)作為時鐘參考,以提高穩(wěn)定性。時鐘源可以按照下表進行選擇。

(9)寄存器117 - 我是誰(WHO_AM_I)

注:位0和7保留。 (硬編碼為0)

參數(shù):

WHO_AM_I包含MPU-60X0的6位I2C地址。
位6:位1的上電復(fù)位值為110 100。

描述:

該寄存器用于驗證設(shè)備的身份。 WHO_AM_I的內(nèi)容是MPU-60X0的7位I2C地址的高6位。 MPU-60X0的I2C地址的最低有效位由AD0引腳的值決定。 該寄存器不反映AD0引腳的值。
該寄存器的默認值是0x68。

?

到此,涉及到的幾個重要寄存器講完了。

接下來是初始化MPU6050,但是我不曉得測試程序中提供的典型值是怎么得出來的。

三、延時

該測試程序中有兩個延時函數(shù),需要了解一下。

(1)void Delay5us ()?

void Delay5us() { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); }

這里的 _nop_(); 是什么意思?

網(wǎng)上查詢,這個函數(shù)是延時一個機器周期的意思,它包含在頭文件intrins.h中,只要程序應(yīng)用到_nop_(),就需要有頭文件intrins.h 的聲明。

那我們查看一下頭文件intrins.h:

用Keil打開工程將鼠標移動到 intrins.h,單擊右鍵,選擇 Open document <intrins.h>,即可打開該頭文件。

?

/*-------------------------------------------------------------------------- INTRINS.HIntrinsic functions for C51. Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH All rights reserved. --------------------------------------------------------------------------*/#ifndef __INTRINS_H__ #define __INTRINS_H__#pragma SAVE#if defined (__CX2__) #pragma FUNCTIONS(STATIC) /* intrinsic functions are reentrant, but need static attribute */ #endifextern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); #if defined (__CX2__) extern int abs (int); #endif #if !defined (__CX2__) extern void _push_ (unsigned char _sfr); extern void _pop_ (unsigned char _sfr); #endif#pragma RESTORE#endif

說明 _nop_() 確實是在頭文件intrins.h里聲明的。但是它是啥意思呢?我還是不清楚。

我快瘋了,我查了半天,只查到下面這個自寫的 delay.c 。但是 _nop_() 語句的句數(shù)是怎么計算出來的就不曉得了。

?

參看:一個相當重要的問題!!!問題!問題!

參看:1T單片機專用延時函數(shù)

/********************************************************************* * * delay.h * ********************************************************************* * 描 述: 網(wǎng)上收集整理的延時函數(shù)頭文件,試用源碼。 * 開發(fā)平臺: KEIL+HL-1/HJ-3G/HJ-C52開發(fā)板 ********************************************************************/ #ifndef DELAY_H #define DELAY_Hvoid delay1us(); void delay2us(); void delay5us(); void delay10us(); void delay20us(); void delay50us(); void delay100us(); void delay200us(); void delay500us(); void delay1ms(); void delay2ms(); void delay5ms(); void delay10ms(); void delay20ms(); void delay50ms(); void delay100ms(); void delay200ms(); void delay300ms(); void delay400ms(); void delay500ms(); void delay1000ms(); void delay2000ms(); void delay5000ms(); void delay1s(); void delay2s(); void delay5s(); void delay10s();void delay8(unsigned char t);/*1.6us--232us延時函數(shù)(fosc=11.0592M時)*/ void delay(unsigned int t);/*2.2us--77ms延時函數(shù)(fosc=11.0592M時)*/ void delayms(unsigned char t);/*一個毫秒級可變延時函數(shù)*/ void delays(float t);/*一個秒級可變延時函數(shù)*/ #endif /********************************************************************* * * delay.c * ********************************************************************* * 描 述: 網(wǎng)上收集整理的延時函數(shù),試用源碼。 * 開發(fā)平臺: KEIL+HL-1/HJ-3G/HJ-C52開發(fā)板*/#include "stc.h"/*包含STC單片機頭文件*/ #include "hjc52.h"/*包含HJ-C52開發(fā)板頭文件*/ #include "delay.h"/*包含網(wǎng)上收集的延時函數(shù)頭文件*/ #include <intrins.h>/*包含含有_nop_()函數(shù)的頭文件*//*一些固定延時函數(shù)*//*1uS延時函數(shù)*/ /*FOSC=11.0592、12、22.1184MHZ時,適用*/ /*其他晶振頻率時,要調(diào)整_nop_();語句的句數(shù),_nop_();語句的句數(shù)=FOSC-10*/ void delay1us() { #if FOSC==11059200 _nop_(); #elif FOSC==12000000 _nop_();_nop_(); #elif FOSC==22118400 _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_(); #endif }/*2uS延時函數(shù)*/ /*FOSC=11.0592、12、22.1184MHZ時,適用*/ /*其他晶振頻率時,要調(diào)整_nop_();語句的句數(shù),_nop_();語句的句數(shù)=2*FOSC-10*/ void delay2us() { #if FOSC==11059200 _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_(); #elif FOSC==12000000 _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); #elif FOSC==22118400 _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); #endif }/*5uS延時函數(shù)*/ void delay5us() { delay8((FOSC/1000000*5-18)/10); }/*10uS延時函數(shù)*/ void delay10us() { delay8((FOSC/1000000*10-18)/10); }/*20uS延時函數(shù)*/ void delay20us() { delay8((FOSC/1000000*20-18)/10); } /*50uS延時函數(shù)*/ void delay50us() { delay8((FOSC/1000000*50-18)/10); } /*100uS延時函數(shù)*/ void delay100us() { delay((0.1*FOSC/1000-24)/13); } /*200uS延時函數(shù)*/ void delay200us() { delay((0.2*FOSC/1000-24)/13); } /*500uS延時函數(shù)*/ void delay500us() { delay((0.5*FOSC/1000-24)/13); } /*1mS延時函數(shù)*/ void delay1ms() { delay((1*FOSC/1000-24)/13); } /*2mS延時函數(shù)*/ void delay2ms() { delay((2*FOSC/1000-24)/13); } /*5mS延時函數(shù)*/ void delay5ms() { delay((5*FOSC/1000-24)/13); } /*10mS延時函數(shù)*/ void delay10ms() { delay((10*FOSC/1000-24)/13); } /*20mS延時函數(shù)*/ void delay20ms() { delayms(20); } /*50mS延時函數(shù)*/ void delay50ms() { delayms(50); } /*100mS延時函數(shù)*/ void delay100ms() { delayms(100); } /*200mS延時函數(shù)*/ void delay200ms() { delayms(200); } void delay300ms() { delayms(300); } void delay400ms() { delayms(400); }/*500mS延時函數(shù)*/ void delay500ms() { delayms(500); } void delay1000ms() { delayms(1000); } void delay2000ms() { delayms(2000); } void delay5000ms() { delayms(5000); }/*1S延時函數(shù)*/ void delay1s() { delays(1); } /*2S延時函數(shù)*/ void delay2s() { delays(2); } /*5S延時函數(shù)*/ void delay5s() { delays(5); } /*10S延時函數(shù)*/ void delay10s() { delays(10); }/*0.8us--116us延時函數(shù)(FOSC=22.1184M時)*/ /*1.5us--214us延時函數(shù)(FOSC=12M時)*/ /*1.6us--232us延時函數(shù)(FOSC=11.0592M時)*/ /*延時時間:(18+10t)/FOSC*/ /*最大延時:2568/FOSC*/ /*最小延時:18/FOSC*/ /*設(shè)要延時的時間為T(常量,單位為us),調(diào)用方式:delay8((FOSC/1000000*T-18)/10)*/ /*例如要延時的時間為100us,調(diào)用方式:delay8((FOSC/1000000*100-18)/10)*/ void delay8(unsigned char t) { unsigned char i; for(i=t;i;i--); }/*1.1us--38.5ms延時函數(shù)(FOSC=22.1184M時)*/ /*2us--70.9ms延時函數(shù)(FOSC=12M時)*/ /*2.2us--77ms延時函數(shù)(FOSC=11.0592M時)*/ /*延時時間:(13t+24)/FOSC /*最大延時:851979/FOSC /*最小延時:24/FOSC /*設(shè)要延時的時間為T(常量,單位為ms),調(diào)用方式:delay((T*FOSC/1000-24)/13)*/ /*例如要延時的時間為10ms,調(diào)用方式:delay((10*FOSC/1000-24)/13)*/ void delay(unsigned int t) { unsigned int i; for(i=t;i;i--); }/*一個毫秒級可變延時函數(shù)*/ /*功 能:實現(xiàn)與參數(shù)直接對應(yīng)的時間(單位為毫秒)的延時*/ /*參 數(shù):范圍1到255*/ /*返回值:無*/ void delayms(unsigned char t) { unsigned char j; for(j=t;j;j--) delay1ms();/*1ms延時*/ }/*一個秒級可變延時函數(shù)*/ /*功 能:實現(xiàn)與參數(shù)直接對應(yīng)的時間(單位為秒)的延時*/ /*參 數(shù):范圍0.01到42949672*/ /*返回值:無*/ void delays(float t) { unsigned int j; j=t*100; while(j--) { delay10ms();/*10ms延時*/ } }

再有上面提到 _nop_(); 這個函數(shù)是延時一個機器周期的意思。那么接下來我們再看一下單片機幾個周期的介紹:

1)時鐘周期 ?
也稱為振蕩周期,定義為時鐘頻率的倒數(shù)(外接12MHZ的晶振,其時鐘周期就是1/12us),t它是單片機中最基本、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作?
2) 狀態(tài)周期 ?
它是時鐘周期的兩倍。?
3) 機器周期 ?
在一個操作周期內(nèi),單片機完成一項基本周期,如取指令、存儲器讀/寫等,它是由12個時鐘周期(6個狀態(tài)周期)組成。 ?我們用的單片機上時鐘頻率為 11.0592MHz,那么機器周期為 12x(1/11.0592) = 1.09us.

4) 指令周期 ?
它是指CPU執(zhí)行一條指令的所需要的時間,一般一個指令周期含有1~4個機器周期。

?

總結(jié):

我不管怎么實現(xiàn)的了,看名字Delay5us,即這個函數(shù)延時 5 us。

(2)void ?delay(unsigned int k); ? ? ? ?

void delay(unsigned int k) { unsigned int i,j; for(i=0;i<k;i++) { for(j=0;j<121;j++); } }

這個是延時函數(shù)用到兩個for循環(huán),內(nèi)層for循環(huán)恒定為小于121,有外層for決定延時多少毫秒。

舉例,delay(500); ? ? //上電延時 ?500ms (毫秒)

這個內(nèi)層恒定值的怎么得出的?是測出來的...

四、I2C通信協(xié)議實現(xiàn)

I2C通信我們已經(jīng)講了,參看:MPU6050開發(fā) -- 進階之I2C/SPI通信協(xié)議??

現(xiàn)在看一下,用程序怎么實現(xiàn)。

(1)I2C起始信號 ?

SCL 為高時SDA的下降沿。

?

?

//************************************************************************************************* //I2C起始信號 //************************************************************************************************* void I2C_Start() { SDA = 1; //拉高數(shù)據(jù)線 SCL = 1; //拉高時鐘線 Delay5us(); //延時 SDA = 0; //產(chǎn)生下降沿 Delay5us(); //延時 SCL = 0; //拉低時鐘線 }

(2)I2C停止信號

SCL 為高時SDA的上升沿

//************************************************************************************************* //I2C停止信號 //************************************************************************************************* void I2C_Stop() { SDA = 0; //拉低數(shù)據(jù)線 SCL = 1; //拉高時鐘線 Delay5us(); //延時 SDA = 1; //產(chǎn)生上升沿 Delay5us(); //延時 }

(3)應(yīng)答

ACK:應(yīng)答信號,在第 9 個時鐘周期 SCL 為高時,SDA 為低

NACK:拒絕信號,在第 9 個時鐘周期,SDA 一直為低

} //************************************************************************************************** //I2C發(fā)送應(yīng)答信號 //入口參數(shù):ack (0:ACK 1:NAK) //************************************************************************************************** void I2C_SendACK(bit ack) { SDA = ack; //寫應(yīng)答信號 SCL = 1; //拉高時鐘線 Delay5us(); //延時 SCL = 0; //拉低時鐘線 Delay5us(); //延時 } //**************************************************************************************************** //I2C接收應(yīng)答信號 //**************************************************************************************************** bit I2C_RecvACK() { SCL = 1; //拉高時鐘線 Delay5us(); //延時 CY = SDA; //讀應(yīng)答信號 SCL = 0; //拉低時鐘線 Delay5us(); //延時 return CY; }


在接收應(yīng)答中,有一個 CY = SDA; 這里的 CY 是什么?

程序狀態(tài)寄存器 PSW 是計算機系統(tǒng)的核心部件——運算器的一部分,PSW用來存放兩類信息:一類是體現(xiàn)當前指令執(zhí)行結(jié)果的各種狀態(tài)信息,稱為狀態(tài)標志,如有無借位進位(CY位)、有無溢出(OF位)、結(jié)果正負(SF位)、結(jié)果是否為零(ZF位)、奇偶標志位(PF位)等;另一類是存放控制信息,稱為控制狀態(tài),如允許中斷(IF位),跟蹤標志(TF位),方向標志(DF)等。

?

根據(jù)上面這段話可以得出,CY是PSW的進位標志。特點是:進位、借位CY=1;否則CY=0.

(4)發(fā)送數(shù)據(jù)

8個bit 發(fā)送一個應(yīng)答 ACK,進位、借位CY=1;否則CY=0.

//***************************************************************************************************** //向I2C總線發(fā)送一個字節(jié)數(shù)據(jù) //***************************************************************************************************** void I2C_SendByte(uchar dat) { uchar i; for (i=0; i<8; i++) //8位計數(shù)器 { dat <<= 1; //移出數(shù)據(jù)的最高位 SDA = CY; //送數(shù)據(jù)口 SCL = 1; //拉高時鐘線 Delay5us(); //延時 SCL = 0; //拉低時鐘線 Delay5us(); //延時 } I2C_RecvACK(); }

(5)接收數(shù)據(jù)

//***************************************************************************************************** //從I2C總線接收一個字節(jié)數(shù)據(jù) //****************************************************************************************************** uchar I2C_RecvByte() { uchar i; uchar dat = 0; SDA = 1; //使能內(nèi)部上拉,準備讀取數(shù)據(jù), for (i=0; i<8; i++) //8位計數(shù)器 { dat <<= 1; SCL = 1; //拉高時鐘線 Delay5us(); //延時 dat |= SDA; //讀數(shù)據(jù) SCL = 0; //拉低時鐘線 Delay5us(); //延時 } return dat; }

(6)I2C設(shè)備寫入/讀取一個字節(jié)數(shù)據(jù)

這里有意思的就是讀/寫地址了,寫地址:11010000,讀地址:11010001

//***************************************************************************************************** //向I2C設(shè)備寫入一個字節(jié)數(shù)據(jù) //***************************************************************************************************** void Single_WriteI2C(uchar REG_Address,uchar REG_data) { I2C_Start(); //起始信號 I2C_SendByte(SlaveAddress); //發(fā)送設(shè)備地址+寫信號 I2C_SendByte(REG_Address); //內(nèi)部寄存器地址, I2C_SendByte(REG_data); //內(nèi)部寄存器數(shù)據(jù), I2C_Stop(); //發(fā)送停止信號 } //******************************************************************************************************* //從I2C設(shè)備讀取一個字節(jié)數(shù)據(jù) //******************************************************************************************************* uchar Single_ReadI2C(uchar REG_Address) { uchar REG_data; I2C_Start(); //起始信號 I2C_SendByte(SlaveAddress); //發(fā)送設(shè)備地址+寫信號 I2C_SendByte(REG_Address); //發(fā)送存儲單元地址,從0開始 I2C_Start(); //起始信號 I2C_SendByte(SlaveAddress+1); //發(fā)送設(shè)備地址+讀信號 REG_data=I2C_RecvByte(); //讀出寄存器數(shù)據(jù) I2C_SendACK(1); //接收應(yīng)答信號 I2C_Stop(); //停止信號 return REG_data; }

五、初始化

(1)串口初始化

單片機這些寄存器,我懶得的搞了

//****************************************************************************************************** //串口初始化 //******************************************************************************************************* void init_uart() { TMOD=0x21; TH1=0xfd; //實現(xiàn)波特率9600(系統(tǒng)時鐘11.0592MHZ) TL1=0xfd; SCON=0x50; PS=1; //串口中斷設(shè)為高優(yōu)先級別 TR0=1; //啟動定時器 TR1=1; ET0=1; //打開定時器0中斷 ES=1; EA=1; }

(2)初始化MPU6050

這些寄存器,我們上面已經(jīng)講了。但是它的典型值怎么來的呢?接下來我們分析一下。

//****************************************************************************************************** //初始化MPU6050 //****************************************************************************************************** void InitMPU6050() { Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠狀態(tài) Single_WriteI2C(SMPLRT_DIV, 0x07); Single_WriteI2C(CONFIG, 0x06); Single_WriteI2C(GYRO_CONFIG, 0x18); Single_WriteI2C(ACCEL_CONFIG, 0x01); }

《1》PWR_MGMT_1 典型值為0x00 (正常啟用)

根據(jù)上面寄存器107 - 電源管理1 (PWR_MGMT_1)的介紹可知:

SLEEP 置0,為未休眠狀態(tài)

TEMP_DIS ?置0,可以使用溫度傳感器

CLKSEL 置0,MPU-60X0 時鐘源選擇的是內(nèi)部 8MHz 振蕩器

《2》SMPLRT_DIV 典型值為0x07 (陀螺儀采用率 125Hz)

根據(jù)上面寄存器25 - 采樣速率分頻器(SMPRT_DIV)的介紹可知:

SMPLRT_DIV 置7,因為采樣率是通過將陀螺儀輸出速率除以該值來確定的。

采樣率=陀螺儀輸出速率/(1 + SMPLRT_DIV)

當DLPF禁用(DLPF_CFG = 0或7)時,陀螺儀輸出速率= 8kHz,當DLPF啟用時(見寄存器26)為1kHz。

根據(jù)下面寄存器26分析,數(shù)字低通濾波器(DLPF)啟用,此時陀螺儀輸出速率為 1KHz

那采樣率 = 1KHz /(1+7) = 125 Hz

《3》CONFIG 典型值為0x06 (低通濾波器頻率為 5Hz)

根據(jù)上面寄存器26 - 配置(CONFIG)的介紹可知:

EXT_SYNC_SET?置0,輸入禁用。又因為連接到FSYNC引腳的外部信號可以通過配置 EXT_SYNC_SET 進行采樣。

因此陀螺儀和加速度計配置外部幀同步(FSYNC)引腳采樣無法被禁用了。

DLPF_CFG 置6 ,數(shù)字低通濾波器(DLPF)啟用。

DLPF由 DLPF_CFG 配置,可知加速度計和陀螺儀的低通濾波器頻率為 5Hz

《4》GYRO_CONFIG 典型值為0x18(陀螺儀不自檢,輸出滿量程范圍為 ± 2000 °/s)

根據(jù)上面寄存器27 - 陀螺儀配置(GYRO_CONFIG 的介紹可知:

XG_ST,YG_ST和ZG_ST位 置0,陀螺儀無自檢功能

FS_SEL 置3,根據(jù)下表選擇陀螺儀輸出的滿量程范圍為 ± 2000 °/s

(5)ACCEL_CONFIG 典型值為0x01(加速度計不自檢,輸出的滿量程范圍為± 2g)

根據(jù)上面寄存器28 - 加速度計配置(ACCEL_CONFIG)的介紹可知:

XA_ST,YA_ST和ZA_ST位 置0,加速度計無自檢功能

AFS_SEL ??置0,根據(jù)下表選擇加速度計輸出的滿量程范圍為 ± 2g

該寄存器還配置數(shù)字高通濾波器(DHPF),但是寄存器手冊里,并未介紹高通濾波器頻率。

六、串口發(fā)送

(1)串口發(fā)送函數(shù)

//************************************************************************************************* //串口發(fā)送函數(shù) //************************************************************************************************* void SeriPushSend(uchar send_data) { SBUF=send_data; while(!TI);TI=0; }

參看:SBUF -- 百度百科

這里有一個 SBUF,全稱:serial data buffer,中文名為串行數(shù)據(jù)緩沖器。這個重疊的地址靠讀/寫指令區(qū)分:串行發(fā)送數(shù)據(jù)時,CPU向SBUF寫入數(shù)據(jù),此時99H表示發(fā)送SBUF;串行接收數(shù)據(jù)時,CPU從SBUF讀出數(shù)據(jù),此時99H表示接收SBUF。

參看:TI -- 百度百科

再有 TI,作為51系列單片機中的串行口通信發(fā)送請求中斷標志位。一旦TI=1,CPU就被告知產(chǎn)生了一個串行通信口中斷。

(2)ASCII 碼

SeriPushSend(0x20); //空格
SeriPushSend(0x0d); //回車 ?
SeriPushSend(0x0a); //換行

其中十六進制的 0x20、0x0d和0x0a 都是 ASCII碼,對應(yīng)的是空格、回車和換行。

參看:C語言再學習 -- ASCII碼表(轉(zhuǎn))

七、超級終端顯示10進制數(shù)據(jù)

(1)串口調(diào)試工具

//****************************************************************************************************** //超級終端(串口調(diào)試助手)上顯示10位數(shù)據(jù) //****************************************************************************************************** void Display10BitData(int value) { uchar i; // value/=64; //轉(zhuǎn)換為10位數(shù)據(jù) lcd_printf(dis, value); //轉(zhuǎn)換數(shù)據(jù)顯示 for(i=0;i<6;i++) { SeriPushSend(dis[i]); } // DisplayListChar(x,y,dis,4); //啟始列,行,顯示數(shù)組,顯示長度 }

(2)合成數(shù)據(jù)

//****************************************************************************************************** //合成數(shù)據(jù) //****************************************************************************************************** int GetData(uchar REG_Address) { uchar H,L; H=Single_ReadI2C(REG_Address); L=Single_ReadI2C(REG_Address+1); return ((H<<8)+L); //合成數(shù)據(jù) }

舉個例子,Display10BitData(GetData(ACCEL_XOUT_H)); ? ?//顯示X軸加速度 ?

宏定義可知:

#define ACCEL_XOUT_H ? ?0x3B ?
#define ACCEL_XOUT_L ? ?0x3C ?
則:ACCEL_XOUT_L =?ACCEL_XOUT_H + 1;

因此就得出了:

H=Single_ReadI2C(REG_Address); ?
L=Single_ReadI2C(REG_Address+1); ?
合成數(shù)據(jù)則為:(H<<8)+L); ?

?

這里說明下 ACCEL_XOUT 是16位二進制補碼值,存儲最近的X軸加速計測量值。

什么是二進制補碼?參看:C語言再學習 -- 負數(shù)

?

初始化MPU6050時我們講到?ACCEL_CONFIG ?典型值為0x01(加速度計不自檢,輸出的滿量程范圍為± 2g)

那么,ACCEL_xOUT 中的加速度計每個 LSB 的靈敏度應(yīng)為?16384 LSB/g

初始化MPU6050時我們講到 GYRO_CONFIG ?典型值為0x18(陀螺儀不自檢,輸出滿量程范圍為 ± 2000 °/s)

同理,GYRO_xOUT中陀螺儀每個LSB的靈敏度為 16.4 LSB/°/s

八、數(shù)據(jù)分析

(1)MPU6050初始化設(shè)置總結(jié)

再講數(shù)據(jù)分析之前,我們先總結(jié)一些初始化MPU6050寄存器設(shè)置和加速度計/陀螺儀靈敏度

? ? PWR_MGMT_1 ?典型值為0x00 ?(正常啟用)
? ? SMPLRT_DIV ?典型值為0x07 (陀螺儀采用率 125Hz)
? ? CONFIG ?典型值為0x06 (低通濾波器頻率為 5Hz)
? ? GYRO_CONFIG ?典型值為0x18(陀螺儀不自檢,輸出滿量程范圍為 ± 2000 °/s)
? ? ACCEL_CONFIG ?典型值為0x01(加速度計不自檢,輸出的滿量程范圍為± 2g)
? ? ACCEL_xOUT 中的加速度計每個 LSB 的靈敏度應(yīng)為 16384 LSB/g
? ? GYRO_xOUT中的陀螺儀每個 LSB 的靈敏度為 16.4 LSB/°/s

(2)數(shù)據(jù)分析

最后在串口調(diào)試工具上,我們來看看它得出的數(shù)據(jù)。

?

A 為三軸MEMS加速度計,G為三軸MEMS陀螺儀。挪動MPU6050模塊,則數(shù)據(jù)變化。

那么問題來了:

得到的這些數(shù)據(jù)是什么意思呢?

我們拿到這些數(shù)據(jù)怎么來做分析?

陀螺儀和加速度計的原理又是什么?

陀螺儀和加速度計沒有自檢,怎么檢測得到的數(shù)據(jù)是否正確?或者說怎么判斷這個MPU6050傳感器是不是好的?

再有現(xiàn)在這些數(shù)據(jù)是延時2秒后發(fā)送的(delay(2000); ),若把延時縮短那么最短能讓它多長時間發(fā)送?

?

請聽下回分解!!?

這篇講的有點多了,再開一篇文章接著講!!

如需轉(zhuǎn)載請注明出處:https://blog.csdn.net/qq_29350001/article/details/78623928

總結(jié)

以上是生活随笔為你收集整理的MPU6050开发 -- 测试程序分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

国产探花视频在线播放 | 超碰在线观看av.com | 亚洲精品免费在线 | 国产精品一区二区久久国产 | 中文字幕免费观看全部电影 | 日韩av免费大片 | 91视频高清完整版 | 日韩精品久久久久久久电影竹菊 | 久久艹欧美 | 另类五月激情 | 色视频国产直接看 | 九月婷婷人人澡人人添人人爽 | 国产91精品一区二区麻豆亚洲 | 久久亚洲成人网 | 成人久久久久 | 国产精品一区二区av日韩在线 | 五月天天色| a级国产乱理伦片在线观看 亚洲3级 | 婷婷久久亚洲 | 成人av影院在线观看 | 福利视频一二区 | 九精品 | 麻豆小视频在线观看 | 成人蜜桃网| 天天爽人人爽夜夜爽 | 久久久久美女 | 六月婷婷久香在线视频 | 中文字幕精品三级久久久 | 三级黄色理论片 | 在线播放你懂 | 精品久久久久久电影 | 婷婷网五月天 | 99精品欧美一区二区 | 亚洲影音先锋 | 日韩网站在线免费观看 | 久久久久久久久久久影院 | 国产精品精品国产色婷婷 | 日本特黄特色aaa大片免费 | 最新国产一区二区三区 | 四虎在线视频免费观看 | 欧美日韩精品在线一区二区 | 成人黄色视 | 中文免费 | 国产精品岛国久久久久久久久红粉 | 丁香六月激情婷婷 | 综合视频在线 | 日韩欧美精品一区二区 | 久久久久一区二区三区 | 免费观看www小视频的软件 | a黄在线观看 | 久久国精品| 亚洲在线a | 亚洲精品99 | 国产视频一区在线播放 | 中文字幕免费观看视频 | 亚洲丝袜一区二区 | 99精品久久99久久久久 | 亚洲国产精品va在线看黑人动漫 | 亚洲国产中文字幕在线观看 | 91香蕉视频 | 亚洲久草视频 | 国产精品久久久久aaaa | 在线观看国产麻豆 | 不卡在线一区 | 又黄又爽又无遮挡的视频 | 久久久网站 | 最近能播放的中文字幕 | 亚洲精品一区二区三区高潮 | 黄色av免费电影 | av不卡中文字幕 | 亚洲一二三久久 | 在线观看日韩精品视频 | 久久天天躁夜夜躁狠狠躁2022 | 日韩电影在线观看一区二区 | 国产精品国产三级国产不产一地 | 欧美激情综合五月色丁香 | a视频在线播放 | 爱干视频 | 国产99久久精品一区二区300 | 亚洲国产成人精品电影在线观看 | 国产精品99久久久久久有的能看 | av高清免费在线 | 精品视频国产一区 | 国产精品96久久久久久吹潮 | 在线免费观看黄色 | 成人中文字幕+乱码+中文字幕 | 99久久婷婷国产一区二区三区 | 国语久久 | 国产精品久久麻豆 | 国产视频中文字幕 | 黄色网免费 | 国产精品美女视频网站 | 久久伦理 | 久久久免费看片 | 在线婷婷 | 国产精品三级视频 | 免费色网 | 视频在线精品 | 久久高清免费视频 | 亚洲va在线va天堂va偷拍 | 欧美极品一区二区三区 | 91丨九色丨蝌蚪丰满 | 在线免费观看欧美日韩 | 日韩成人av在线 | 国产精品二区三区 | 超碰人人99 | 天天色宗合 | 国产午夜激情视频 | 国产美女免费观看 | 视频在线观看入口黄最新永久免费国产 | 九九视频这里只有精品 | 中文字幕乱在线伦视频中文字幕乱码在线 | 91精品国产欧美一区二区 | 精品一区二区久久久久久久网站 | 日韩成人黄色 | 天天躁日日躁狠狠躁 | 91av视频免费在线观看 | 一 级 黄 色 片免费看的 | 91精品国产91久久久久久三级 | 色黄www小说 | 超碰人人干人人 | 亚洲三级精品 | 中文字幕第一页在线视频 | 91大神精品视频在线观看 | 深爱婷婷 | 日韩精品在线免费观看 | 国产成人一区二区三区电影 | 黄污网站在线观看 | av免费看网站| 国产一级片免费观看 | 在线国产视频观看 | 欧美日韩国产页 | 97在线免费观看视频 | 亚洲视频在线观看 | 日日夜夜亚洲 | 五月婷婷综合网 | 午夜精品成人一区二区三区 | 在线免费视频 你懂得 | 在线观看黄色大片 | 黄色精品一区二区 | 亚洲精品玖玖玖av在线看 | 99久视频| 色国产在线| 狠狠色丁香久久综合网 | 99 久久久久 | 久久免费国产 | 中文高清av | 国产 欧美 日产久久 | 色鬼综合网 | 九九热精品视频在线播放 | 黄色片视频免费 | 日韩视频一区二区三区在线播放免费观看 | 中国一区二区视频 | 免费色视频网站 | 亚洲精品av中文字幕在线在线 | 天天操偷偷干 | 高清久久久久久 | 91av欧美 | 99久久精品免费视频 | 就操操久久 | 国产精品一区二区av | 国产在线观看91 | 日韩免费一区 | 婷婷网在线 | 国产精品美女久久久久久免费 | av天天在线观看 | 激情丁香综合 | www.亚洲黄| 349k.cc看片app| 国产亚洲精品久久久久久久久久 | 探花视频在线观看免费版 | 国产原创av在线 | 午夜国产影院 | 日韩大片在线看 | 国内外成人免费在线视频 | 亚洲欧美日韩精品久久久 | 中文永久字幕 | 精品亚洲一区二区 | 狠狠躁夜夜a产精品视频 | 视频91在线 | 韩国av一区二区 | 麻豆91视频 | 91免费网址| 久热av在线 | 99999精品| 岛国av在线免费 | 精品一二 | avav片| 亚洲精品一区二区18漫画 | 国产精品国产三级国产aⅴ无密码 | 中文字幕在线视频免费播放 | 国产色就色| 国产成人久久精品 | 最新精品视频在线 | 81精品国产乱码久久久久久 | 91网在线观看 | 久久男人免费视频 | 国产精品福利一区 | 99精品电影 | 久久精品一区二区三区四区 | 成人免费看片98欧美 | 国产又粗又猛又爽又黄的视频先 | 国产精品乱码久久 | 7799av| 国产国产人免费人成免费视频 | 亚洲一区二区三区精品在线观看 | 91传媒免费观看 | 丁香花在线观看免费完整版视频 | 在线观看a视频 | 日韩伦理片一区二区三区 | 超碰人人乐 | 欧美了一区在线观看 | 区一区二区三区中文字幕 | 欧美日韩免费观看一区=区三区 | 国产96在线观看 | 日韩在线精品一区 | 亚洲成人精品在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 超碰在线97国产 | 91在线精品一区二区 | 伊人日日干 | 色综合久久五月 | 亚洲视频axxx | 日日日爽爽爽 | 天天射日 | 99视频在线观看一区三区 | 亚洲精品18p | 蜜桃av观看| 国产精品久久久久永久免费看 | 综合久久2023| 一区三区视频在线观看 | 黄色成人av | 国产精品毛片久久蜜 | 国产va精品免费观看 | 亚洲精品乱码久久久久久久久久 | 国产成人精品福利 | 日韩毛片在线播放 | 综合网色 | www.色国产| 亚洲精品国 | 国产91精品一区二区麻豆亚洲 | 成人免费视频观看 | 日韩毛片一区 | 欧美日韩破处 | 亚洲日本精品视频 | av免费网站在线观看 | 久久久久久久毛片 | 国产不卡在线观看 | 久久久www成人免费毛片 | 日韩在线观看小视频 | 日韩激情av在线 | 黄色片视频在线观看 | 天天射天天干天天爽 | 色噜噜在线观看 | 亚洲一区二区精品视频 | 免费不卡中文字幕视频 | 亚洲精品午夜久久久久久久久久久 | 国产午夜精品一区二区三区欧美 | www.国产视频| 久草免费在线视频观看 | 97超碰在线播放 | 国产色网站| 97福利在线| 91精品无人成人www | 国产成人综合精品 | 又色又爽的网站 | 国产在线视频资源 | 永久免费的啪啪网站免费观看浪潮 | 国产不卡一区二区视频 | 成人午夜电影久久影院 | 亚洲精区二区三区四区麻豆 | 在线婷婷 | 天天碰天天操视频 | 国产成人资源 | 特级西西www44高清大胆图片 | 黄色小网站免费看 | 五月激情五月激情 | 国产伦理剧| 欧美日韩在线免费观看视频 | 国产97在线看 | 国产精品国产自产拍高清av | 在线小视频你懂得 | 一本—道久久a久久精品蜜桃 | 国内精品视频在线 | 青青久草在线视频 | 99久久99热这里只有精品 | 综合网在线视频 | 天天草网站 | 久久成人免费电影 | 国产成人一区二区啪在线观看 | 五月婷婷激情 | 亚洲乱码精品久久久久 | 久久精品中文字幕少妇 | 国产精品久久久影视 | 欧美一级专区免费大片 | 一本一本久久aa综合精品 | 欧美极品少妇xbxb性爽爽视频 | 久久成年人 | 欧美 日韩 性 | se婷婷| 一区二区三区在线视频111 | 亚洲日本va中文字幕 | 综合网成人 | 国产 色| 久久免费视频这里只有精品 | 精品在线免费视频 | 97在线观看免费 | 中文超碰字幕 | 久久久99久久| 欧美精品一区二区在线播放 | 一级黄色片在线播放 | av中文字幕在线免费观看 | 成年人在线视频观看 | 亚洲午夜精品久久久久久久久久久久 | 久久久夜色 | 欧美a级在线播放 | 久久99久久99精品免费看小说 | 美女久久久久久久 | 国产福利av | 韩国在线一区 | 国产麻豆精品久久 | 国产亚洲成av人片在线观看桃 | 中文在线最新版天堂 | 久久久久女教师免费一区 | 操天天操 | 中文字幕在线播放av | 免费a级大片 | 色精品视频 | 国产一区二区在线免费播放 | 久色免费视频 | 五月婷婷激情 | 日韩中文字幕一区 | 成人午夜精品久久久久久久3d | 精品一区二区在线免费观看 | 国产精品成人一区二区 | 一级性生活片 | 国产精品一区二区久久国产 | 综合网婷婷 | 午夜精品一区二区三区免费 | 日本精品视频一区二区 | 97天堂网 | 波多野结衣在线视频免费观看 | 五月天网页 | 一级片视频免费观看 | 在线中文字母电影观看 | www免费黄色 | 亚州人成在线播放 | 99精品黄色片免费大全 | 久久久精品 一区二区三区 国产99视频在线观看 | 蜜桃麻豆www久久囤产精品 | 国产亚洲精品久久久久久久久久久久 | 在线电影中文字幕 | 精品一区二区三区在线播放 | 亚洲综合色播 | 亚洲色综合 | 国产福利在线免费 | 精品96久久久久久中文字幕无 | 爱爱av网站 | 在线视频一区观看 | 在线观看中文字幕2021 | 男女精品久久 | 国产精品五月天 | 国产黄色在线观看 | 亚洲欧美国产精品va在线观看 | 国产精品成人免费 | 91九色porny蝌蚪视频 | 99久久99久久免费精品蜜臀 | 久久综合久久八八 | 久久久久免费精品国产小说色大师 | 超碰最新网址 | 久久久久二区 | 中文字幕精品一区二区精品 | 麻豆视频国产 | 成人国产精品一区 | 777视频在线观看 | 精品国产视频一区 | 久久国产精品第一页 | 亚洲精品在线观看av | 99在线免费观看视频 | 欧美91精品国产自产 | 亚洲精品久 | 日韩免费一区 | 国内精品久久久久影院日本资源 | 麻豆91在线看 | 中文字幕久久精品一区 | 国产精品久久久久久久电影 | 国产在线97 | 午夜精品久久久久久久久久久久 | 免费麻豆视频 | 免费看毛片在线 | 国产精品久久久久久久久久白浆 | 久久国产精品视频观看 | 国产成人在线播放 | 中文视频在线看 | 国产精品99久久免费黑人 | 国产xxxx性hd极品 | 999免费视频 | 最新国产精品拍自在线播放 | 黄色在线观看网站 | 天天舔天天搞 | 日韩视频在线不卡 | 久久99偷拍视频 | 深爱激情综合网 | 亚洲极色 | 国产精品区二区三区日本 | 狠狠操导航 | 久草在线视频中文 | 99视频在线免费 | 亚洲精品视频在线看 | 日韩高清免费在线观看 | 国产一级片免费视频 | 久久久久久久久久影视 | 日韩网站在线 | 成人免费在线看片 | 丁香六月综合网 | 国产精品一区二区久久久 | 亚洲高清久久久 | 毛片99 | 免费视频91蜜桃 | 欧美日韩亚洲精品在线 | 日韩电影中文 | 日韩sese| 男女拍拍免费视频 | 亚洲精品福利在线观看 | 黄色字幕网 | 日韩在线视频观看 | 国产精品porn | 色婷婷 亚洲 | 精品一区二区6 | 欧美乱淫视频 | 亚洲色影爱久久精品 | 黄色特一级片 | 九九热在线视频免费观看 | 在线观看视频亚洲 | 狠狠色狠狠色综合日日小说 | 中文字幕精品一区二区精品 | 在线免费色视频 | av在线8| 五月婷婷久久丁香 | 欧美日韩精品在线观看 | 精品国产一区二区三区不卡 | 亚洲国产成人在线播放 | 久久午夜精品影院一区 | 久草网免费 | 91精品秘密在线观看 | 婷婷5月激情5月 | 久久国产精品久久精品 | 欧美在线观看视频一区二区三区 | 99久久精品免费看国产四区 | 97成人精品 | 在线亚洲天堂网 | 日韩精品一区二区三区中文字幕 | 天堂av在线免费观看 | 国产成人精品av | 色综合久久88色综合天天人守婷 | 国产一级二级三级视频 | 一区二区电影在线观看 | 亚洲高清不卡av | 中文综合在线 | 啪啪av在线 | 国产超碰97 | 亚洲精品视频免费在线观看 | 麻花豆传媒mv在线观看 | 日韩网站一区 | 欧美精品v国产精品v日韩精品 | 超碰在线1| 国产亚洲字幕 | 中文视频一区二区 | 西西4444www大胆视频 | 精品久久一| 国产91在线免费视频 | 超碰最新网址 | 日韩在线视频在线观看 | 日韩欧在线 | 成人影音在线 | a黄色影院| 中文字幕久久精品亚洲乱码 | 国产91国语对白在线 | 二区三区在线视频 | 色综合久久久久综合体桃花网 | 久久亚洲私人国产精品 | 日韩深夜在线观看 | 日本婷婷色| 黄视频网站大全 | 日韩专区在线观看 | 亚洲午夜av | 成人一级在线 | 免费观看国产视频 | 久草在线久草在线2 | 亚洲天堂网在线观看视频 | 亚洲aⅴ一区二区三区 | 草樱av | 91麻豆免费版 | 天堂av在线网 | 日韩在线网| 国产精品成人免费精品自在线观看 | 久久乐九色婷婷综合色狠狠182 | 青青色影院 | 欧美日韩三区二区 | 在线免费亚洲 | 欧洲精品码一区二区三区免费看 | free,性欧美 九九交易行官网 | 在线观看亚洲a | 视频一区二区精品 | 日韩色一区二区三区 | 中文字幕在线观看一区 | 国产精品剧情在线亚洲 | 久久不射电影院 | 亚洲欧美视屏 | 99中文视频在线 | 欧洲精品码一区二区三区免费看 | 色99之美女主播在线视频 | 在线观看国产麻豆 | 伊人久久av | 午夜私人影院久久久久 | 欧美va天堂在线电影 | 天天操天天操天天操天天操天天操天天操 | 国产 欧美 在线 | 国产免费高清视频 | 久久激情婷婷 | 天天综合色 | 一区二精品 | www.久久精品视频 | 欧美日韩视频一区二区 | 久久高清视频免费 | 欧美夫妻性生活电影 | 成人午夜精品福利免费 | 在线精品视频免费播放 | 特片网久久 | 99久久99久国产黄毛片 | 日日夜夜精品免费观看 | 在线观看国产中文字幕 | 久久99国产精品久久99 | 国内精品久久久久影院男同志 | 国产精品高潮呻吟久久久久 | 亚洲成人av在线电影 | 国产精品成人av电影 | 国产精品123| 国产精品免费久久久久 | 免费成人在线网站 | 免费成人在线观看 | 亚洲精品一区二区精华 | 国产精品国产毛片 | 韩日电影在线 | 亚洲精品视频在线观看免费视频 | 天天干天天干天天干 | 超级碰碰碰免费视频 | 国内精品久久久久影院优 | 日韩免费观看高清 | 人成午夜视频 | 最近更新的中文字幕 | 亚洲国产操 | 亚洲经典视频在线观看 | www狠狠操 | 91精品一区在线观看 | 日本 在线 视频 中文 有码 | 在线观看精品一区 | 国产午夜精品理论片在线 | 日本不卡一区二区三区在线观看 | 涩涩资源网 | 国产录像在线观看 | 中文字幕人成不卡一区 | 免费又黄又爽视频 | 久久九九影院 | 伊人网综合在线观看 | 欧美热久久| 国产欧美日韩一区 | 美女视频黄免费的 | 久久久99国产精品免费 | www.超碰97.com | 久精品在线观看 | 亚洲精品av在线 | 久久艹99| 日韩大片在线免费观看 | 91麻豆精品一区二区三区 | 婷婷99| 国产精品去看片 | 精品久久1 | 亚洲精品美女免费 | 国产成人不卡 | 亚洲最新av网站 | 成人天堂网 | 精品一区电影 | 久久国语| 亚洲精品美女久久久 | 日本精品久久 | 综合色综合色 | 国产真实精品久久二三区 | 成年人视频在线免费观看 | 久久婷婷丁香 | 狠狠的操狠狠的干 | 日韩色视频在线观看 | 午夜精品视频一区 | 欧美日韩91 | 亚洲成人黄色在线 | 久久黄色网| 91人人爽久久涩噜噜噜 | 一区二区三区手机在线观看 | 亚洲成人影音 | 2018好看的中文在线观看 | 精品久久久久久亚洲综合网站 | 成人h视频在线 | 一本一本久久aa综合精品 | 亚洲乱亚洲乱亚洲 | 不卡中文字幕在线 | 中文字幕在线专区 | 黄色毛片观看 | 亚洲精品美女在线观看播放 | 亚洲午夜av久久乱码 | 免费久久网 | 国产高清小视频 | 欧美性黄网官网 | 国产精品福利小视频 | 91精品国产高清 | 国产一级免费视频 | 欧产日产国产69 | 欧美色噜噜噜 | 婷婷综合视频 | 欧美日韩国产色综合一二三四 | 亚洲一级片在线观看 | 最新免费中文字幕 | 中文字幕免费久久 | 日本久久精品 | 最新av网站在线观看 | 狠狠色狠狠综合久久 | 久久亚洲精品电影 | 91片黄在线观看动漫 | 国产在线最新 | 久久久www免费电影网 | 国产精品视频内 | 69精品视频| 综合国产视频 | 91cn国产在线 | 精品国产成人 | 亚洲闷骚少妇在线观看网站 | 日韩美女高潮 | 午夜精品一区二区三区免费 | 最新中文字幕 | 少妇搡bbb| 国产精彩视频一区 | 久久久久久久久黄色 | 中文字幕久久精品一区 | 麻豆传媒一区二区 | 欧美精品中文在线免费观看 | 99久久婷婷国产精品综合 | 久久久福利 | 91最新网址在线观看 | 成片人卡1卡2卡3手机免费看 | 午夜黄色 | 欧美精品一级视频 | 国产精品永久免费视频 | 亚州天堂 | 精品国产乱码久久久久久天美 | 黄色av网站在线观看 | 午夜aaaa | 国产成人av免费在线观看 | 日韩午夜在线观看 | 成人午夜性影院 | 欧美日韩在线观看一区 | 日韩欧美电影网 | 97在线视频免费观看 | 在线观看 国产 | 国产精品第72页 | 色99色| 麻豆激情电影 | 在线黄网站 | 午夜精品久久久久久久99 | www激情网| 丁香综合网 | 国产婷婷在线观看 | 有码中文在线 | 五月开心六月婷婷 | 91成人网在线 | 日韩av成人 | 91九色porny蝌蚪视频 | 久久久久久久久免费视频 | 国产又粗又长又硬免费视频 | 九色视频网 | 亚洲一区久久久 | 精品一区二区在线免费观看 | 天天干天天碰 | 国产精品久久久免费看 | 亚洲成av人影院 | 国产成人av在线影院 | 久久久99精品免费观看 | 中文av字幕在线观看 | 免费在线观看成年人视频 | 一级一级一片免费 | 国内精品小视频 | 麻豆视频一区 | 欧美成人影音 | 麻豆视频一区 | 久久精品亚洲一区二区三区观看模式 | 成人免费在线播放视频 | 国产精品福利在线播放 | 国产在线理论片 | 一级免费看 | 91视频啪| 91精品国产九九九久久久亚洲 | 91理论片午午伦夜理片久久 | 国产裸体视频bbbbb | 久久999精品 | 久久久久久久久毛片精品 | 青青河边草观看完整版高清 | 91精品一区二区三区蜜桃 | 欧美精品三级 | 日韩一区精品 | 狠狠gao | 成人综合日日夜夜 | 久久福利影视 | 天天操操操操操 | 国产精品视屏 | 91精品播放 | 婷婷丁香六月 | 深爱激情av | 九九久久国产 | 日韩在线观看小视频 | 黄色国产高清 | 最新av在线免费观看 | 国产精品2区 | 人人射网站 | 久久99国产精品久久99 | 亚洲精品99 | 国产午夜精品一区二区三区在线观看 | 麻豆久久久 | 国产精品2019 | 九九免费在线观看视频 | 亚洲精品久久久蜜臀下载官网 | 日韩大陆欧美高清视频区 | 精品国产一区二区三区日日嗨 | 精品亚洲一区二区三区 | 狠狠色丁香婷综合久久 | 国产91精品高清一区二区三区 | 欧美性久久久 | 久久国产露脸精品国产 | 亚洲丁香久久久 | 视频成人永久免费视频 | 麻豆国产在线视频 | 成人免费在线观看入口 | 午夜av电影院 | 久久久亚洲国产精品麻豆综合天堂 | 久久理伦片 | 在线免费观看视频一区二区三区 | 精品国产乱码久久久久久久 | 色九色| 亚洲一级二级三级 | 成人午夜片av在线看 | 五月天天色 | 狠狠狠色狠狠色综合 | 在线观看成人一级片 | 国产97在线观看 | 亚洲免费精品一区二区 | 天天插伊人 | 午夜三级福利 | 亚洲一区二区91 | 久草网视频在线观看 | 国产在线观看污片 | 久久手机在线视频 | 亚洲专区中文字幕 | 免费看一级黄色大全 | 欧美精品久久久久久久久久久 | 欧美一区二区伦理片 | 波多野结衣视频一区 | 久久人人爽人人爽人人片av免费 | 国产黄网在线 | 91片黄在线观看动漫 | 日本bbbb摸bbbb | 国产热re99久久6国产精品 | 色婷婷在线视频 | 欧美91精品 | 亚洲黄色av一区 | 91精品国产乱码久久桃 | 日日干日日 | 黄色a级片在线观看 | 亚洲欧美激情插 | 高清有码中文字幕 | 人成在线免费视频 | 人人模人人爽 | 97视频总站 | 在线看一级片 | 日韩专区中文字幕 | 日韩精品久久一区二区三区 | 一区二区三区在线播放 | 国产一区二区网址 | 天堂av网在线 | 日日干狠狠操 | 欧美日韩破处 | 亚洲狠狠婷婷综合久久久 | 色永久免费视频 | av网站在线观看播放 | 国产va在线 | 中文字幕免费一区二区 | 欧美日韩精品二区第二页 | 9999在线视频| www.97视频 | 国产精品 日韩 欧美 | 一区免费视频 | 国内久久久 | av电影在线免费观看 | 久久综合精品国产一区二区三区 | 一区二区三区在线不卡 | 在线免费观看黄色 | 午夜黄网 | 97免费 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久久精品国产一区二区 | 在线看av网址| 欧美激情xxxx性bbbb | 久久曰视频 | 友田真希x88av | 亚洲精品视频国产 | 亚洲成人免费在线观看 | 免费的黄色的网站 | 91激情 | 99av国产精品欲麻豆 | 免费电影一区二区三区 | 男女拍拍免费视频 | 美女网站视频久久 | 成人av在线一区二区 | 日韩高清黄色 | 国产99久久 | 99精品视频在线看 | 最近免费中文字幕mv在线视频3 | 欧美国产在线看 | 日韩免费区 | 久久精品伊人 | 亚洲九九精品 | 2019精品手机国产品在线 | 日韩国产精品久久 | 精品久久一区二区 | 这里只有精彩视频 | 亚洲精色| 狠狠躁夜夜躁人人爽超碰91 | 日韩欧美视频免费看 | 黄色在线观看www | 亚洲免费一级电影 | 久久久香蕉视频 | 免费在线观看日韩视频 | 黄色av网站在线观看免费 | 亚洲成人免费观看 | 国产精品99久久久久久有的能看 | 色天天 | 精品福利av | 免费在线看成人av | 处女av在线 | 久久天天躁夜夜躁狠狠85麻豆 | 亚洲片在线观看 | 成人黄色片在线播放 | 久久久久久久电影 | 国产精品精品国产婷婷这里av | 亚洲精品国偷拍自产在线观看蜜桃 | 天天av资源| 久久99国产精品免费 | 丁香婷婷深情五月亚洲 | 在线 视频 一区二区 | 一区二区三区手机在线观看 | 日韩免费在线观看视频 | 麻豆成人精品视频 | 五月天亚洲婷婷 | 天堂av最新网址 | 久久天堂精品视频 | 9色在线视频 | 欧美黄污视频 | 在线观看色网站 | 999国内精品永久免费视频 | 国产亚洲亚洲 | 丁香婷婷色综合亚洲电影 | 亚洲不卡av一区二区三区 | 亚洲免费黄色 | 色www免费视频| 亚洲第一中文网 | 天天干天天拍天天操天天拍 | 日韩一级电影在线 | 激情五月婷婷综合 | 日本在线观看一区 | 精品超碰| 久久都是精品 | 国产91精品一区二区绿帽 | 国产精品久久久久aaaa九色 | 日韩精品2区 | av中文字幕网站 | 国产无套视频 | 亚洲激情国产精品 | 91视频免费视频 | 麻豆你懂的 | 欧美日韩色婷婷 | 免费日韩视频 | 中文字幕在线一区观看 | 国产91亚洲精品 | 99久高清在线观看视频99精品热在线观看视频 | 九九久久久 | 深爱激情五月婷婷 | 91精品夜夜 | 亚洲 中文 在线 精品 | 国产黄影院色大全免费 | 成人一级在线观看 | 日韩一三区 | 亚洲精品 在线视频 | 91中文字幕视频 | 欧美在线不卡一区 | 91精品啪在线观看国产线免费 | 国产精品美女久久久久久久久久久 | 久久久18 | 99久久精品免费看国产免费软件 | 亚洲春色成人 | 日韩色在线 | 色a在线观看 | 97人人澡人人爽人人模亚洲 | 成人不用播放器 | 久热超碰 | 91九色视频 | 99久久精品国| av在线播放中文字幕 | 91精品一区二区三区蜜臀 | 亚洲电影图片小说 | www.久久久久| 91av视频播放 | 成人网在线免费视频 | 狠狠干.com | 在线观看久 | 在线91色 | 99久久精品免费看国产一区二区三区 | 福利视频一二区 | 99麻豆久久久国产精品免费 | 最近更新中文字幕 | 91网址在线观看 | 国产精品大全 | 69国产成人综合久久精品欧美 | 久热国产视频 | 久久久久久久久久网站 | 69视频在线播放 | 欧美激情va永久在线播放 | 色综合天天视频在线观看 | 欧美激情精品 | 射久久久 | 日韩动漫免费观看高清完整版在线观看 | 亚洲婷婷丁香 | 亚洲精品视 | 麻豆国产网站 | 日韩欧美精品一区二区三区经典 | 久久久久国产精品免费 | 国产黄色av| 92精品国产成人观看免费 | 日韩久久久久久久 | 亚洲午夜av久久乱码 | 最新国产福利 | 热99久久精品 | 国产一区二区在线观看免费 | 色婷婷亚洲婷婷 | 999成人| 久久精品香蕉视频 | 国产资源在线观看 | 黄色一及电影 | 97超碰色偷偷 | 婷婷久久丁香 | 一区二区av | 日韩在线观看 | 夜夜爽天天爽 | 久久精品系列 | 97精品伊人 | 最近中文字幕免费av | 久久久久久久久网站 | 日韩精品一区二区在线观看 | 天天插视频 | 国产一级精品绿帽视频 | 国产精品毛片久久久久久 | 人人插人人做 | 麻豆传媒视频在线免费观看 | 97色在线观看免费视频 | 97色婷婷成人综合在线观看 | 久久污视频 | 国产成人精品一区二区三区 | 人人草人 | 黄色免费电影网站 | 丁香花中文在线免费观看 | 中文字幕在线观看播放 | 免费av免费观看 | 久久国产精品影片 | 日本中文不卡 | 欧美色插 | 13日本xxxxxⅹxxx20| 亚洲成人精品av | 国产精品一区二区免费 | 成年人免费观看在线视频 | 日本激情视频中文字幕 | 欧美 日韩 性 | 亚洲一级性 | 亚洲韩国一区二区三区 | 国产人成精品一区二区三 | 亚洲精品91天天久久人人 | 午夜视频在线观看一区二区 | 精品久久久久久一区二区里番 | 超碰国产在线观看 | 亚洲va在线va天堂 | 婷婷丁香五 | a级免费观看 | 天天艹日日干 | 国产精品mm |