0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微RK3506 Flexbus技术开发指南,从原理、内核配置到测试的完整攻略

触觉智能 2026-03-14 07:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现代工业数据采集与控制系统中,高效、可靠、实时的数据传输是构建高性能嵌入式系统的关键。瑞芯微RK3506芯片平台集成的硬件级FlexBus并行总线,为实现多通道、高采样率的应用提供解决方案。

图片

本文基于触觉智能的RK3506核心板/开发板,介绍FlexBus总线的技术架构、设备树配置、驱动实现与测试方法,为嵌入式开发者提供从理论到实战的一站式指南。

FlexBus简介

FlexBus是一种高速、并行、可配置的外部总线接口,主要用于芯片与外部设备之间进行高速数据交互,是嵌入式 / 工业控制里非常关键的通信接口

  • FlexBus与RK3506技术特性

瑞芯微RK3506定位高性能工业控制与数据采集领域设计的专用SoC,具备以下核心特性:

  • 异构多核架构
  • 3核Cortex-A7核与Cortex-M0实时协处理器协同工作,实现任务分离与实时响应。
  • 集成高速FlexBus 总线
  • 支持并行数据传输,适用于多通道同步采集。
  • 双系统协同架构
  • 实现实时数据采集与应用处理的硬件隔离。
  • 工业级可靠性
  • 工作温度范围−40℃∼85℃,支持强抗干扰设计与电磁兼容性优化。
  • 丰富外设接口
  • SPI、I2CUART、PWM等,便于系统扩展。

触觉智能-瑞芯微硬件方案商,提供RK3506核心板、开发板/主板硬件解决方案。

  • FlexBus技术优势

FlexBus技术优势可总结为以下4点:

  • 确定性实时传输
  • (1)硬件级并行传输,消除软件协议栈延迟。
  • (2)专用 DMA 通道,实现零拷贝数据传输。
  • (3)中断响应时间<1μs(微秒),满足高速控制与采集需求。
  • 数据完整性保障
  • (1)内置硬件校验机制(如 CRC)。
  • (2)支持自动错误检测与数据重传。
  • (3)数据同步与时间戳对齐,确保时序一致性。
  • 系统可扩展性
  • (1)支持多设备级联,灵活扩展采集通道。
  • (2)可配置的时钟与数据传输速率。
  • (3)标准化的设备树接口,便于驱动开发与集成。
  • 工业环境适应性
  • 宽温工作范围+强抗干扰设计,通过 EMI/EMC测试,适应恶劣环境。支持长距离传输与信号完整性保持。
  • FlexBus实现的框图

FlexBus构成了系统内部的高速数据通道,连接Cortex-M0协处理器与外部数据采集设备(如 AD7616),实现低延迟、高吞吐量的并行数据传输。

图片
  • 典型应用场景

瑞芯微RK3506平台集成的硬件级FlexBus并行总线,可广泛应用于工业过程监控、科学仪器测量、自动化测试系统及医疗设备监测等多种高性能实时场景。

FlexBus 数据采集模式使用教程

  • 内核配置与设备树修改

根据触觉智能RK3506网盘下的SDK,修改多个配置。

(1)引脚配置rk3506-pinctrl.dtsi

目录kernel/arch/arm/boot/dts/rk3506-pinctrl.dtsi,修改内容如下:

