搜索
bottom↓
回复: 36

MPU6050作为从机地址设置的疑问

[复制链接]

出0入10汤圆

发表于 2014-5-11 11:48:41 | 显示全部楼层 |阅读模式
我知道I2C通讯的时候最低位地址是决定读写的,但是我看到有两组地址,一组是0x68和0x69,一组是0xd0和0xd1。我看见别人51的设置的是0xD0,但是看到数据手册又是0x68。


疑问1:究竟这两个地址那个是I2C从机地址?
疑问2:另一个地址究竟是什么?做什么用的?
新手上路,请大神多多指教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入10汤圆

 楼主| 发表于 2014-5-11 12:33:07 | 显示全部楼层
我知道了,Who_I_AM是只有7位的,是slave adress的高7位,哈哈,没有注意照顾细节

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-5-14 18:00:06 | 显示全部楼层
10xjzheng 发表于 2014-5-11 12:33
我知道了,Who_I_AM是只有7位的,是slave adress的高7位,哈哈,没有注意照顾细节
...

在下愚钝,0位和7位已经保留了而且默认为0.为啥他就是D0呢??想不通!一会我D0在写一下试试,我写68连ack都不返回,读全部是ff,晕的蛋疼!

出0入0汤圆

发表于 2014-5-14 18:42:37 | 显示全部楼层
固然,有反应了,我靠!虽然不知道为啥,呵呵!但是现在数据还不稳定!继续研究吧!

出0入0汤圆

发表于 2014-5-14 18:44:51 | 显示全部楼层
本帖最后由 jiang887786 于 2014-5-14 18:45 编辑

我想我的时序还是有问题,看看问题在哪吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入10汤圆

 楼主| 发表于 2014-5-14 19:39:15 | 显示全部楼层
jiang887786 发表于 2014-5-14 18:44
我想我的时序还是有问题,看看问题在哪吧!

我觉得懂I2C的原理就可以了,模拟时序我觉得可以不要亲自去做,或者做一两个就好,直接网上找程序,如果你想要程序的话,可以留言。QQ:934345073

出0入0汤圆

发表于 2014-5-15 10:01:38 | 显示全部楼层
10xjzheng 发表于 2014-5-14 19:39
我觉得懂I2C的原理就可以了,模拟时序我觉得可以不要亲自去做,或者做一两个就好,直接网上找程序,如果 ...

