找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2224|回复: 2
打印 上一主题 下一主题
收起左侧

nrf51822的MPU6050驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:377992 发表于 2018-12-11 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
nrf51822源程序如下:
  1. /****************************************Copyright (c)****************************************************
  2. **                                       
  3. **                                 
  4. **
  5. **--------------File Info---------------------------------------------------------------------------------
  6. ** File name:                             main.c
  7. ** Last modified Date:      
  8. ** Last Version:                  
  9. ** Descriptions:                   使用的SDK版本-SDK_12.0.0
  10. **                               
  11. **--------------------------------------------------------------------------------------------------------
  12. ** Created by:                        青风电子
  13. ** Descriptions:                MPU6050原始数据读取实验
  14. **--------------------------------------------------------------------------------------------------------*/
  15. #include <stdbool.h>
  16. #include <stdint.h>
  17. #include <stdio.h>
  18. #include "app_uart.h"
  19. #include "app_error.h"
  20. #include "nrf_delay.h"
  21. #include "nrf_gpio.h"
  22. #include "boards.h"
  23. #include "mpu6050.h"
  24. #include "twi_master.h"


  25. /* 开发板中MPU6050模块和串口占用的nRF52832管脚资源
  26. P0.06:UART_TXD   :串口发送
  27. P0.08:UART_RXD   :串口接收
  28. P0.07:UART_CTS   : 未使用流控
  29. P0.05:UART_RTS   : 未使用流控

  30. 串口需要短接对应的跳线帽

  31. P0.22:IIC时钟
  32. P0.23:IIC数据
  33. */

  34. #define UART_TX_BUF_SIZE 256                         /**< UART TX buffer size. */
  35. #define UART_RX_BUF_SIZE 1                           /**< UART RX buffer size. */


  36. void uart_error_handle(app_uart_evt_t * p_event)
  37. {
  38.     if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
  39.     {
  40.         APP_ERROR_HANDLER(p_event->data.error_communication);
  41.     }
  42.     else if (p_event->evt_type == APP_UART_FIFO_ERROR)
  43.     {
  44.         APP_ERROR_HANDLER(p_event->data.error_code);
  45.     }
  46. }

  47. /*******************************************************************************
  48. * 描  述 : 串口初始化。波特率115200bps,流控关闭
  49. * 参  数 : 无
  50. * 返回值 : 无
  51. ******************************************************************************/
  52. void uart_config(void)
  53. {
  54.     uint32_t err_code;
  55.        
  56.     const app_uart_comm_params_t comm_params =
  57.     {
  58.           RX_PIN_NUMBER,
  59.           TX_PIN_NUMBER,
  60.           RTS_PIN_NUMBER,
  61.           CTS_PIN_NUMBER,
  62.           APP_UART_FLOW_CONTROL_DISABLED,    //关闭流控
  63.           false,
  64.           UART_BAUDRATE_BAUDRATE_Baud115200  //波特率设置为115200bps
  65.     };

  66.     APP_UART_FIFO_INIT(&comm_params,
  67.                          UART_RX_BUF_SIZE,
  68.                          UART_TX_BUF_SIZE,
  69.                          uart_error_handle,
  70.                          APP_IRQ_PRIORITY_LOW,
  71.                          err_code);

  72.     APP_ERROR_CHECK(err_code);
  73. }
  74. /**********************************************************************************************
  75. * 描  述 : main函数
  76. * 入  参 : 无
  77. * 返回值 : 无
  78. ***********************************************************************************************/
  79. int main(void)
  80. {
  81.     int16_t AccValue[3],GyroValue[3];
  82.           uint8_t id;
  83.        
  84.           nrf_gpio_cfg_output(LED_1);//配置管脚P0.17为输出,驱动指示灯D1
  85.     nrf_gpio_pin_set(LED_1);   //设置指示灯D1初始状态为熄灭
  86.        
  87.     uart_config();  //配置串口,禁止流控,波特率:115200       
  88.                
  89.                 twi_master_init();
  90.        
  91.           nrf_delay_ms(2000);
  92.        
  93.           while(mpu6050_init(0x68) == false)
  94.                 {
  95.                                 printf("mpu6050 init fail\r\n");
  96.                                 nrf_delay_ms(500);
  97.                 }

  98.                 printf("mpu6050 init ok\r\n");
  99.     mpu6050_register_read(0x75U, &id, 1);
  100.                 printf("mpu6050 id is %d \r\n",id);

  101.     while (true)
  102.     {
  103.                           MPU6050_ReadAcc( &AccValue[0], &AccValue[1] , &AccValue[2] );
  104.                     MPU6050_ReadGyro(&GyroValue[0] , &GyroValue[1] , &GyroValue[2] );
  105.                        
  106.                           printf("ACC:  %d        %d        %d        ",AccValue[0],AccValue[1],AccValue[2]);
  107.                     printf("GYRO: %d        %d        %d        \r\n",GyroValue[0],GyroValue[1],GyroValue[2]);
  108.                           nrf_delay_ms(500);
  109.     }
  110. }
  111. /********************************************END FILE*******************************************/
复制代码

所有资料51hei提供下载:
mpu6050驱动.rar (602.6 KB, 下载次数: 22)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:107741 发表于 2019-8-9 13:26 | 只看该作者
非常感谢
回复

使用道具 举报

板凳
ID:107741 发表于 2019-8-9 13:26 | 只看该作者
非常感谢你的慷慨指导
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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