利用S3C2451开发板自带的串口驱动程序,驱动陀螺仪传感器MPU6050出现错误
时间:10-02
整理:3721RD
点击:
陀螺仪传感器MPU6050与开发板S3C2451自带的串口取驱动ttySAC1,但是测得数据不正确,也没有出现正确的包头0x55。测试程序如下:
- #include <fcntl.h>
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <signal.h>
- #include <termio.h>
- #include <syslog.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- int uart_init(int arg,int baud)
- {
- int fd;
- char port[20];
- struct termios opt;
- int uartbiit[50] = {B115200,B9600,B19200,B4800,B2400,B1200};
- sprintf(port,"/dev/ttySAC%d",arg);
- printf("port %s\n",port);
- fd = open(port,O_RDWR);
- if(fd < 0)
- {
- return -1;
- }
- tcgetattr(fd,&opt); /*初始化一个终端对应的termios结构*/
- cfmakeraw(&opt);//#
- tcflush(fd,TCIFLUSH); /*清空输入输出*/
- cfsetispeed(&opt,uartbiit[baud]);/*这些函数只作用于termios结构,因此需要先调用tcgetattr()获得termios结构,再调用以上函数之一设置终端速度,最后调用tcsetattr()使设置生效*/
- cfsetospeed(&opt,uartbiit[baud]);
-
- opt.c_cflag |= CLOCAL | CREAD;
- opt.c_cflag |= CS8; /*发送或者接受字节使用8bit*/
- opt.c_cflag &= ~PARENB; /*不启动奇偶校验*/
- opt.c_oflag &= ~(OPOST);
- opt.c_cflag &= ~CSTOPB;//1 stopbit
- opt.c_lflag &= ~(ICANON|ISIG|ECHO|IEXTEN);
- opt.c_iflag &= ~(INPCK|BRKINT|ICRNL|ISTRIP);
- opt.c_iflag |= IXOFF|IXON;
-
- opt.c_cc[VMIN] = 0;
- opt.c_cc[VTIME] = 0;
- if(0 != tcsetattr(fd,TCSANOW,&opt))
- {
- perror("SetupSerial!\n");
- close(fd);
- return -1;
- }
- return(fd);
- }
- int main()
- {
- int fd5,i;
- float a[3]={0},w[3]={0},angle[3]={0},T=0;
- int n_read = 0;
- if((fd5 = uart_init(1,1)) <0)//打开串口ttySAC1
测试程序结果