谢谢,我是飞思卡尔的单片机,你的代码我可能不好用,我发现是红色部分的问题,我修改了读字节的部分,写字节的根本没动!现在连ACK都没有返回了。不知道问题在哪了!我擦!
  1. /** ###################################################################
  2. **     Filename  : XD256_MPU6050_TEST.c
  3. **     Project   : XD256_MPU6050_TEST
  4. **     Processor : MC9S12XD256BCPV
  5. **     Version   : Driver 01.14
  6. **     Compiler  : CodeWarrior HCS12X C Compiler
  7. **     Date/Time : 2014-5-12, 17:25
  8. **     Abstract  :
  9. **         Main module.
  10. **         This module contains user's application code.
  11. **     Settings  :
  12. **     Contents  :
  13. **         No public methods
  14. **
  15. ** ###################################################################*/
  16. /* MODULE XD256_MPU6050_TEST */

  17. /* Including needed modules to compile this module/procedure */
  18. #include "Cpu.h"
  19. #include "Events.h"
  20. /* Include shared modules, which are used for whole project */
  21. #include "PE_Types.h"
  22. #include "PE_Error.h"
  23. #include "PE_Const.h"
  24. #include "IO_Map.h"  
  25. #include "MPU6050.h"

  26. /* User includes (#include below this line is not maintained by Processor Expert) */

  27. #define SCL PTJ_PTJ7
  28. #define SDA PTJ_PTJ6
  29. #define SCL_dir DDRJ_DDRJ7
  30. #define SDA_dir DDRJ_DDRJ6

  31. #define somenop(); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");\
  32.                    asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");\
  33.                    asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");\
  34.                    asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");

  35. /****************************************/
  36. // 定义MPU6050内部地址
  37. //****************************************/
  38. #define        SMPLRT_DIV                0x19        //陀螺仪采样率,典型值:0x07(125Hz)
  39. #define        CONFIG                          0x1A        //低通滤波频率,典型值:0x06(5Hz)
  40. #define        GYRO_CONFIG                0x1B        //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
  41. #define        ACCEL_CONFIG        0x1C        //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
  42. #define        ACCEL_XOUT_H        0x3B
  43. #define        ACCEL_XOUT_L        0x3C
  44. #define        ACCEL_YOUT_H        0x3D
  45. #define        ACCEL_YOUT_L        0x3E
  46. #define        ACCEL_ZOUT_H        0x3F
  47. #define        ACCEL_ZOUT_L        0x40
  48. #define        TEMP_OUT_H                0x41
  49. #define        TEMP_OUT_L                0x42
  50. #define        GYRO_XOUT_H                0x43
  51. #define        GYRO_XOUT_L                0x44       
  52. #define        GYRO_YOUT_H                0x45
  53. #define        GYRO_YOUT_L                0x46
  54. #define        GYRO_ZOUT_H                0x47
  55. #define        GYRO_ZOUT_L                0x48
  56. #define        PWR_MGMT_1                0x6B        //电源管理,典型值:0x00(正常启用)
  57. #define        WHO_AM_I                        0x75        //IIC地址寄存器(默认数值0x68,只读)
  58. #define        SlaveAddress        0xd0        //IIC写入时的地址字节数据,+1为读取

  59. int        Temperature,Temp_h,Temp_l;        //温度及高低位数据
  60. unsigned int ACCEL_XOUT,ACCEL_YOUT,ACCEL_ZOUT,GYRO_XOUT,GYRO_YOUT,GYRO_ZOUT;
  61. //****************************************
  62. //函数声明
  63. //****************************************
  64. //MPU6050操作函数
  65. void  InitMPU6050();                                                                                                        //初始化MPU6050



  66. /*************************************************************/
  67. /*                        初始化IIC                          */
  68. /*************************************************************/
  69. void INIT_IIC(void)
  70. {

  71. SCL_dir = 1;
  72. SCL_dir = 1;
  73. SCL = 1;
  74. SDA = 1;
  75. }

  76. /*************************************************************/
  77. /*                         启动IIC                           */
  78. /*************************************************************/
  79. void I2Cstart(void)
  80. {
  81.   SCL_dir = 1;
  82.   SDA_dir = 1;
  83.   SDA = 1;
  84.   somenop();
  85.   SCL = 1;
  86.   somenop();
  87.   somenop();
  88.   SDA = 0;
  89.   somenop();
  90.   somenop();
  91.   SCL = 0;
  92. }

  93. /*************************************************************/
  94. /*                       IIC发送数据                         */
  95. /*************************************************************/
  96. void I2Csend(byte data)
  97. {
  98. unsigned char i=8;
  99. SCL_dir = 1;
  100. SDA_dir = 1;
  101. while(i)
  102. {
  103.       SCL = 0;  
  104.       somenop();
  105.       SDA=(data&0x80)>>7;
  106.       data<<=1;
  107.       somenop();
  108.       SCL = 1;
  109.       somenop();
  110.       somenop();
  111.       i--;     
  112. }
  113. SCL = 0;
  114. SDA_dir = 0;
  115. }

  116. /*************************************************************/
  117. /*                       IIC接收数据                         */
  118. /*************************************************************/
  119. unsigned char I2Creceive(void)
  120. {
  121. unsigned char i=8;
  122. unsigned char data=0;

  123. SCL_dir = 1;
  124. SDA_dir = 0;
  125. while(i)
  126. {
  127.       SCL = 0;  
  128.       somenop();
  129.       somenop();
  130.       SCL = 1;
  131.       somenop();
  132.       data<<=1;
  133.       data|=SDA;
  134.       somenop();
  135.       i--;     
  136. }
  137. SCL = 0;
  138. return(data);
  139. }

  140. /*************************************************************/
  141. /*                      IIC读取应答位                        */
  142. /*************************************************************/
  143. byte I2Creadack(void)
  144. {
  145.   unsigned int i=0;
  146.   SCL_dir = 1;
  147.   SDA_dir = 0;
  148.   SCL = 0;
  149.   somenop();
  150.   somenop();
  151.   SCL = 1;
  152.   somenop();
  153.   if(SDA == 1)
  154.   {
  155.   for(;;) if(++i>=20000)
  156.   return 0xff;}
  157.   somenop();
  158.   SCL = 0;
  159.   somenop();
  160.   somenop();
  161.   return 0;
  162. }

  163. /*************************************************************/
  164. /*                      IIC发送应答位                        */
  165. /*************************************************************/
  166. void I2Csendack(void)
  167. {
  168.   SCL_dir = 1;
  169.   SDA_dir = 1;
  170.   SCL = 0;
  171.   somenop();
  172.   SDA = 0;
  173.   somenop();
  174.   SCL = 1;
  175.   somenop();
  176.   somenop();
  177.   SCL = 0;
  178.   somenop();
  179.   somenop();
  180. }

  181. /*************************************************************/
  182. /*                         停止IIC                           */
  183. /*************************************************************/
  184. void I2Cstop(void)
  185. {
  186.   SCL = 0;
  187.   SDA = 0;
  188.   SCL_dir = 1;
  189.   SDA_dir = 1;
  190.   SCL = 0;
  191.   SDA = 0;
  192.   somenop();
  193.   somenop();
  194.   SCL = 1;
  195.   somenop();
  196.   SDA = 1;
  197.   somenop();
  198.   somenop();
  199.   SCL_dir = 0;
  200.   SDA_dir = 0;
  201. }
  202. //**************************************
  203. //向I2C设备写入一个字节数据
  204. //**************************************
  205. byte Single_WriteI2C(byte address,byte REG,byte value){
  206.   I2Cstart();//启动总线开始发送数据
  207.   I2Csend(address) ;//发送要接受数据的器件地址
  208.     if (I2Creadack())
  209.   return 0xff;    //读取应答码
  210.   I2Csend(REG) ;//发送要写入寄存器的地址
  211.     if (I2Creadack())
  212.   return 0xff;    //读取应答码
  213.   I2Csend(value) ; //发送要写入寄存器的参数值
  214.     if (I2Creadack())
  215.   return 0xff;    //读取应答码
  216.   I2Cstop();
  217.   return 0;

  218. }
  219. //**************************************
  220. //向I2C设备读取一个字节数据
  221. //**************************************
  222. byte Single_ReadI2C(byte address,byte REG){
  223. byte value;
  224.   I2Cstart();//启动总线开始发送数据
  225.   I2Csend(address) ;//发送要接受数据的器件地址
  226.     if (I2Creadack())
  227.   return 0xff;    //读取应答码
  228.   I2Csend(REG) ;//发送要写入寄存器的地址
  229.     if (I2Creadack())
  230.   I2Cstart();//启动总线开始发送数据
  231.   I2Csend(address+1) ;//发送要接受数据的器件地址
  232.     if (I2Creadack())     
  233.   return 0xff;    //读取应答码
  234. value=I2Creceive() ; //发送要写入寄存器的参数值
  235.   I2Cstop();
  236.   return value;

  237. }

  238. //初始化MPU6050
  239. //**************************************
  240. void InitMPU6050()
  241. {
  242.         Single_WriteI2C(SlaveAddress,PWR_MGMT_1, 0x00);        //解除休眠状态
  243.         Single_WriteI2C(SlaveAddress,SMPLRT_DIV, 0x07);
  244.         Single_WriteI2C(SlaveAddress,CONFIG, 0x06);
  245.         Single_WriteI2C(SlaveAddress,GYRO_CONFIG, 0x18);
  246.         Single_WriteI2C(SlaveAddress,ACCEL_CONFIG, 0x01);
  247. }


  248. //**************************************
  249. //合成数据
  250. //**************************************
  251. int GetData(unsigned char REG_Address)
  252. {
  253. volatile unsigned        int H,L;
  254.         H=Single_ReadI2C(SlaveAddress,REG_Address);
  255.         L=Single_ReadI2C(SlaveAddress,REG_Address+1);
  256.         return H=(H<<8)|L;   //合成数据
  257. }


  258. void main(void)
  259. {
  260.   /* Write your local variable definition here */

  261.   /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  262.   PE_low_level_init();
  263.   /*** End of Processor Expert internal initialization.                    ***/

  264.   /* Write your code here */
  265.   INIT_IIC()  ;
  266.    InitMPU6050();
  267.    
  268.    for(;;){
  269.     ACCEL_XOUT=GetData(ACCEL_XOUT_H);        //显示X轴加速度
  270.                 ACCEL_YOUT=GetData(ACCEL_YOUT_H);        //显示Y轴加速度
  271.                 ACCEL_ZOUT=GetData(ACCEL_ZOUT_H);        //显示Z轴加速度
  272.                 GYRO_XOUT=GetData(GYRO_XOUT_H);        //显示X轴角速度
  273.                 GYRO_YOUT=GetData(GYRO_YOUT_H);        //显示Y轴角速度
  274.                 GYRO_ZOUT=GetData(GYRO_ZOUT_H);        //显示Z轴角速度
  275.    
  276.    }
  277.   /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
  278.   for(;;){}
  279.   /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
  280. } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

  281. /* END XD256_MPU6050_TEST */
  282. /*
  283. ** ###################################################################
  284. **
  285. **     This file was created by Processor Expert 3.02 [04.44]
  286. **     for the Freescale HCS12X series of microcontrollers.
  287. **
  288. ** ###################################################################
  289. */
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入10汤圆

 楼主| 发表于 2014-5-15 11:58:47 | 显示全部楼层
