久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1941|回復: 0
打印 上一主題 下一主題
收起左側

STM32通過IIC協(xié)議使用MPU6050源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:640768 發(fā)表于 2021-8-6 10:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /********************************************

  2. * 硬件連接:-----------------
  3. *          |                 |
  4. *          |  PB6-I2C1_SCL                |
  5. *          |  PB7-I2C1_SDA   |
  6. *          |                 |
  7. *           -----------------
  8. * 庫版本  :ST3.5.0
  9. * 作者    : Orange
  10. **********************************************************************************/
  11. #include "I2C_MPU6050.h"

  12. /*
  13. * 函數(shù)名:I2C_GPIO_Config
  14. * 描述  :I2C1 I/O配置
  15. * 輸入  :無
  16. * 輸出  :無
  17. * 調(diào)用  :內(nèi)部調(diào)用
  18. */
  19. static void I2C_GPIO_Config(void)
  20. {
  21.         GPIO_InitTypeDef GPIO_InitStructure;
  22.         
  23.                 /* 使能與 I2C1 有關的時鐘 */
  24.         RCC_APB2PeriphClockCmd  (RCC_APB2Periph_GPIOB,ENABLE );
  25.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);  

  26.          /* PB6-I2C1_SCL、PB7-I2C1_SDA*/
  27.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  28.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  29.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
  30.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  31. }


  32. /*
  33. * 函數(shù)名:I2C_Mode_Config
  34. * 描述  :I2C 工作模式配置
  35. * 輸入  :無
  36. * 輸出  :無
  37. * 調(diào)用  :內(nèi)部調(diào)用
  38. */
  39. static void I2C_Mode_Config(void)
  40. {
  41.          /* Initialize the I2C1 according to the I2C_InitStructure members */
  42.         I2C_InitTypeDef I2C_InitStructure;
  43.          
  44.           /* I2C 配置 */
  45.         I2C_InitStructure.I2C_Mode = I2C_Mode_I2C ;
  46.         //I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  47.         //I2C_InitStructure.I2C_OwnAddress1 = SlaveAddress;
  48.         I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  49.         I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  50.         I2C_InitStructure.I2C_ClockSpeed = 50000;


  51.         /* I2C1 初始化 */
  52.         I2C_Init(I2C1, &I2C_InitStructure);           
  53.         
  54.         /* 使能 I2C1 */
  55.         I2C_Cmd  (I2C1,ENABLE);
  56.         /*允許應答模式*/
  57.         I2C_AcknowledgeConfig(I2C1, ENABLE);   
  58. }
  59. /***************************************************************************************/
  60. /*
  61. * 函數(shù)名:I2C_MMA_Init
  62. * 描述  :I2C 外設(MMA7455)初始化
  63. * 輸入  :無
  64. * 輸出  :無
  65. * 調(diào)用  :外部調(diào)用
  66. */
  67. void I2C_MPU6050_Init(void)
  68. {           
  69.          I2C_GPIO_Config();
  70.         I2C_Mode_Config();
  71. }  

  72. /*
  73. * 函數(shù)名:I2C_ByteWrite
  74. * 描述  :寫一個字節(jié)到I2C設備寄存器中
  75. * 輸入  :REG_Address 接收數(shù)據(jù)的IIC設備寄存器的地址
  76. *         REG_data 待寫入的數(shù)據(jù)
  77. * 輸出  :無
  78. * 返回  :無
  79. * 調(diào)用  :內(nèi)部調(diào)用
  80. */        
  81. void I2C_ByteWrite(uint8_t REG_Address,uint8_t REG_data)
  82. {

  83. I2C_GenerateSTART(I2C1,ENABLE);

  84. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

  85. I2C_Send7bitAddress(I2C1,SlaveAddress,I2C_Direction_Transmitter);

  86. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

  87. I2C_SendData(I2C1,REG_Address);

  88. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  89. I2C_SendData(I2C1,REG_data);

  90. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  91. I2C_GenerateSTOP(I2C1,ENABLE);

  92. }


  93. /*
  94. * 函數(shù)名:I2C_ByteRead
  95. * 描述  :從IIC設備寄存器中讀取一個字節(jié)
  96. * 輸入  :REG_Address 讀取數(shù)據(jù)的寄存器的地址
  97. * 輸出  :無
  98. * 返回  :無
  99. * 調(diào)用  :內(nèi)部調(diào)用
  100. */
  101. uint8_t I2C_ByteRead(uint8_t REG_Address)
  102. {
  103. uint8_t REG_data;

  104. while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY));

  105. I2C_GenerateSTART(I2C1,ENABLE);//起始信號

  106. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

  107. I2C_Send7bitAddress(I2C1,SlaveAddress,I2C_Direction_Transmitter);//發(fā)送設備地址+寫信號

  108. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//

  109. I2C_Cmd(I2C1,ENABLE);

  110. I2C_SendData(I2C1,REG_Address);//發(fā)送存儲單元地址,從0開始

  111. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  112. I2C_GenerateSTART(I2C1,ENABLE);//起始信號

  113. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

  114. I2C_Send7bitAddress(I2C1,SlaveAddress,I2C_Direction_Receiver);//發(fā)送設備地址+讀信號

  115. while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));

  116. I2C_AcknowledgeConfig(I2C1,DISABLE);

  117. I2C_GenerateSTOP(I2C1,ENABLE);

  118. while(!(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED)));

  119. REG_data=I2C_ReceiveData(I2C1);//讀出寄存器數(shù)據(jù)

  120. return REG_data;

  121. }

  122. /*
  123. * 函數(shù)名:void InitMPU6050(void)
  124. * 描述  :初始化Mpu6050
  125. * 輸入  :無
  126. * 輸出  :無
  127. * 調(diào)用  :外部調(diào)用
  128. */
  129. void InitMPU6050(void)
  130. {
  131.         I2C_ByteWrite(PWR_MGMT_1,0x00);//解除休眠狀態(tài)
  132.         I2C_ByteWrite(SMPLRT_DIV,0x07);
  133.         I2C_ByteWrite(CONFIG,0x06);
  134.         I2C_ByteWrite(GYRO_CONFIG,0x18);
  135.         I2C_ByteWrite(ACCEL_CONFIG,0x01);

  136. }


  137. /*
  138. * 函數(shù)名:GetData
  139. * 描述  :獲得16位數(shù)據(jù)
  140. * 輸入  :REG_Address 寄存器地址
  141. * 輸出  :返回寄存器數(shù)據(jù)
  142. * 調(diào)用  :外部調(diào)用
  143. */

  144. unsigned int GetData(unsigned char REG_Address)
  145. {
  146.         char H,L;
  147.         H=I2C_ByteRead(REG_Address);
  148.         L=I2C_ByteRead(REG_Address+1);
  149.         return (H<<8)+L;   //合成數(shù)據(jù)
  150. }