@@ -358,13 +358,13 @@ flexbus0_clk_pins: flexbus0-clk-pins { flexbus0_d0_pins: flexbus0-d0-pins { rockchip,pins = /* flexbus0_d0 */ - <1 RK_PD3 3 &pcfg_pull_none>; + <1 RK_PD3 3 &pcfg_pull_up>; }; /omit-if-no-ref/ flexbus0_d1_pins: flexbus0-d1-pins { rockchip,pins = /* flexbus0_d1 */ - <1 RK_PD2 3 &pcfg_pull_none>; + <1 RK_PD2 3 &pcfg_pull_up>; }; /omit-if-no-ref/ flexbus0_d2_pins: flexbus0-d2-pins {

(2)FlexBus控制器节点配置rk3502.dtsi

目录arch/arm/boot/dts/rk3502.dtsi,修改内容如下:

@@ -1237,6 +1237,12 @@ flexbus: flexbus@ff880000 { rockchip,grf = <&grf>; status = "disabled"; + flexbus_ad7616_par_hw: ad7616 { + compatible = "rockchip,flexbus-ad7616-par-hw"; + #io -channel-cells = <0>; + status = "disabled"; + }; + flexbus_adc: adc { compatible = "rockchip,flexbus-adc"; #io -channel-cells = <0>;

(3)启用板级设备树ido-evb3506-v1a-nand.dtsi

目录arch/arm/boot/dts/ido-evb3506-v1a-nand.dtsi,修改内容如下:

@@ -8,6 +8,7 @@ #include #include #include "rk3506.dtsi" + #include / { model = "Rockchip RK3506 IDO EVB3506 V10 Board"; @@ -633,3 +634,22 @@ &usb20_otg1 { dr_mode = "host"; status = "okay"; }; + +&flexbus { + rockchip,flexbus0-opmode = ; + rockchip,flexbus1-opmode = ; + status = "okay"; +}; + +&flexbus_ad7616_par_hw { + pinctrl-names = "default"; + /* flexbus0_d0: RD, flexbus0_d1: CS */ + //pinctrl-0 = <&flexbus0_d0_pins &flexbus0_d1_pins + pinctrl-0 = <&flexbus1_clk_pins &flexbus1m4_pins + &flexbus1_d0_pins &flexbus1_d1_pins &flexbus1_d2_pins + &flexbus1_d3_pins &flexbus1_d4_pins &flexbus1_d5_pins + &flexbus1_d6_pins &flexbus1_d7_pins &flexbus1_d8_pins + &flexbus1_d9_pins &flexbus1_d10_pins &flexbus1_d11_pins + &flexbus1_d12_pins &flexbus1_d13_pins &flexbus1_d14_pins + &flexbus1_d15_pins>; + status = "okay"; +}; +&uart4 { + status = "disabled"; +}; + +&uart2 { + status = "disabled"; +}; + +&can0 { + status = "disabled"; +}; + +&saradc { + status = "disabled"; +};

(4)设备数修改

修改kernel/drivers/iio/adc/Makefile:

obj-$(CONFIG_RCAR_GYRO_ADC) += rcar-gyroadc.o obj-$(CONFIG_RN5T618_ADC) += rn5t618-adc.o obj-$(CONFIG_ROCKCHIP_FLEXBUS_ADC) += rockchip-flexbus-adc.o + obj-$(CONFIG_ROCKCHIP_FLEXBUS_ADC) += rockchip-flexbus-ad7616-par-hw.o obj-$(CONFIG_ROCKCHIP_SARADC) += rockchip_saradc.o obj-$(CONFIG_RICHTEK_RTQ6056) += rtq6056.o obj-$(CONFIG_RZG2L_ADC) += rzg2l_adc.o

修改kernel/include/linux/mfd/rockchip-flexbus.h:

#define FLEXBUS_DST_WAT_LVL_SHIFT 0 /* Bit fields in IMR, RISR, ISR and ICR */ + #define FLEXBUS_CCI BIT(31) #define FLEXBUS_DMA_TIMEOUT_ISR BIT(13) #define FLEXBUS_DMA_ERR_ISR BIT(12) #define FLEXBUS_DMA_DST1_ISR BIT(11)

新建kernel/drivers/iio/adc/rockchip-flexbus-ad7616-par-hw.c,附件请关注触觉智能获取。

测调整频率参数

加载驱动后,会产生/sys/bus/iio/devices/iio:device0节点,进行修改采样频率:

root@rk3506-buildroot:/root# ls /sys/bus/iio/devices/iio:device0 in_voltage_raw power in_voltage_sampling_frequency subsystem name uevent of_no de waiting_for_supplier

获取 ADC命令如下:

cat /sys/bus/iio/devices/iio:device0/in_voltage_raw

设置采样频率,命令如下:

echo 1000000 > /sys/bus/iio/devices/iio\:device0/in_voltage_sampling_frequency

测试方法与示例

以下为测试脚本示例,用于连续读取多通道ADC数据:

# init 1MHz clk echo 1000000 > /sys/bus/iio/devices/iio\:device0/in_voltage_sampling_frequency # reset 1 gpioset gpiochip0 2=1 sleep 0.3 gpioset gpiochip0 3=1 gpioset gpiochip1 18=1 gpioset gpiochip1 19=1 sleep 0.1 # convst 1 -> 0 gpioset gpiochip0 4=1 sleep 0.01 gpioset gpiochip0 4=0 sleep 0.1 if [ $1 -eq 3 ]; then # cs 0 # adc3_cs 0 gpioset gpiochip1 23=0 # adc2_cs 1 gpioset gpiochip1 22=1 # adc1_cs 1 gpioset gpiochip1 21=1 # adc0_cs 1 gpioset gpiochip1 20=1 elif [ $1 -eq 2 ]; then # cs 0 # adc3_cs 0 gpioset gpiochip1 23=1 # adc2_cs 1 gpioset gpiochip1 22=0 # adc1_cs 1 gpioset gpiochip1 21=1 # adc0_cs 1 gpioset gpiochip1 20=1 elif [ $1 -eq 1 ]; then # cs 0 # adc3_cs 0 gpioset gpiochip1 23=1 # adc2_cs 1 gpioset gpiochip1 22=1 # adc1_cs 1 gpioset gpiochip1 21=0 # adc0_cs 1 gpioset gpiochip1 20=1 elif [ $1 -eq 0 ]; then # cs 0 # adc3_cs 0 gpioset gpiochip1 23=1 # adc2_cs 1 gpioset gpiochip1 22=1 # adc1_cs 1 gpioset gpiochip1 21=1 # adc0_cs 1 gpioset gpiochip1 20=0 fi sleep 0.1 #触发采样并读取数据 cat /sys/bus/iio/devices/iio:device0/in_voltage_raw dmesg -c

观察内核打印(只需要关注0x00-0x0f的值):

[ 1182.468572] 0x00: 0x0c00 [ 1182.468639] 0x01: 0x141a [ 1182.468668] 0x02: 0x2ba4 [ 1182.468695] 0x03: 0x2bbd [ 1182.468722] 0x04: 0x2ba1 [ 1182.468748] 0x05: 0x2bd1 [ 1182.468774] 0x06: 0x2ba4 [ 1182.468800] 0x07: 0x2bcd [ 1182.468826] 0x08: 0x2bba [ 1182.468852] 0x09: 0x2bca [ 1182.468879] 0x0a: 0x2ba8 [ 1182.468905] 0x0b: 0x141a [ 1182.468931] 0x0c: 0x2ba4 [ 1182.468957] 0x0d: 0x2bbd [ 1182.468983] 0x0e: 0x2bbd [ 1182.469010] 0x0f: 0x2ba1

FlexBus ADC 寄存器与通道对应关系如下:

图片

电压计算公式:

Vin = (raw÷32768)×5.0v

比如测试日志0x01: 0x141a,表示A0通道。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    100

    文章

    7976

    浏览量

    557376
  • flexbus
    +关注

    关注

    0

    文章

    4

    浏览量

    3195
  • RK3506
    +关注

    关注

    0

    文章

    104

    浏览量

    1048
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    米尔多核异构低功耗RK3506核心板重磅发布

    近日,米尔电子发布MYC-YR3506核心板和开发板,基于国产新一代入门级工业处理器RK3506
    发表于 05-16 17:20

    米尔基于RK3562与RK3506开发板有什么区别?

    后可直接在产品中应用。 具体来看,我这款开发板型号是基于RK3506J,512MB的内存和8GB的存储,支持工业级宽温度,此外它还有
    发表于 07-11 09:32

    【米尔RK3506国产开发板评测试用】开箱体体验

    很高兴今天收到了米尔科技的RK3506开发板,下面是开箱体验,后期的测试使用中将会做详细的测试和试用。 1.开箱,包含以下: RK3506
    发表于 07-30 01:06

    资源受限下HMI2秒启动系统,米尔RK3506开发板×LVGL Demo演示

    、轻、快 MYIR 基于 RK3506 推出的 MYC-YR3506 核心板(搭配 MYD-YR3
    发表于 04-24 15:12

    嵌入式VS-RK3399板卡Linux WIFI BT开发指南

    `嵌入式VS-RK3399板卡Linux WIFI BT 开发指南本文档主要介绍基于 Rockchip 平台的 WIFI、BT 的
    发表于 09-18 10:03

    RK3506各型号该怎么选?全新工业芯片介绍 触觉智能出品

    RK3506各型号该怎么选?全新工业芯片介绍,还将推出与星闪技术相结合的RK3506星闪网
    的头像 发表于 12-25 10:27 3156次阅读
    <b class='flag-5'>RK3506</b>各型号该怎么选?<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>全新工业芯片介绍 触觉智能出品

    RK3506开发板之Qt应用开发手册(上) 深圳触觉智能出品,嵌入式方案商

    RK3506开发板必备攻略之Qt应用开发手册(
    的头像 发表于 04-28 17:16 1815次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发</b>板之Qt应用<b class='flag-5'>开发</b>手册(上) 深圳触觉智能出品,嵌入式方案商

    RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!

    RK3506开发板Ethercat主站适配开发详细攻略
    的头像 发表于 05-09 15:57 2073次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发</b>板Ethercat主站适配<b class='flag-5'>开发</b>详细<b class='flag-5'>攻略</b>,实测微秒级抖动延迟!

    米尔基于RK3506核心板开发

    MYC-YR3506核心板及开发板新一代入门级国产工业处理器RK3506,3核A7+单核M0多核异构RK3506B:3*Cortex-A7@1.5 GHz,Cortex-M0@200M
    发表于 05-15 16:00 16次下载

    有奖丨米尔 RK3506开发板免费试用

    米尔与合作发布的新品基于RK3506应用
    的头像 发表于 06-19 08:04 1364次阅读
    有奖丨米尔 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发</b>板免费试用

    RK3506 vs NXP i.MX6ULL

    在关键技术国产化浪潮中,国产芯片正以更高性能、更优成本及自主可控优势实现对海外方案的成功替代。今天触觉智能拿出自家新品RK3506核心
    的头像 发表于 06-19 16:26 1635次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b> vs NXP i.MX6ULL

    有奖丨米尔 RK3506开发板免费试用来啦!

    米尔与合作发布的新品基于RK3506应用
    的头像 发表于 07-10 08:03 1303次阅读
    有奖丨米尔 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>开发</b>板免费试用来啦!

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选RK3
    的头像 发表于 09-11 16:26 4071次阅读
    <b class='flag-5'>RK3506</b><b class='flag-5'>开发</b>板Linux<b class='flag-5'>开发</b>板极致性价比之选

    2025开发者大会万象奥科展出RK3506邮票孔核心板

    2025开发者大会万象奥科展出RK3506邮票孔核心板2025年7月17-18日,第九届
    的头像 发表于 10-10 14:10 1822次阅读
    2025<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>开发</b>者大会万象奥科展出<b class='flag-5'>RK3506</b>邮票孔核心板

    RK3506核心板/开发板SARADC模拟采集实战,软硬件实操必看攻略

    本文基于触觉智能RK3506核心板/开发板,介绍SARADC采集模拟信号使用攻略,包括硬件、驱动层的修改。
    的头像 发表于 10-30 11:58 1188次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b>核心板/<b class='flag-5'>开发</b>板SARADC模拟采集实战,软硬件实操必看<b class='flag-5'>攻略</b>!