2455|2

6179

帖子

4

TA的资源

版主

楼主
 

【Luckfox幸狐 RV1106 Linux 开发板测评】07 串口设备应用 [复制链接]

 
本帖最后由 damiaa 于 2024-3-2 21:14 编辑

      【Luckfox幸狐 RV1106 Linux 开发板测评】07 串口设备应用

 

LuckFox Pico Plus/Pro/Max 有五个串口,UART2、UART3、UART4 和 UART0,UART1其中 UART2 为调试串口。
默认开启的串口有 UART3 、 UART4 和调试串口。
 
/dev设备目录
/dev目录中可以看到一些ttySx 的目录,用ls /dev/ttyS*可以查看。
 
配置和查询通信参数可以用stty命令:
stty -F /dev/ttyS3 查询通信参数
stty -F /dev/ttyS3 ispeed 115200 ospeed 115200 修改通信参数
与Windows主机usb-uart ttl通讯
 将串口模块一端连接电脑,另一端连接 LuckFox UART3的引脚18(GND)、19(UART7_TX)和20(UART7_TX)上。
 下载并打开 MObaXterm,选择串口,设置波特率(115200,上面已经设置)。
记得把串口设置一下参数,每次重上电都要设置:
stty -F /dev/ttyS3 查询通信参数
stty -F /dev/ttyS3 ispeed 115200 ospeed 115200 修改通信参数
实验结果如下:
同样,将串口模块一端连接电脑,另一端连接 LuckFox UART4的引脚3(GND)、6(UART7_TX)和7(UART7_TX)上。电脑端一样。
设置串口参数:
stty -F /dev/ttyS4 查询通信参数
stty -F /dev/ttyS4 ispeed 115200 ospeed 115200 修改通信参数
实验结果如下:
 
串口通信 python程序实验
使用Python 的 serial 库,实现串口3收发数据。
还是将usb-ttl接到串口3 运行,结果如下:
使用python-periphery,实现串口3收发数据。
还是将usb-ttl接到串口3 运行,结果如下:
 
C语言实现串口通信(这个程序适合串口0 1 3 4 也就是max板的所有串口)
程序如下
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • #include <fcntl.h>
  • #include <termios.h>
  • #include <unistd.h>
  • int main() {
  • int serial_port_num;
  • char serial_port[15];
  • printf("Select a serial port (0/1/3/4): ");
  • scanf("%d", &serial_port_num);
  • sprintf(serial_port,"/dev/ttyS%d",serial_port_num);
  • int serial_fd;
  • serial_fd = open(serial_port, O_RDWR | O_NOCTTY);
  • if (serial_fd == -1) {
  • perror("Failed to open serial port");
  • return 1;
  • }
  • struct termios tty;
  • memset(&tty, 0, sizeof(tty));
  • if (tcgetattr(serial_fd, &tty) != 0) {
  • perror("Error from tcgetattr");
  • return 1;
  • }
  • int bt_num =3;
  • int baud_val=B115200;
  • printf(" baud rate select is \n 1: 9600 \n 2: 19200\n 3: 38400\n 4: 57600\n 5: 115200\n");
  • scanf("%d", &bt_num);
  • switch(bt_num)
  • {
  • case 1:
  • cfsetospeed(&tty, B9600);
  • cfsetispeed(&tty, B9600);
  • baud_val =9600;
  • break;
  • case 2:
  • cfsetospeed(&tty, B19200);
  • cfsetispeed(&tty, B19200);
  • baud_val =19200;
  • break;
  • case 3:
  • cfsetospeed(&tty, B38400);
  • cfsetispeed(&tty, B38400);
  • baud_val =38400;
  • break;
  • case 4:
  • cfsetospeed(&tty, B57600);
  • cfsetispeed(&tty, B57600);
  • baud_val =57600;
  • break;
  • case 5:
  • cfsetospeed(&tty, B115200);
  • cfsetispeed(&tty, B115200);
  • baud_val =115200;
  • break;
  • default:
  • cfsetospeed(&tty, B115200);
  • cfsetispeed(&tty, B115200);
  • baud_val =B115200;
  • break;
  • }
  • printf("baud rate is %d\n",baud_val);
  • tty.c_cflag &= ~PARENB;
  • tty.c_cflag &= ~CSTOPB;
  • tty.c_cflag &= ~CSIZE;
  • tty.c_cflag |= CS8;
  • if (tcsetattr(serial_fd, TCSANOW, &tty) != 0) {
  • perror("Error from tcsetattr");
  • return 1;
  • }
  • char tx_buffer[] = "please send data\n";
  • int tims=10;
  • while(tims){
  • tims--;
  • ssize_t bytes_written = write(serial_fd, tx_buffer, sizeof(tx_buffer));
  • if (bytes_written < 0) {
  • perror("Error writing to serial port");
  • close(serial_fd);
  • return 1;
  • }
  • printf("\rtx_buffer: \n %s ", tx_buffer);
  • usleep(100000);
  • char rx_buffer[256];
  • int bytes_read = read(serial_fd, rx_buffer, sizeof(rx_buffer));
  • if (bytes_read > 0) {
  • rx_buffer[bytes_read] = '\0';
  • printf("\rrx_buffer: \n %s ", rx_buffer);
  • } else {
  • printf(" \n");
  • }
  • }
  • close(serial_fd);
  • return 0;
  • }

 

