6090|28

9798

帖子

24

TA的资源

版主

楼主
 

MSP430FR5969驱动LIS3DSH三轴加速度传感器 [复制链接]

 
 

LIS3DSH最小评估板焊好很长时间了

前几天一直在调试AD9102

今天抽空用MSP430FR5969测试了一下LIS3DSH

很容易调通

为了方便实时查看波形

改了一个上位机程序

结果上位机出了点问题花了很长时间

最后总算把数据显示出来了

效果还可以

 

 

LIS3DSHMSP430FR5969代码

只做了简单配置

使用轮询读取

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

 * Copyright (C), 2017, XiaCheDan Tech. Co., Ltd.

 * FileName: main.c

 * Author: littleshrimp

 * Version : 1.0

 * Date:  2017-1-22 11:13

 * Description:

 * Function List: //

 * 1. -------

 * History:

 * <author>   <time>                <version >  <desc>

 * littleshrimp      2017-1-22 11:13  1.0         build this moudle

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

/*

 

                              MSP430FR5969

                            -----------------

                           |     P2.0/UCA0TXD|----> PC

                           |                     |

                           |                     |

                           |     P2.1/UCA0RXD|<---- PC

                           |                     |

               SCL --o--|P3.5                |

                           |                     |

               SDA --o--|P3.6                |

 

*/

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

 *  * INCLUDES

 *  */

 

#include "msp430.h"

#include <stdio.h>

#include <stdint.h>

#include "uart.h"

#include "soft_i2c.h"

#include "timer.h"

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

 *  * MACROS

 *  */

 

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

 *  * CONSTANTS

 *  */

#define BASE64        0

#define STRING        0

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

 *  * TYPEDEFS

 *  */

 

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

 *  * GLOBAL VARIABLES

 *  */

 

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

 *  * EXTERNAL VARIABLES

 *  */

 

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

 *  * EXTERNAL FUNCTIONS

 *  */

 

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

 *  * LOCAL VARIABLES

 *  */

 

uint8_t data[3];

uint16_t temp_code;

float temperature;

uint8_t crc;

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

 *  * PROFILE CALLBACKS

 *  */

 

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

 *  * LOCAL FUNCTIONS

 *  */

 

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

 *  * PUBLIC FUNCTIONS

 *  */

 

   

   

#define LIS3DSH_SLAVE_ADDR     (0x1E << 1)//7bit

#define LIS3DSH_WHO_I_AM       0x0F

#define LIS3DSH_OUT_T          0x0C

#define LIS3DSH_STATUS         0x27

#define LIS3DSH_CTRL_REG4      0x20

#define LIS3DSH_CTRL_REG3      0x23

#define LIS3DSH_CTRL_REG5      0x24

#define LIS3DSH_CTRL_REG6      0x25

uint8_t buf[10];

void lis3dsh_init(void)

{ 

    uint8_t data;

    i2c_init();//初始化I2C

    i2c_read_n_byte(LIS3DSH_SLAVE_ADDR,LIS3DSH_WHO_I_AM,&buf[0],1);

//    data = 0x17;//0001:3.125Hz 0:continuous update 111:x,y,z enable

    data = 0x97;//1001:1600Hz 0:continuous update 111:x,y,z enable

    i2c_write_n_byte(LIS3DSH_SLAVE_ADDR,LIS3DSH_CTRL_REG4,&data,1);

    i2c_read_n_byte(LIS3DSH_SLAVE_ADDR,LIS3DSH_OUT_T,&buf[1],1);

    i2c_read_n_byte(LIS3DSH_SLAVE_ADDR,LIS3DSH_STATUS,&buf[2],7);

}

void dco_init(void)

{ 

  // Configure one FRAM waitstate as required by the device datasheet for MCLK

  // operation beyond 8MHz _before_ configuring the clock system.

  FRCTL0 = FRCTLPW | NWAITS_1;

 

  // Clock System Setup

  CSCTL0_H = CSKEY >> 8;                    // Unlock CS registers

  CSCTL1 = DCORSEL | DCOFSEL_4;             // Set DCO to 16MHz

  CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK; // Set SMCLK = MCLK = DCO,

                                            // ACLK = VLOCLK

  CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;     // Set all dividers

  CSCTL0_H = 0;                             // Lock CS registers

}

int main( void )

{

  int16_t x = 0,y = 0,z = 0;

  uint8_t status;

  char inBuf[64];//base64缓存

  char outBuf[64];//base64缓存

  WDTCTL = WDTPW + WDTHOLD;//停止看门狗

  PM5CTL0 &= ~LOCKLPM5;//这个是一定要加的,不然GPIO不能使用

  dco_init();

  lis3dsh_init();

  uart_init();

  while(1)

  {

   

    i2c_read_n_byte(LIS3DSH_SLAVE_ADDR,LIS3DSH_STATUS,&buf[2],7);

 

#if (BASE64 == 1)    //base 64输出

    base64_encode((const uint8_t *)(&buf[2]),outBuf,7); //BASE64转换

    uart_tx_string(outBuf);//输出到PC

    uart_tx_string("\r\n");//换行

#elif (STRING == 1)       //字符串输出    status = buf[2];//status

    x = buf[3] + (buf[4] << 8);

    y = buf[5] + (buf[6] << 8);

    z = buf[7] + (buf[8] << 8);

    sprintf(outBuf,"lis3dsh data out x=%d,y=%d,z=%d\r\n",x,y,z);

    uart_tx_string(outBuf);//输出到PC

    uart_tx_string("\r\n");//换行

    sleep(650);

#else                      //二进制输出

    outBuf[0] = 0x55;

    outBuf[1] = buf[4];

    outBuf[2] = buf[3];

    outBuf[3] = buf[6];

    outBuf[4] = buf[5];

    outBuf[5] = buf[8];

    outBuf[6] = buf[7];

   

//    if(x++ > 1000) x = 0;

//    if(y++ > 10000) y = 0;

//    if(z++ > 30000) y = 0;

//    outBuf[0] = 0x55;

//    outBuf[1] =x>>8;

//    outBuf[2] =x;

//    outBuf[3] = y>>8;

//    outBuf[4] = y;

//    outBuf[5] = z>>8;

//    outBuf[6] = z;

    uart_tx_bytes(outBuf,7);//输出到PC

#endif

    //SPCI2C_Readpt(SPC1000AddrR,0x07,mPress,1);      //获取气压数据高字节:3

  }

}

 


