今天我们目的是实现串口回环测试,意思就是自己给自己发,然后自己接收到自己发送的内容。
首先呢,根据pinMap我们可以知道,8脚是UART3_TXD,10脚是UART3_RXD,所以我们需要将NanoPi2的8脚和10脚用杜邦线接起来。
然后呢,我们连接NanoPi2,写一个程序循环读取串口数据,并打印到屏幕上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> int main() { int fd = -1; fd = open("/dev/ttyAMA2", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { perror("Open Serial Port Error!\n"); return -1; }
struct termios options; tcgetattr(fd, &options); options.c_cflag = B115200 | CS8 | CLOCAL | CREAD; options.c_iflag = IGNPAR; options.c_oflag = 0; options.c_lflag = 0; options.c_cc[VTIME]=0; options.c_cc[VMIN]=1; tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &options); unsigned char rx_buffer[256]; while(1){ int rx_length = read(fd, (void*)rx_buffer, 255); if (rx_length > 0) { rx_buffer[rx_length] = '\0'; printf("%i bytes read : %s\n", rx_length, rx_buffer); } } close(fd); return 0; }
|
1 2 3
| nano read.c gcc read.c -o read ./read
|
然后我们向串口写入数据:
1 2 3
| echo hello > /dev/ttyAMA2 echo test > /dev/ttyAMA2 echo hahaha > /dev/ttyAMA2
|
read程序就会输出刚才发送的字符,带换行。