智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1028|回复: 1
打印 上一主题 下一主题

[软件类] 求助 maa8451数字加速度计如何读取z轴数据 已有蓝宙一段代码 可是不懂怎么用.

[复制链接]

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
威望
234
贡献
125
兑换币
141
注册时间
2016-3-28
在线时间
45 小时
毕业学校
啦啦啦啦
跳转到指定楼层
1#
发表于 2016-4-2 13:28:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发表于 3 分钟前 | 只看该作者


//==========MMA8451 寄存器地址==================//
#define MMA8451_DSR   0x00   // Data Status Register
#define MMA8451_XOUT  0x01   // 14-bit output value X
#define MMA8451_YOUT  0x03   // 14-bit output value Y
#define MMA8451_ZOUT  0x05   // 14-bit output value Z
#define MMA8451_CFG   0x0E   //  XYZ_DATA_CFG Register   [1:0]scale value range
#define MMA8451_SR    0x29   // Auto-Wake/Sleep and
#define MMA8451_CR1   0x2A   // System Control 1 Registe
//[5:3]bits select the Output Data Rate (ODR) for acceleration samples

//=========MMA8451 功能参数==================//
#define MMA8451_MODE    0x11     // DR = 50 Hz  F_READ=0   ACTIVE=1
#define MMA8451_SCAL    0x00    // 0x00 2g   0x01  4g   0x10  8g
#define MMA8451_WADDR   0X38    //write address   [7:1]=0x1c   [0]=0   [7:0]=0x38
#define MMA8451_RADDR   0X39    //read address    [7:1]=0x1c   [0]=1    [7:0]=0x39

下面这个函数该如何用  求助
uint8_t IIC_MMA8451_ReadAddr(uint8_t slave_add, uint8_t Addr, uint8_t *rece_data, uint16_t n)
{
  uint8_t receive_da,check;
  uint16_t i=0;
  uint8_t *rece_data_buff ;
  rece_data_buff = rece_data ;

  IIC_MMA8451_Start();                                       //ST
  IIC_MMA8451_SendByte(MMA8451_WADDR);                        // MMA8451_WADDR  
  IIC_MMA8451_Delay_1us(MMA8451_DELAY);      // 延时1us
  check =IIC_MMA8451_Check_ACK();
  if(check == 1)
  {
    return IICEorr ;
  }  

  IIC_MMA8451_SendByte(Addr);                                 //REGISTER ADDR            
  IIC_MMA8451_Delay_1us(MMA8451_DELAY);      // 延时1us
  check =IIC_MMA8451_Check_ACK();
  if(check == 1)
  {
    return IICEorr ;
  }

  IIC_MMA8451_Start();  

  IIC_MMA8451_SendByte(slave_add);
  IIC_MMA8451_Delay_1us(MMA8451_DELAY);      // 延时1us
  check =IIC_MMA8451_Check_ACK();
  if(check == 1)
  {
    return IICEorr ;
  }

  for(;n > 1;n--)
  {
    receive_da=IIC_MMA8451_ReceiveByte();
    rece_data_buff[i++]=receive_da;
    IIC_MMA8451_Slave_ACK();    // 收到一个字节后发送一个应答位   
  }

  receive_da=IIC_MMA8451_ReceiveByte();
  rece_data_buff[i++]=receive_da;
  IIC_MMA8451_Slave_NOACK();    // 收到最后一个字节后发送一个非应答位

  IIC_MMA8451_Stop();
  return IICOK;

}




回复

使用道具 举报

5

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1482
QQ
威望
543
贡献
283
兑换币
338
注册时间
2014-9-15
在线时间
328 小时
毕业学校
哈尔滨工业大学
2#
发表于 2016-4-3 08:56:25 | 只看该作者
多百度,多看手册
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-28 03:28 , Processed in 0.043553 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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