最新回复

楼主问一下:将这种惯性传感器固定在一个物体上,物体水平运行速度是可变化的,这样的话,通过传感器的数据测量物体的速度和位移吗?   详情 回复 发表于 2019-7-4 18:55
点赞 关注(1)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

483

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
版主好强大啊。精度咋样这个模块

点评

手里没有相关的实验环境不好验证啊  详情 回复 发表于 2017-1-24 18:44
 
 
 

回复

9798

帖子

24

TA的资源

版主

板凳
 


手里没有相关的实验环境不好验证啊

点评

看着不错。灵敏度很高  详情 回复 发表于 2017-1-25 09:47
 
 
 

回复

483

帖子

0

TA的资源

一粒金砂(中级)

4
 
littleshrimp 发表于 2017-1-24 18:44
手里没有相关的实验环境不好验证啊

看着不错。灵敏度很高

点评

可以看下数据手册 感觉还不错  详情 回复 发表于 2017-1-25 21:20
 
 
 

回复

1301

帖子

0

TA的资源

纯净的硅(中级)

5
 
谢谢分享和sensortile上的传感器一样不?

点评

和sensortile的不一样 sensortile上使用的都是6轴 G+A A+M,这个是单纯的3轴加速度  详情 回复 发表于 2017-1-25 21:21
 
 
 

回复

9798

帖子

24

TA的资源

版主

6
 


可以看下数据手册 感觉还不错
 
 
 

回复

9798

帖子

24

TA的资源

版主

7
 


和sensortile的不一样 sensortile上使用的都是6轴 G+A A+M,这个是单纯的3轴加速度
 
 
 

回复

1301

帖子

0

TA的资源

纯净的硅(中级)

8
 
蓝牙板子的传感器是spi工作模式。
个人签名

 

 

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

9
 
你好,最近我也在用LIS3DSH,由于老师没讲过,到现在还没搭起通信的程序,可以参考一下你的程序吗?谢谢
 
 
 

回复

9798

帖子

24

TA的资源

版主

10
 

单片机和上位机的代码:

3.csharp demo.rar (157.01 KB, 下载次数: 0)

2.msp430fr5969 soft i2c.rar (455.04 KB, 下载次数: 0)

点评

大侠好厉害,下载看看学习  详情 回复 发表于 2019-6-5 11:16
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼主大大 能加个QQ吗 我QQ1518532502 我在做这个毕设 有些问题想请教

点评

有问题在这里发贴就可以,我会及时回复的  详情 回复 发表于 2019-5-7 11:22
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

12
 
楼主大大能加个好友吗 有偿
 
 
 

回复

9798

帖子

24

TA的资源

版主

13
 
1518532502 发表于 2019-5-7 10:26
楼主大大 能加个QQ吗 我QQ1518532502 我在做这个毕设 有些问题想请教

有问题在这里发贴就可以,我会及时回复的
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

14
 
单片机程序写入你用的什么软件?

点评

IAR for MSP430  详情 回复 发表于 2019-5-7 13:30
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

15
 
如果用labview显示波形  你那个单片机程序需不需要改

点评

按照相应的格式解析就可以了  详情 回复 发表于 2019-5-7 13:29
 
 
 

回复

9798

帖子

24

TA的资源

版主

16
 
1518532502 发表于 2019-5-7 11:35
如果用labview显示波形  你那个单片机程序需不需要改

按照相应的格式解析就可以了
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

9798

帖子

24

TA的资源

版主

17
 
1518532502 发表于 2019-5-7 11:34
单片机程序写入你用的什么软件?

IAR for MSP430
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

18
 
楼主大大 你之前给的附件无法提取  怎么下载啊

点评

用新版的rar试试,我之前也遇到过类似问题  详情 回复 发表于 2019-5-7 14:44
 
 
 

回复

9798

帖子

24

TA的资源

版主

19
 
1518532502 发表于 2019-5-7 14:21
楼主大大 你之前给的附件无法提取  怎么下载啊

用新版的rar试试,我之前也遇到过类似问题
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

20
 
楼主爸爸 用了新版的rar还是不行  能不能加个好友   呜呜呜

点评

这个是把加速度转换成倾角的  详情 回复 发表于 2019-5-7 20:07
试试ISO文件  详情 回复 发表于 2019-5-7 15:35
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表