復制代碼

初學電子,如有錯誤,請大家多多指導,資料僅供參考: MPU6050(硬件IIC).zip (294.78 KB, 下載次數(shù): 26)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩淫片免费看 | 国产日韩一区二区三免费高清 | 久久久www成人免费精品 | 日韩三级电影一区二区 | 天天精品综合 | 日本久草 | 影视先锋av资源噜噜 | 久久久精彩视频 | h免费观看 | 欧洲在线视频 | 最新伦理片 | 伊人免费视频二 | 国产人免费人成免费视频 | 欧美网站一区二区 | 精品久久精品 | 在线视频一区二区 | 亚洲欧美一区二区三区在线 | 玖草资源| 欧美日韩电影一区 | 日韩av在线免费 | 国产情侣激情 | 婷婷成人在线 | 天天躁天天操 | www日韩高清 | 国产探花在线精品一区二区 | 色综合av| 国产美女一区二区 | 亚洲精品一区在线 | 毛片网站在线观看 | 欧美国产视频 | 国产2区| 日韩欧美专区 | 国产无套一区二区三区久久 | 久久国内 | a级片网站 | 99re在线视频精品 | 亚洲一一在线 | 日本超碰 | 成人在线视频一区 | h肉视频| 亚洲国产成人精品久久 |