回答

收藏

[原创] RK3576 单板机 C/Python/MQTT 应用开发手册(二)

创龙科技 创龙科技 32 人阅读 | 0 人回复 | 2026-04-21

3 Linux常用开发案例
我司提供的Linux常用开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录下。案例bin目录存放可执行文件,src目录存放源码。
如需重新编译Linux常用开发案例,请将对应案例src目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# source /home/tronlong/RK3576/environment
Host# make

3.1 led_flash案例3.1.1案例功能
本案例通过向单板机用户可编程指示灯LED1设备节点反复交替写入1、0数值,实现LED1闪烁效果。LED1点亮与熄灭时间均为0.5s。
程序流程如下图所示。

LED设备节点为"/sys/class/leds/ledX/"目录下的brightness。

3.1.2操作说明
将本案例bin目录下的可执行程序led_flash拷贝至单板机系统,并在可执行程序所在目录执行如下命令运行程序,即可看到单板机LED1以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED1设备信息。
Target# ./led_flash -help
Target# ./led_flash -n 1

3.1.3关键代码
(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。

(2)LED亮灭操作和时间间隔。

3.2 can_perf案例3.2.1案例功能
本案例基于SocketCAN实现CAN/CAN-FD总线通信,包含数据收发测试及误码率统计。程序原理如下。
备注:SBC-TL3576单板机主板未引出CAN FD接口,因此本案例仅支持使用SBC-TL3576-BU、SBC-TL3576-MU或SBC-TL3576-ME整机测试。
发送端:
(1)发送指定数量帧;
(2)帧的数据长度由参数指定;
(3)发送从0至255的递增数;
(4)每一帧的发送间隔由参数指定。
接收端:
(1)接收CAN总线上的数据包;
(2)提取数据包数据进行校验;
(3)每接收到1000个数据帧打印一次帧数;
(4)打印误码率,总接收帧数信息。
程序流程如下图。

3.2.2操作说明
本次测试以SBC-TL3576-BU整机的CAN FD(G1、L1、H1)接口(设备节点为:can0)为例进行演示,如需测试CAN FD(G2、L2、H2)接口,请将设备节点修改为can1。
请准备两个SBC-TL3576-BU整机,使用杜邦线将两个SBC-TL3576-BU整机的CAN FD接口H1端子、L1端子和G1端子进行直连。
单板机接口的连接关系如下表所示。

单板机上电启动,将本案例bin目录下的可执行程序can_perf分别拷贝至两个单板机的文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
Target# ./can_perf -h

参数解析:
-d:CAN接口的对应节点;
-r:作为接收端读取数据;
-w:作为发送端发送数据;
-f:收发数据帧的数量;
-l:帧的数据长度;
-i:帧间隔时长,单位为us,默认为0;
-m:模式选择,默认为CAN模式,0:CAN模式,1:CAN-FD模式;
-h:帮助信息。
将单板机1和单板机2上电启动,进入单板机文件系统,分别执行如下命令配置CAN FD接口波特率为1Mbps,配置数据波特率为5Mbps,并启动CAN0总线。
Target# ip link set can0 down
Target# ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
Target# ip link set can0 up

在单板机1的终端执行如下命令,设置单板机1的CAN0总线等待接收数据。
Target# ./can_perf -d can0 -r -f 50000

在单板机2的终端窗口下,设置单板机2的CAN0总线以1000us的时间间隔发送50000帧数据至单板机1的CAN0总线。
备注:当执行的命令未设置-i参数时,默认发送数据帧间隔时长为0us,由于数据发送过快,可能导致系统资源(如缓冲区)迅速耗尽,从而触发"No buffer space available"错误,并造成数据帧丢失。
Target# ./can_perf -d can0 -w -f 50000 -i 1000



从打印信息可以得知,接收端单板机1成功接收50000帧数据,误码率为0.00%,每帧耗时为0.139s。
3.2.3关键代码
(1)解析传递参数。

(2)初始化CAN接口。

(3)发送端。

(4)接收端。

(5)校验接收到的数据信息。

(6)打印接收到的数据信息。

3.3 uart_rw案例3.3.1案例功能
本案例实现单板机串口读写功能。
备注:SBC-TL3576单板机主板未引出RS-485/RS-232接口,因此本案例仅支持使用SBC-TL3576-BU、SBC-TL3576-MU或SBC-TL3576-ME整机测试。
程序流程如下图所示。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。

本案例测试的串口对应设备节点如下表所示。

3.3.2操作说明
(1)RS-232串口测试
我司整机默认配置RS-485/RS-232接口为RS-485功能。请联系我司销售或技术服务人员,将EX-TLBaseUART扩展板的拨码开关SW7拨至RS-232档位,配置为RS-232功能。
本次以SBC-TL3576-BU整机的RS-232功能为例进行演示,请通过USB转RS-232**串口线和杜邦线,将整机的RS-232(G1、R1、T1)串口连接至PC机的USB接口,硬件连接如下图所示

将本案例bin目录下的可执行程序uart_rw拷贝至单板机系统,并在该可执行程序所在目录执行如下命令,查看程序参数信息。
Target# ./uart_rw -h

1.单板机接收
打开设备管理器,本次测试中调试串口DEBUG端口号为COM16,RS-232串口的端口号为COM18,如下图所示。

打开调试串口终端,COM16波特率设为115200,8N1,无校验位。COM18波特率设为115200,8N1,无校验位,并建立串口连接。单板机调试串口终端执行如下命令,单板机等待接收上位机发送的数据。
备注:单板机启动后首次执行程序uart_rw,会出现打印信息"of_dma_request_slave_channel…",不影响正常使用,请忽略。
Target# ./uart_rw -d /dev/ttyS1 -r -s 8

在RS-232串口终端点击"View -> Command (Chat) Window",选中并打开"Command (Chat) Window"窗口。

在窗口中输入数据,例如"Tronlong",再按回车键。

单板机调试串口终端将会打印接收到的数据。

2.单板机发送
执行如下命令,单板机通过RS-232串口发送数据至上位机,数据已在程序中定义。
Target# ./uart_rw -d /dev/ttyS1 -w -s 8

RS-232串口终端将会打印接收到的数据,如下图所示。

(2)RS-485串口测试
本次以SBC-TL3576-BU整机的RS-485(G1、B1、A1)串口为例进行演示,其他RS-485(Gx、Bx、Ax)串口测试同理。请使用RS-232转RS-485模块、USB转RS-232**串口线,将整机的RS-485串口连接至PC机的USB接口,硬件连接如下图所示。

执行如下命令,进行RS-485串口数据读写操作。RS-485串口测试步骤与现象与RS-232类似,命令中的设备节点请根据实际情况修改即可。
Target# ./uart_rw -d /dev/ttyS1 -r -s 8 //读操作
Target# ./uart_rw -d /dev/ttyS1 -w -s 8 //写操作
3.3.3关键代码
(1)串口初始化函数。

(2)串口读写函数。








(3)回环测试。



(4)相关逻辑。

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!


分享到:
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条