微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > LOFT-Q 读取 G-Sensor 数据(2)

LOFT-Q 读取 G-Sensor 数据(2)

时间:10-02 整理:3721RD 点击:
1) 输出温度计:



  1. #include<stdio.h>
  2. #include<fcntl.h>
  3. #include<linux/i2c-dev.h>
  4. #include<linux/i2c.h>
  5. #include<errno.h>

  6. #define BMA250_ADDR  0x18

复制代码



2)输出 3轴加速度 X Y Z 轴的数值



  1. #include<stdio.h>
  2. #include<fcntl.h>
  3. #include<linux/i2c-dev.h>
  4. #include<linux/i2c.h>
  5. #include<errno.h>

  6. #define BMA250_ADDR  0x18

  7. int main(void)
  8. {
  9.         int fd;
  10.         unsigned int buf;
  11.         unsigned char i;
  12.         unsigned int acc_x, acc_y, acc_z;
  13.         fd = open( "/dev/i2c-1", O_RDWR );
  14.         if( fd < 0 )
  15.         {
  16.                 printf("err: open file: %s\r\n", strerror( errno ) );
  17.                 return 1;
  18.         }
  19.         if( ioctl( fd, I2C_SLAVE, BMA250_ADDR ) < 0 )
  20.         {
  21.                 printf("err: ioctl error : %s\r\n", strerror(errno) );
  22.                 return 1;
  23.         }

  24.         buf = 0x08;
  25.         if( write(fd,&buf,1) < 0 )
  26.         {
  27.                 printf("write 0x10 err \r\n");
  28.         }


  29.         while(1)
  30.         {

  31.                 buf = 0x02;
  32.                 write( fd, &buf, 1 );
  33.                 read( fd, &buf, 1 );
  34.                 acc_x = buf;
  35.                 acc_x >>= 6;
  36.                 buf = 0x03;
  37.                 write( fd, &buf, 1 );
  38.                 read( fd, &buf, 1 );
  39.                 acc_x = acc_x + ( buf << 2 ) & 0xFFB;

  40.                 buf = 0x04;
  41.                 write( fd, &buf, 1 );
  42.                 read( fd, &buf, 1 );
  43.                 acc_y = buf;
  44.                 acc_y >>= 6 ;
  45.                 buf = 0x05;
  46.                 write( fd, &buf, 1 );
  47.                 read( fd, &buf, 1 );
  48.                 acc_y = acc_y + ( buf << 2 ) & 0xFFB;

  49.                 buf = 0x06;
  50.                 write( fd, &buf, 1 );
  51.                 read( fd, &buf, 1 );
  52.                 acc_z = buf;
  53.                 acc_z >>= 6;
  54.                 buf = 0x07;
  55.                 write( fd, &buf, 1 );
  56.                 read( fd, &buf, 1 );

  57.                 acc_z = acc_z + ( buf << 2 ) & 0xFFB;

  58.                 printf( "acc_x: %d | acc_y: %d | acc_z: %d           \r", acc_x, acc_y, acc_z );

  59.                 fflush(stdout);
  60.                 usleep( 1000000 );
  61.         }
  62. }

复制代码



上面发的代码 不知为何缺失. 重发

  1. #include<stdio.h>
  2. #include<fcntl.h>
  3. #include<linux/i2c-dev.h>
  4. #include<linux/i2c.h>
  5. #include<errno.h>

  6. #define BMA250_ADDR  0x18

  7. int main(void)
  8. {
  9.         int fd;
  10.         unsigned char buf,i;
  11.         fd = open( "/dev/i2c-1", O_RDWR );
  12.         if( fd < 0 )
  13.         {
  14.                 printf("err: open file: %s\r\n", strerror( errno ) );
  15.                 return 1;
  16.         }
  17.         if( ioctl( fd, I2C_SLAVE, BMA250_ADDR ) < 0 )
  18.         {
  19.                 printf("err: ioctl error : %s\r\n", strerror(errno) );
  20.                 return 1;
  21.         }

  22.         buf = 0x08;
  23.         if( write(fd,&buf,1) < 0 )
  24.         {
  25.                 printf("write 0x10 err \r\n");
  26.         }


  27.         while(1)
  28.         {
  29.                 buf = 0x08;
  30.                 write(fd,&buf,1);

  31.                 if( read(fd, &buf, 1))
  32.                 {
  33.                         printf("current temperature[");
  34.                         for( i = 0; i < 50; i++ )
  35.                         {
  36.                                 if(i<buf)
  37.                                         printf("=");
  38.                                 else if( i == buf )
  39.                                         printf(">");
  40.                                 else
  41.                                         printf(" ");
  42.                         }

  43.                         printf("]%d C\r",buf);
  44.                 }
  45.                 else
  46.                 {
  47.                         printf("error: %d\r\n",buf);
  48.                 }
  49.                 fflush(stdout);
  50.                 usleep( 1000000 );
  51.         }
  52. }

复制代码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top