交叉编译,传到板子,修改执行属性。
运行
选择串口,选择波特率
查看发送接收结果
 
使用设备树开启串口0和串口1
我们拿到得是rg1106-pico-pro/max板 所以有串口0 和1 注意这里不是串口5!!!
从下面文件中查看:
发现是rv1106g-luckfox-pico-pro-max.dts文件
找到这个文件
去掉下面串口0 串口1的注释:
编译内核
  1. 编译选择分支
    ./build.sh lunch
    选择8
  2. 重新编译内核: 好像只要几分钟(因为前面编过)


    发现有两个文件更新了
  3. 烧录固件 使用
      把文件上面文件和boot.img、download.bin、.env.txt拷贝到windows共享目录,用瑞芯微的烧录软件烧录:
     注意:如果Maskrom xx 没出来,就按板子的boot几秒钟,就出来了。
      然后选择搜索路径找到文件的路径,然后就都出来了,左边勾上要下载的文件,然后按下载就ok
       4. 重新启动板子后连接板子查看,发现串口0 串口1 出来了
       把usb-ttl连接板子的串口1 和电脑的usb口试一下
     然后连接串口调试软件到usb-ttl显示的那个串口,波特率设置9600,并用命令操作串口一,
查看结果:发现串口是可以通信的,串口0就不试了。
 
    上面的C程序也适合测试这个串口0 和串口1,只需要运行时输入串口号就行了。
 
    好先汇报到这里,谢谢大家。
查看本帖全部内容,请登录或者注册

最新回复

版主大佬亲自上阵评测,学习了,这板子下载程序是不是特别麻烦呀?  详情 回复 发表于 2024-3-7 07:10
点赞 关注
 
 

回复
举报

7194

帖子

11

TA的资源

版主

沙发
 
版主大佬亲自上阵评测,学习了,这板子下载程序是不是特别麻烦呀?

点评

谢谢鼓励。 下载很简单的,专门一个工具,把编译的文件加载进去用usb口烧录就行了。 和单片机差不多。只是分了一些文件 环境env文件、uboot、 内核、文件系统、工具等等,反正可以一次烧录进去。  详情 回复 发表于 2024-3-7 08:50
 
 
 

回复

6179

帖子

4

TA的资源

版主

板凳
 
lugl4313820 发表于 2024-3-7 07:10 版主大佬亲自上阵评测,学习了,这板子下载程序是不是特别麻烦呀?

谢谢鼓励。

下载很简单的,专门一个工具,把编译的文件加载进去用usb口烧录就行了。

和单片机差不多。只是分了一些文件 环境env文件、uboot、 内核、文件系统、工具等等,反正可以一次烧录进去。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
LM3S8962远程升级学习心得

这几天看了下LM3S8963远程升级的程序,觉得还是蛮有意思的,和大家分享一下。 首先,让我们看一个最基本的概念: 地址:0xE000 ...

GoodFET下载器

GoodFET是国外Travis的一个开源项目,可以用来下载msp430,AVR,Chipcon 8051,PIC等单片机。电路简单,只要一个ft232,msp430f ...

【全部开源】C2000全套软硬件资料—囧神力荐!!!

controlSUITE软件是TI针对C2000推出的可支持实时控制应用的软件,相较于传统的MCU,controlSUITE软件可为简化评估、应用调适、除 ...

潜水太久,出来换个气,显摆下 平衡小车 , 听说标题够长才霸气

本帖最后由 daen_lin 于 2015-11-24 15:27 编辑 潜水太久,不知会不会封号。作为专业的电子的爱好者,被eeworld封号可是莫大 ...

神器系列-艾刷做开发板

本帖最后由 dcexpert 于 2016-2-29 00:16 编辑 前几天发了一篇《神器拆机-艾刷》的帖子,发现里面使用了STM32F401CC单片机, ...

开启LPWAN 2.0时代的底层技术:Advanced M-FSK(二)

导 读 ZETA Advanced M-FSK是LPWAN领域的“5G”,5G实现了移动宽带领域的更高速率,Advanced M-FSK则实现了LPWAN领 ...

电线电缆载流量标准手册

电线电缆载流量标准手册,分享给大家

STM32L4R5板子CRC程序的问题

代码: #include "main.h" /** @addtogroup STM32L4xx_HAL_Examples * @{ */ /** @addtogroup CRC_UserDefined ...

【得捷电子Follow me第3期】两块ESP32C3通过Matter 互联实现控制

Matter是一项好技术,适应Matter的设备正在逐渐增多。ESP32的大东家乐鑫,还专门提供了Matter解决方案:https://www.espressif.c ...

图像处理

图像处理

关闭
站长推荐上一条 1/10 下一条
有奖探索 | 和村田一起,深挖 GNSS 开发!
活动时间:即日起-5月11日
活动奖励:智能手环、螺丝刀套装、双肩包

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 12

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表