【正点原子RV1126 AI Linux开发板】 USB转串口测试
[复制链接]
测试下USB转串口通信测试。
一、编译CH340模块驱动
USB转串口模块使用的芯片是CH340,需要移植CH340驱动到开发板。
1.1、配置、编译内核
开发板内核中有CH340驱动程序,默认没有选择,需要重新配置内核,编译内核。
执行命令:
hui@ubuntu:/opt/atk-rv1126_linux/kernel$ make ARCH=arm alientek_rv1126_defconfig
make ARCH=arm menuconfig
选择CH341驱动,编译成模块
hui@ubuntu:/opt/atk-rv1126_linux/kernel$ make ARCH=arm savedefconfig
hui@ubuntu:/opt/atk-rv1126_linux/kernel$ cp defconfig arch/arm/configs/alientek_rv1126_defconfig
hui@ubuntu:/opt/atk-rv1126_linux/kernel$ cd ..
hui@ubuntu:/opt/atk-rv1126_linux$ sudo ./build.sh kernel
编译完成后,生成的驱动程序
1.2、复制驱动到开发板
执行命令:
hui@ubuntu:/opt/atk-rv1126_linux$ scp kernel/drivers/usb/serial/ch341.ko root@192.168.1.21:/opt
在开发板下加载CH340驱动
加载完成后,找到ttyUSB0设备
二、串口测试
2.1、串口测试程序
uart_test.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <sys/fcntl.h>
char *buf = "rv1126 linux uart test!\r\n";
int main(void)
{
int fd;
char *port = "/dev/ttyUSB0";
speed_t baudrate = B115200;
struct termios options;
if ((fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY)) == -1) {
perror("无法打开串口");
exit(-1);
}
tcgetattr(fd, &options);
cfsetispeed(&options, baudrate);
cfsetospeed(&options, baudrate);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~CRTSCTS;
options.c_iflag &= ~IXON;
options.c_oflag &= ~OPOST;
options.c_cc[VMIN] = 5;
options.c_cc[VTIME] = 2;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &options);
printf("成功连接到 %s\n", port);
while (1)
{
write(fd,buf,strlen(buf));
usleep(1000000);
}
}
2.2、编译程序
执行命令:
hui@ubuntu:/opt/atk-rv1126_app/uart_test$ arm-linux-gnueabihf-gcc -o uart_test uart_test.c
编译完成后,将生成的uart_test 复制到开发板
三、串口测试
3.1、连接串口
3.2、在开发板上运行命令
PC机串口接收的数据
串口测试完成。
|