陈工-创龙科技 发表于 2026-4-21 14:27:15

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

3 Linux常用开发案例我司提供的Linux常用开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录下。案例bin目录存放可执行文件,src目录存放源码。如需重新编译Linux常用开发案例,请将对应案例src目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# source /home/tronlong/RK3576/environmentHost# makehttps://file1.elecfans.com/web3/M00/55/6A/wKgZO2nm6JyAHYiyAAB_dMuUNrw382.png
3.1 led_flash案例3.1.1案例功能本案例通过向单板机用户可编程指示灯LED1设备节点反复交替写入1、0数值,实现LED1闪烁效果。LED1点亮与熄灭时间均为0.5s。程序流程如下图所示。https://file1.elecfans.com/web3/M00/25/E9/wKgZO2iByfqAG92FAAAwLTwQbzo760.png
LED设备节点为"/sys/class/leds/ledX/"目录下的brightness。https://file1.elecfans.com/web3/M00/55/6A/wKgZO2nm6K2ALbe3AAAaMpzh8Ug061.png
3.1.2操作说明将本案例bin目录下的可执行程序led_flash拷贝至单板机系统,并在可执行程序所在目录执行如下命令运行程序,即可看到单板机LED1以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED1设备信息。Target# ./led_flash -helpTarget# ./led_flash -n 1https://file1.elecfans.com/web3/M00/55/6C/wKgZO2nm8DGAbJreAAAgJ1faoCA254.png
3.1.3关键代码(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8DiAans0AAAcZ_X9uv0458.png
(2)LED亮灭操作和时间间隔。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8EGARehwAADA7LUQqvc521.png
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)打印误码率,总接收帧数信息。程序流程如下图。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8EuAaPvLAAELVSpVh6o884.png
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端子进行直连。单板机接口的连接关系如下表所示。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8FWAbzZcAAANqCF0zBE594.pnghttps://file1.elecfans.com/web3/M00/55/6C/wKgZO2nm8F-AcJ3QAEoKOM0FU3U899.png
单板机上电启动,将本案例bin目录下的可执行程序can_perf分别拷贝至两个单板机的文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。Target# ./can_perf -hhttps://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8GmAJG-nAAAk-wfYK3k234.png
参数解析:-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 downTarget# ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd onTarget# ip link set can0 uphttps://file1.elecfans.com/web3/M00/55/6C/wKgZO2nm8HKADh6MAAAdxGbJbpU838.png
在单板机1的终端执行如下命令,设置单板机1的CAN0总线等待接收数据。Target# ./can_perf -d can0 -r -f 50000https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8HmAV_-tAAAJu_dFP_Y927.png
在单板机2的终端窗口下,设置单板机2的CAN0总线以1000us的时间间隔发送50000帧数据至单板机1的CAN0总线。备注:当执行的命令未设置-i参数时,默认发送数据帧间隔时长为0us,由于数据发送过快,可能导致系统资源(如缓冲区)迅速耗尽,从而触发"No buffer space available"错误,并造成数据帧丢失。Target# ./can_perf -d can0 -w -f 50000 -i 1000https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8IWAfjYrAAAcRon6trY849.png

https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8IWAOdWFAAAy5sdYTMc275.png
从打印信息可以得知,接收端单板机1成功接收50000帧数据,误码率为0.00%,每帧耗时为0.139s。3.2.3关键代码(1)解析传递参数。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8LeAVUjvAACB0GBbKNU719.png
(2)初始化CAN接口。https://file1.elecfans.com/web3/M00/55/6C/wKgZO2nm8MWARohvAACpFRh7ovg965.png
(3)发送端。https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8N2AYUJTAAEK2w4BjAE719.png
(4)接收端。https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8OiAFpsQAAC13cgmzZk740.png
(5)校验接收到的数据信息。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8POAKS__AABeJHBIUc0871.png
(6)打印接收到的数据信息。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8P6AArN7AABHSaqRdWM430.png
3.3 uart_rw案例3.3.1案例功能本案例实现单板机串口读写功能。备注:SBC-TL3576单板机主板未引出RS-485/RS-232接口,因此本案例仅支持使用SBC-TL3576-BU、SBC-TL3576-MU或SBC-TL3576-ME整机测试。程序流程如下图所示。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。https://file1.elecfans.com/web3/M00/25/DA/wKgZPGiBylmAKKPNAABnuczvQKg777.png
本案例测试的串口对应设备节点如下表所示。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8R-APT2rAABphOyWSfk669.png
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接口,硬件连接如下图所示。
https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8oGAYI8qACHFHPAQP1c395.png
将本案例bin目录下的可执行程序uart_rw拷贝至单板机系统,并在该可执行程序所在目录执行如下命令,查看程序参数信息。
Target# ./uart_rw -hhttps://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8oqAQcynAAAdG0UeC1c574.png
1.单板机接收
打开设备管理器,本次测试中调试串口DEBUG端口号为COM16,RS-232串口的端口号为COM18,如下图所示。
https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8rSAP3igAACWfGDn_2Q576.png
打开调试串口终端,COM16波特率设为115200,8N1,无校验位。COM18波特率设为115200,8N1,无校验位,并建立串口连接。单板机调试串口终端执行如下命令,单板机等待接收上位机发送的数据。
备注:单板机启动后首次执行程序uart_rw,会出现打印信息"of_dma_request_slave_channel…",不影响正常使用,请忽略。Target# ./uart_rw -d /dev/ttyS1 -r -s 8https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8saAe6m7AAAP6stMBhc795.png
在RS-232串口终端点击"View -> Command (Chat) Window",选中并打开"Command (Chat) Window"窗口。https://file1.elecfans.com/web3/M00/55/6F/wKgZPGnm8s2ANdajAAA_30nHj9w091.png
在窗口中输入数据,例如"Tronlong",再按回车键。https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8taAGYFAAACXJ_OISTU847.png
单板机调试串口终端将会打印接收到的数据。https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm88GAC-Y8AAAg2HNZrco821.png
2.单板机发送
执行如下命令,单板机通过RS-232串口发送数据至上位机,数据已在程序中定义。Target# ./uart_rw -d /dev/ttyS1 -w -s 8https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm88iAPbPtAAALKl9vxH4675.png
RS-232串口终端将会打印接收到的数据,如下图所示。https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm89OAYfYgAAAK8U_zf68207.png
(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接口,硬件连接如下图所示。https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm89yAFuyQACtIPst-3Tc593.png
执行如下命令,进行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)串口初始化函数。https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm8-uAIicIAAD6CT9hDP8136.pnghttps://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm8-uALYXQAABJx1PZZ5A645.png
(2)串口读写函数。https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm9ASAMfyJAAA0PIkC6Rg700.png

https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm9ASAYm2YAADXZtkDBv4825.png

https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm9ASAfBXqAACO8YoVTTI066.png

https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm9ASANFmUAAC60-6gDBg470.png

https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm9BOAPfW-AADDFS2GPZU917.png(3)回环测试。https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm9BOAV6GjAACgmaixm4c389.png

https://file1.elecfans.com/web3/M00/55/6D/wKgZO2nm9BOAV6GjAACgmaixm4c389.png
(4)相关逻辑。https://file1.elecfans.com/web3/M00/55/70/wKgZPGnm9CiAOzByAABwQjfSzpc324.png
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!

页: [1]
查看完整版本: RK3576 单板机 C/Python/MQTT 应用开发手册(二)

Baidu
map