从ELB-REV4上的UART2读取的示例UART代码

时间:2019-06-01 17:40:04

标签: serial-port

在ELB-REV4器件上,我需要示例c代码来以3Mbps的波特率从UART2读取。

我尝试了一些示例代码,但没有用

我希望使用示波器可以看到数据波特率或UART2为3Mbps。

问题一出,我将UART2波特率设置为3000000。在示波器上,我看到波特率仍然是115200。

1 个答案:

答案 0 :(得分:0)

在ELB-REV4上,/ dev / ttyS2代表UART2,对UART0使用/ dev / ttyS0,请使用下面的代码输出101010,您可以在示波器上看到它并测量波特率。

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <termios.h>
 #include <ctype.h>
 #include <errno.h>

 struct termios options;
 int fd;
 int status;
 char buf[10];
 unsigned char rx_buffer[10];
 int main(void) 
        {
           fd = open("/dev/ttyS2", O_RDWR | O_NOCTTY | O_NDELAY);



      if (fd < 0) 
        {
           printf("Error opening serial port\n");
           exit(1);
        }



      bzero( & options, sizeof(options));
        options.c_cflag = B3000000 | CS8 | CLOCAL | CREAD | IGNPAR | PARODD | PARENB; //8bit, Odd parity, 
        tcflush(fd, TCIFLUSH);
        tcsetattr(fd, TCSANOW, & options);

    while (1) 
    {
buf[0] = 0x55; //pattern
status = write(fd, & buf[0], 1);

    if (status < 0) 
    {


     printf("Write error - %s \n", strerror(errno));
        exit(1);
    }


     usleep(1000000);
        printf("Sending 0x55 to /dev/ttyS2 port\n");
    }

    }