外观
flexbus ad7606 示例
2025-10-29
本文将详细介绍如何通过 FlexBus 总线实现设备通信,以 AD7606 模数转换器(ADC) 为例演示多通道采样数据的读取,帮助读者掌握 FlexBus 总线的标准通信流程及外设控制方法。
AD7606 简介
AD7606 是一款多通道同步采样的高精度 ADC,支持并行总线接口(包括标准并行和串行模式),能够在高达 200kSPS 的采样率下实现 16 位分辨率转换。 该器件内置输入模拟前端、采样保持电路和数字滤波器,适用于电力系统监测、工业测控和信号采集等场景。
AD7606 特性
- 同步采样,支持 8 通道 / 16 位分辨率
- 并行 / 串行接口可选(本文以 并行模式 为例)
- 内置 ±10V 输入范围,支持过采样比率配置
- 具备 BUSY、RESET、CONVST、CS 等控制信号
读取 AD7606 数据
本示例展示如何通过 FlexBus 接口 与 AD7606 建立通信,读取采样数据,确保 ADC 正常工作。
硬件连接
AD7606 数据格式
通过查阅 AD7606 的数据手册,可以了解到其并行接口输出为 16 位补码格式,一次采样会输出 8 个通道数据,每个通道占 16bit。 数据读取需在 BUSY 拉低 后,依次通过 FlexBus 总线读取。
创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
adc_sample.c
#define ADC_DEV_NAME "adc0" // 指定 ADC 设备 adc0
#define ADC_CH 5 // 指定 ADC 通道 5
#define REFER_VOLTAGE 2500 // AD7606的内部参考电压2500mV (2.5V)
#define AD7606_RANGE_IS_10V 0 // 根据硬件RANGE引脚设定:1=±10V,0=±5V
#if AD7606_RANGE_IS_10V
#define FULL_SCALE_MV 10000 // ±10V 量程
#else
#define FULL_SCALE_MV 5000 // ±5V 量程
#endif
static int adc_vol_sample(int argc, char *argv[])
{
// 查找设备 adc0
rt_adc_device_t adc = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if (!adc)
{
rt_kprintf("can't find %s\n", ADC_DEV_NAME);
return -RT_ERROR;
}
// 使能设备 adc0 通道5
rt_err_t ret = rt_adc_enable(adc, ADC_CH);
if (ret != RT_EOK)
{
rt_kprintf("enable ch%d fail: %d\n", ADC_CH, ret);
return ret;
}
// 读取 ad7606 通道5的数据
rt_int16_t raw_val = rt_adc_read(adc, ADC_CH);
rt_int32_t mv = ((rt_int32_t)raw_val * (rt_int32_t)FULL_SCALE_MV) / 32767;
mv += REFER_VOLTAGE;
if (mv >= 0)
{
rt_kprintf("ADC Channel %d: %d.%03d V\n", ADC_CH, mv / 1000, mv % 1000);
}
else
{
rt_kprintf(
"ADC Channel %d: -%d.%03d V\n", ADC_CH, (-mv) / 1000, (-mv) % 1000);
}
rt_adc_disable(adc, ADC_CH);
return RT_EOK;
}运行程序
开发板运行程序后,给 ad7606 的通道 5 施加 5V 的电压,然后在终端输入 adc_vol_sample 命令,结果如下:
msh />adc_vol_sample
ADC Channel 5: 5.017 V