
清空记录
历史记录
取消
清空记录
历史记录

驱动严格遵循Linux内核分层设计,分为硬件初始化、时序配置、DMA传输、中断处理、接口读写、GPIO控制、设备生命周期管理七大模块。各模块解耦独立,出了问题能一眼定位到是哪一层。
驱动定义标准电压采集通道,适配AD7616双通道同步采样特性:
IIO_CHAN_INFO_RAW原始数据读取接口,上层应用可直接调用;驱动内置AD7616官方并行读取时序表ad7616_cs_rd[],严格对标芯片手册并行读写时序规范:精准配置CS片选、RD读取、数据建立、保持延时,匹配FlexBus高速时钟工作场景。
通过rockchip_flexbus_ad7616_par_hw_fill_src_buf函数,自动将时序参数填充至DMA发送缓冲区,实现硬件自动输出时序,无需CPU干预,彻底解放算力。
这是"硬件时序替代软件模拟"的落点——时序由硬件按表输出,不受调度影响,抖动自然就下来了。
驱动核心采用FlexBus+DMA双硬件加速架构,这是高速采集的关键:
驱动重写FlexBus中断服务函数rockchip_flexbus_ad7616_par_hw_isr,覆盖所有传输异常场景:
配合上篇提到的FLEXBUS_CCI(BIT(31))中断清除位,中断回调与异常复位终于有了底层寄存器支撑——这也是"系统莫名卡死"这类问题的终点。
驱动适配标准接口,无需自定义应用层协议:
read_raw读取双通道AD采样值,映射缓冲区数据;Linux侧,系统会自动生成/sys/bus/iio/devices设备节点,直接读写原始数据、配置采样频率;在OneOS实时侧,采集结果则通过RPMsg通道交给应用侧。两条路径,同一套数据。
驱动适配AD7616必备控制引脚,支持设备树灵活配置:
(1)CONVST转换启动引脚,可控触发AD采样转换;
所有GPIO均采用可选式适配,无硬件接线时不报错,兼容性极强。
Probe/Remove函数实现完整的设备初始化与资源释放:
严格校验FlexBus工作模式,非ADC/DAC模式直接报错退出,规避硬件配置错误。
ad7616_cs_rd[] 的建立/保持延时必须严格对标AD7616手册并行时序,速率越高越不能"靠感觉调";量程换算:原始码值到工程值(电压/电流)的换算系数,应在方案定型时用信号源标定一次,把采集板通道误差写进校准表;采样周期与抖动:采样周期由FlexBus时钟分频决定,实测抖动应稳定在微秒级;若抖动明显变大,优先排查是否有其他外设抢占FlexBus、或中断被延迟响应。驱动已内置分级错误日志,下面这张表基本覆盖了现场90%的问题:
FLEXBUS_CCI(BIT(31))位定义已补齐 | ||
/data/waveforms/),在PC电脑侧做频率、电压等参数转换;RPMsg通信,数据落盘与界面显示互不阻塞。把三条路线放在一起看,差异很明显:
| FlexBus硬件时序 | |||
| DMA硬件搬运 | |||
| 极低,仅读结果 | |||
| 无需外挂 | |||
| 低 | |||
| 低(标准接口+ SDK) | |||
| 双通道硬件同步 | |||
| 实测抖动1.029µs |
核心结论:本方案把"时序输出+数据搬运"这两件最吃资源的事,交给FlexBus和DMA去干,主控只负责读结果。相比传统架构,既省了外挂芯片的成本,又缩短了数据链路、提升了同步性。
摒弃软件模拟时序,依托FlexBus硬件时序+DMA搬运,采样速率与稳定性远超传统SPI/软件GPIO采集方案,完全满足工业高频实时采集需求。
覆盖超时、溢出、传输错误等全异常场景,日志可追溯、故障可自愈,满足工业设备7×24小时不间断运行要求。
OneOS负责实时采集、Linux负责界面与应用,AMP多核异构让"实时"和"交互"互不干扰,一套主控同时满足两类需求。
Linux原生IIO子系统,无需自定义应用层协议,系统生成/sys/bus/iio/devices设备节点,直接读写原始数据、配置采样频率,开发门槛极低。
RK3506可直接搭建高速高精度工业数据采集终端,适配场景包括:
继电保护装置:工频电压电流同步采样,为保护判据提供高实时数据;
电能计量设备:多路电压电流通道同步采集,支撑电量计算;
电网监测/运维终端:多路信号同步监测,支撑状态评估与异常告警;
电力故障录波装置:工频单周期内多点高速采样,完整还原故障波形;
智能传感器/状态监测:振动、温度、环境量等多路模拟量采集;
仪器仪表/工业测控/物联网边缘采集节点。
回顾这套方案,值得复用的经验有三条。
第一,"用主控替代外挂"的前提,是先把手头的总线用透。RK3506的FlexBus本身就是为高速并行外设准备的,配合AD7616构成"轻量主控+并行ADC"的直连架构,才有机会省掉FPGA/MCU。选型时先看总线能力,再看要不要外挂芯片,顺序反了成本就压不下来。
第二,实时性问题要用架构解决,而不是靠调优。硬件时序+DMA解决"采集侧"的确定性,AMP双系统解决"实时与应用互不干扰",这两件事都是架构层面的选择。等系统跑起来再去调调度参数,往往事倍功半。
第三,实测数据是方案可信度的唯一凭据。50Hz精准对应证明采集正确,1.029µs抖动证明实时可靠,而且都在模拟电磁干扰条件下取得——对工业客户而言,这比任何参数罗列都有说服力。
对RK3506开发者而言,这套方案实现了开箱即用的工业级高速AD采集能力,大幅降低工业测控设备的开发难度,让轻量化ARM主控也能胜任高精度、高实时性的工业采集场景。到这里,这套方案从硬件架构到驱动实现、从调试踩坑到实测数据,就完整拆完了。
相关资料,请关注深圳触觉智能公众号,添加官方客服13423856106,另提供近80GB软硬件资料与Demo。
