这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » RV1103芯片-------微型Linux开发板LuckFoxPicoPlus

共2条 1/1 1 跳转至

RV1103芯片-------微型Linux开发板LuckFoxPicoPlus开发实践

高工
2025-04-15 21:00:23     打赏

1.开发板初体验

LuckFox Pico Plus是一款基于瑞芯微RV1103的开发板,并配有微型Linux开发板,其主旨是向开发者提供一个简单且高效的开发平台。它通过多种接口方式,如MIPI CSI、GPIO、UART、SPI、I2C、USB等,便于快速进行开发与调试。

LuckFox Pico Plus以体积小巧而著称,其外观如图1和图2所示。

图片

图1 开发板正面

图片

图2 开发板背面

LuckFox Pico Plus与LuckFox Pico 的主要区别在于多出一个网络接口和一个系统存储器件,故LuckFox Pico Plus可以直接使用出厂以固话在存储器件上的系统,而无需将系统固件镜像到TF卡上,这样在使用时就方便了许多。

此外,所配置的RJ45接口也易于进行网络连接。

开发板的引脚资源是对外开放的,并由焊盘来引出,其引脚的排列关系见图3所示。

图片

图3 引脚排列顺序

2.使用ADB命令访问开发板

LuckFox Pico 是一款基于瑞芯微 RV1103 芯片具有高性价比的微型 Linux 开发板,旨在为开发者提供一个简单且高效的开发平台。近几年这种入门级的Linux开发板非常流行,几十块钱就可以玩转Linux了,这是早些年难以想象的。

LuckFox Pico Plus自带系统存储器件,所以插到电脑上就可以使用,而无需将系统固件镜像到TF卡上,非常方便。今天介绍一下如何使用ADB命令访问开发板。

ADB全称(Android Debug Bridge),是谷歌的一个通用命令行工具,可以做为Android与PC端连接的一个桥梁。用户可以通过ADB在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。ADB现在已经成为嵌入式Linux系统的标配。我使用的是谷歌原版的ADB进行测试。厂商也提供了一种修改过的ADB:https://pan.baidu.com/s/1wV69XhoRrvBFjhduUWZwdQ,提取码:jwz0。

登录开发板

将板子通过USB线连接到电脑上,然后在命令行输入adb devices查看设备,这时能看到一个USB设备已经添加到系统中,其中的b8e84e6881417032就是我所使用的开发板的ID。这个ID每个板子应该都不同。

图片

可以使用ADB shell命令登录进入板子,前面要用-s加上开发板的ID。对于我们的板子输入:

adb -s b8e84e6881417032 shell

(左右移动查看全部内容)

图片

登录进入板子后,就可以使用各种USB命令进行操作了。

文件传输

如果希望传输文件到开发板,可以使用push命令,如:

adb -s b8e84e6881417032 push ./write.jpg /root

(左右移动查看全部内容)

图片

如果希望从开发板传输文件到本机,可以使用pull命令,如:

adb -s b8e84e6881417032 pull /userdata/image.bmp .

(左右移动查看全部内容)

图片

至此我们已经完成了对开发板的最基本操作,后面就可以展开进一步的工作了。

3.串行数码管的显示驱动

前面介绍了GPIO口的所用,有了它就为硬件控制和使用提供了极大的可能。

为了便于数据的显示,这里对串行数码管显示模块进行显示驱动的尝试。

图片

图1 显示效果

之所以选取这款串行数码管显示模块,是因为它占用的引脚资源比较少。

该模块是以MAX7219为控制芯片,由它将串行信号转换为并行信号来驱动数码管的显示。另外,它具有数据锁存功能,从而可以有效地节省MCU的资源消耗。

此外,它的亮度高、抗外部信号干扰强,这都是它较为出色的特点。

4.秒计数器与电子时钟

前面介绍了串行数码管的显示驱动,那么如何将其应用到实际中呢?我们可以将它与sleep延时函数组合在一起来实现一个秒计数器,计时范围为0~99秒。

图片

在执行程序后,其显示效果如图1所示。

图片

图1 计时效果

此外,如果采用日期数据截取的方式还可实现电子时钟的计时功能。

数码管的显示功能是为电子时钟服务的,那该如何获取计时值呢

5.交叉编译U8G2点亮OLED

手头上正好有几块1.3寸OLED屏幕,原先都是使用单片机点亮的,这次尝试一下使用linux系统点亮一下,这里借用了网上的开源OLED库,这个库拿来驱动这种小屏幕最适合不过了,而且自带了屏幕的初始化参数,直接调用就好了。

第一步:网上已经有人移植好了源代码,我们直接去这里git一份即可

git clone --recurse-submodules https://github.com/wuhanstudio/u8g2-arm-linux.git

(左右移动查看全部内容)

第二步:配置编译工具链

图片

其实到这里已经可以编译了,我们可以直接make即可在项目文件夹下就会生成bin目录,里面就是我们的可执行文件

图片

所以我们需要在u8g2_hw_i2c.c里面将I2C_BUS改为3或者4

第三步:将得到的可执行文件传输到板子上面去,我这里使用adb命令发送

adb -s 172.32.0.93:5555 push /home/xiang/linux/LuckFox/LuckFoxPicoPlus/app/u8g2-arm-linux/bin/u8g2_hw_i2c /userdata

图片

可以看到已经发送完成了。

6.使用SPI驱动WS2812B

前面把开发环境全部搭好,工具也都准备好了,这次就来做点小demo,正好手上有一个WS2812B的小灯条,上面有16颗灯珠,就想到用Luckfox Pico来控制它。灯条的控制只需要接5V的电源以及SPI主机的MOSI引脚。5V就接到VBUS的USB供电引脚即可。

图片

图片

WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和可编程定电流控制部分,有效保证了像素点光的颜色高度一致。数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅受限信号传输速度要求。这个灯现在应用非常广泛,其尺寸如下和引脚。

图片

图片

图片

芯片的供电电压还是有一些要求的,最低要3.7V,为了能更好地驱动它,还得需要用板子上的5V电源。

图片

而数据通信则用3.3V的电平,根据其电器参数表的描述,3.3V的高电平也足够其识别了。

图片

电路设计上,只需要按照如下的串联即可

图片

WS2812B的数据传输采用单线方式,如下为其数据传输时间、时序波形和数据传输方法,可以看到,其数据1和0,分别采用不同的高电平时间来决定。根据时间值,可以估算,数据1和0的总时间可以相同,而高电平时间分别为总时间的2/3和1/3即可,总时间可以设定为1.25uS,相当于是一个约800KHz的方波,只是占空比分别是2/3和1/3来分别待变1和0。但我们采用的是SPI的方式驱动,该方式驱动需要控制每个字节的8位中连续置1的位的个数来实现占空比的调节,根据下面的时间,可以分别采用5bit位和2bie位来表示数值1和数值0,也就是5/8和2/8,相当于781nS和313nS,正好能符合时序所要求的T1H和T0H的时间。

.......

灯条显示的效果:

图片

图片

图片





关键词: RV1103    

专家
2025-04-16 20:25:19     打赏
2楼

微型Linux有什么资源上的最低要求吗?是否有普适性?


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]