微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > 利用S3C2451开发板自带的串口驱动程序,驱动陀螺仪传感器MPU6050出现错误

利用S3C2451开发板自带的串口驱动程序,驱动陀螺仪传感器MPU6050出现错误

时间:10-02 整理:3721RD 点击:
陀螺仪传感器MPU6050与开发板S3C2451自带的串口取驱动ttySAC1,但是测得数据不正确,也没有出现正确的包头0x55。测试程序如下:

  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #include <errno.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <unistd.h>
  7. #include <signal.h>
  8. #include <termio.h>
  9. #include <syslog.h>
  10. #include <sys/stat.h>
  11. #include <sys/types.h>

  12. int uart_init(int arg,int baud)
  13. {
  14.         int fd;
  15.         char port[20];
  16.         struct termios opt;
  17.         int uartbiit[50] = {B115200,B9600,B19200,B4800,B2400,B1200};
  18.         sprintf(port,"/dev/ttySAC%d",arg);
  19.         printf("port %s\n",port);
  20.         fd = open(port,O_RDWR);
  21.         if(fd < 0)
  22.         {
  23.     return -1;
  24.         }
  25.         tcgetattr(fd,&opt);   /*初始化一个终端对应的termios结构*/
  26.         cfmakeraw(&opt);//#
  27.         tcflush(fd,TCIFLUSH); /*清空输入输出*/
  28.         cfsetispeed(&opt,uartbiit[baud]);/*这些函数只作用于termios结构,因此需要先调用tcgetattr()获得termios结构,再调用以上函数之一设置终端速度,最后调用tcsetattr()使设置生效*/
  29.         cfsetospeed(&opt,uartbiit[baud]);
  30.        
  31.         opt.c_cflag |= CLOCAL | CREAD;
  32.         opt.c_cflag |= CS8;   /*发送或者接受字节使用8bit*/
  33.         opt.c_cflag &= ~PARENB; /*不启动奇偶校验*/
  34.         opt.c_oflag &= ~(OPOST);
  35.         opt.c_cflag &= ~CSTOPB;//1 stopbit
  36.         opt.c_lflag &= ~(ICANON|ISIG|ECHO|IEXTEN);
  37.         opt.c_iflag &= ~(INPCK|BRKINT|ICRNL|ISTRIP);  
  38.         opt.c_iflag |= IXOFF|IXON;
  39.        
  40.         opt.c_cc[VMIN] = 0;
  41.         opt.c_cc[VTIME] = 0;

  42.         if(0 != tcsetattr(fd,TCSANOW,&opt))
  43.         {
  44.                 perror("SetupSerial!\n");
  45.                 close(fd);
  46.                 return -1;
  47.         }
  48.         return(fd);
  49. }

  50. int main()
  51. {
  52.           int fd5,i;
  53.         float a[3]={0},w[3]={0},angle[3]={0},T=0;
  54.         int n_read = 0;
  55.         if((fd5 = uart_init(1,1)) <0)//打开串口ttySAC1

复制代码


测试程序结果



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

网站地图

Top