jiang887786 发表于 2014-5-15 10:01
谢谢,我是飞思卡尔的单片机,你的代码我可能不好用,我发现是红色部分的问题,我修改了读字节的部分,写 ...

不好意思啊,I2C没有什么调试经验,我就只是卡在地址那里,你自己找下。

出0入0汤圆

发表于 2014-5-15 15:06:23 | 显示全部楼层
10xjzheng 发表于 2014-5-15 11:58
不好意思啊,I2C没有什么调试经验,我就只是卡在地址那里,你自己找下。 ...

请问你的是51的代码吗?方便的话发我邮箱一份吧,我想拿51先调一下试试吧,纠结的快不行了,2091881672@qq。com。谢谢! STM32103我也有单片机,但是不知道什么编译器还不了解呢现在!

出0入0汤圆

发表于 2014-5-15 16:58:27 | 显示全部楼层
疑惑了好几天的问题终于解决了,感谢楼主啊

出0入0汤圆

发表于 2014-6-9 09:43:43 | 显示全部楼层
一直存在的疑问终于解决了,谢谢楼主的分享!

出0入10汤圆

 楼主| 发表于 2014-6-9 10:00:36 | 显示全部楼层
liushenyoko 发表于 2014-6-9 09:43
一直存在的疑问终于解决了,谢谢楼主的分享!

不谢,我就知道终有一天会发生这样的场景,一起来为论坛做点贡献哈!!

出0入10汤圆

 楼主| 发表于 2014-6-9 10:10:24 | 显示全部楼层
jiang887786 发表于 2014-5-15 15:06
请问你的是51的代码吗?方便的话发我邮箱一份吧,我想拿51先调一下试试吧,纠结的快不行了,2091881672@q ...

你上面的那张图片是什么来着?程序再这里,51的I2C读取MPU6050数据,通过液晶输出取MPU6050数据,通过1602液晶输出:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-6-9 10:28:05 | 显示全部楼层
10xjzheng 发表于 2014-6-9 10:10
你上面的那张图片是什么来着?程序再这里,51的I2C读取MPU6050数据,通过液晶输出取MPU6050数据,通过160 ...

逻辑分析仪,公司买的,搞这些东西可以存储时序,看看一目了然,我们这行的必备利器!哈哈!谢谢,哥们

出0入10汤圆

 楼主| 发表于 2014-6-9 14:45:09 | 显示全部楼层
jiang887786 发表于 2014-6-9 10:28
逻辑分析仪,公司买的,搞这些东西可以存储时序,看看一目了然,我们这行的必备利器!哈哈!谢谢,哥们{: ...

很厉害的样子!!估计很贵吧

出0入0汤圆

发表于 2014-6-9 14:48:00 | 显示全部楼层
不贵啊,莫大这边就有300多元吧,上次我调试DS1302就是用它看出时序有些不对,提前几个空操作,结果就有数据出来了,利器!把数据上升沿提前一点点...

出0入0汤圆

发表于 2014-6-21 20:27:34 | 显示全部楼层

出0入0汤圆

发表于 2014-6-25 14:51:56 | 显示全部楼层
大神,请问一下,我的6050读出来的数据不变怎么回事啊?

出0入0汤圆

发表于 2014-8-19 21:01:14 | 显示全部楼层
自己弄的程序 IIC总线通了,因为仿真看,给寄存器写数据,在读数据能正常读出,但是算其他参数的时候,MPU6050不动的情况下,数据在变,如图Gyro_y的值程序打断点运行时看数据,有时候会出现其他数据!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-8-28 00:26:12 | 显示全部楼层
不错 .......

出0入0汤圆

发表于 2014-9-24 11:04:09 | 显示全部楼层
这里表述的不太好。应该说:当AD0 为逻辑低电平,从机地址为b1101000(0x68);当AD0 为逻辑ym 电平,从机地址为b1101001(0x69)。
AD0与WHO_AM_I的bit1有关,而与bit0无关。8位从机地址的最高位都为0。

可以近似认为bit0决定的是读或写操作(即认为读写的地址不一样。因为根据手册的协议,地址只有7位,而最后一位决定的是读或者写。).

出0入0汤圆

发表于 2014-9-24 14:16:39 | 显示全部楼层
请问楼主 ,这个宏定义有什么使用吗?           #define        WHO_AM_I                0x75

出0入10汤圆

 楼主| 发表于 2014-9-24 18:26:44 | 显示全部楼层
who与争锋 发表于 2014-9-24 14:16
请问楼主 ,这个宏定义有什么使用吗?           #define        WHO_AM_I                0x75

可能是验证你读取寄存器对不对吧,我不大清楚

出0入0汤圆

发表于 2014-9-25 09:37:10 | 显示全部楼层
10xjzheng 发表于 2014-9-24 18:26
可能是验证你读取寄存器对不对吧,我不大清楚

1,程序里好像都没用到
2,上面也说默认是0x68.
所以有点奇怪了。。。

出0入10汤圆

 楼主| 发表于 2014-9-25 09:58:29 | 显示全部楼层
who与争锋 发表于 2014-9-25 09:37
1,程序里好像都没用到
2,上面也说默认是0x68.
所以有点奇怪了。。。

今天才知道,那个是7位+1位构成I2C地址

出0入0汤圆

发表于 2014-9-25 10:30:45 | 显示全部楼层
本帖最后由 who与争锋 于 2014-9-25 10:40 编辑
10xjzheng 发表于 2014-9-25 09:58
今天才知道,那个是7位+1位构成I2C地址


I2C地址是(根据手册的定义):  bit7~bit1(这里是7位 bit1的取值根据AD0来确定)。bit0位不用。

根据手册,这里IIC地址只有7位的。当有用到IIC地址时,这7位放在前面 ,最后再补一位(读为1,写为0)。 于是,构成8位,即:地址+读 或者 地址+写。

#define        WHO_AM_I                0x75  
也许寄存器的地址是0x75吧,和IIC地址没关系?

出0入10汤圆

 楼主| 发表于 2014-9-25 13:11:55 | 显示全部楼层
who与争锋 发表于 2014-9-25 10:30
I2C地址是(根据手册的定义):  bit7~bit1(这里是7位 bit1的取值根据AD0来确定)。bit0位不用。

根据手册 ...

我觉得是官方的数据手册搞错了

出0入0汤圆

发表于 2014-9-26 10:28:29 | 显示全部楼层
10xjzheng 发表于 2014-9-25 13:11
我觉得是官方的数据手册搞错了

没错啊。当AD0接地时,地址0XD0是读的地址,0XD1是写的地址。是把读写融合到地址里了。

出0入0汤圆

发表于 2014-10-7 13:00:19 | 显示全部楼层
茅塞顿开!

出0入0汤圆

发表于 2014-10-7 13:08:32 | 显示全部楼层
学习了,虽然不善编程

出0入0汤圆

发表于 2015-4-23 09:38:04 | 显示全部楼层
顶起,同24C02,EEPROM的固定地址为1101 再加三位从机地址*** 再加R/W地址,共构成一个8位地址

出0入0汤圆

发表于 2015-4-27 11:37:12 | 显示全部楼层
10xjzheng 发表于 2014-5-11 12:33
我知道了,Who_I_AM是只有7位的,是slave adress的高7位,哈哈,没有注意照顾细节
...

楼主正解,

出0入0汤圆

发表于 2015-7-10 21:50:33 | 显示全部楼层
本帖最后由 王晨 于 2015-7-10 23:05 编辑

谢谢楼主,但是还是不知道OXD0是怎么来的呀?  0XD0=1101 0000,但是bit7默认为0呀 ,bit6~bit0为1101 00,地址应该是0 1110100 +最低位呀,,

出0入0汤圆

发表于 2015-7-10 23:26:46 | 显示全部楼层
jiang887786 发表于 2014-5-14 18:00
在下愚钝,0位和7位已经保留了而且默认为0.为啥他就是D0呢??想不通!一会我D0在写一下试试,我写68连ac ...

知道为什么是D0了吗,我也想不通呀

出0入0汤圆

发表于 2015-7-11 18:03:06 | 显示全部楼层
王晨 发表于 2015-7-10 23:26
知道为什么是D0了吗,我也想不通呀

当时想通了,现在又忘记了,不好意思,一年多没玩了,

出0入0汤圆

发表于 2015-10-25 00:43:51 | 显示全部楼层
王晨 发表于 2015-7-10 23:26
知道为什么是D0了吗,我也想不通呀

D0在硬件引脚引出了,可以通过接地和接VCC来得到两个不同的地址。

出0入0汤圆

发表于 2018-12-20 11:36:57 | 显示全部楼层
多谢楼主
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 17:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表