You need to enable JavaScript to run this app. 适用于RPI的微雪ADS1256高精度AD/DA板接入DE10-Nano的DRDY异常排查
优惠活动
大模型
产品
解决方案
定价
更多

适用于RPI的微雪ADS1256高精度AD/DA板接入DE10-Nano的DRDY异常排查

ECG项目外设适配问题

需将适配树莓派的微雪高精度AD/DA板(板载ADS1256 ADC)接入友晶DE10-Nano开发套件,目前存在外设适配故障。

现有系统配置

Qsys中Altera SPI Master参数

  • SCLK速率:20000
  • 数据宽度:8位
  • 移位方向:MSB先出
  • 时钟极性:0
  • 时钟相位:1
  • 无同步器级数

DRDY、RST、PWR等信号未接入SPI外设,通过Avalon PIO实现方向配置:DRDY设为输入,RST、PWR设为输出。系统搭载Nios II CPU,使用alt_avalon_spi_command发送SPI指令,通过IOWR_ALTERA_AVALON_PIO_DATA控制PIO模块管脚电平。

硬件接线映射

AD/DA引脚    树莓派对应引脚  DE10-Nano GPIO  引脚位置    电平标准     片上HDL信号       信号方向  逻辑分析仪通道
==========================================================================================================
3v3          3v3             3v3                                                                  
GND          GND             GND                                                                             
MOSI         GPIO10          GPIO_0(0)       PIN_V12     3.3V LVTTL  SPI_MOSI          OUT        D0                  
MISO         GPIO9           GPIO_0(2)       PIN_W12     3.3V LVTTL  SPI_MISO          IN         D1 
SCK          GPIO11          GPIO_0(4)       PIN_D8      3.3V LVTTL  SPI_SCK           OUT        D2 
CS_PIN       GPIO22          GPIO_0(1)       PIN_E8      3.3V LVTTL  SPI_SS_n(0)       OUT        D3 
RST          GPIO18          GPIO_0(3)       PIN_D11     3.3V LVTTL  ADS_RST           OUT        D4  
DRDY         GPIO17          GPIO_0(6)       PIN_AE15    3.3V LVTTL  WAVESHARE_DRDY    IN         D5 

故障详情

核心故障为DRDY信号始终未被触发:ADS1256正常工作逻辑为DRDY拉低后方可读取转换数据,该信号需搭配上拉电阻维持默认高电平。已尝试两种上拉方案,均未解决问题:

  • 配置DE10-Nano对应GPIO引脚的内部上拉
  • 外接10K/56K上拉电阻

按照设计流程,需先完成ADS1256复位,等待DRDY拉低后读取芯片ID,再完成后续寄存器配置。当前参考通用ADS1256驱动的复位流程实现设备复位,复位代码如下:

/* RESET */
IOWR_ALTERA_AVALON_PIO_DATA( WAVESHARE_ADS_RST_BASE, HIGH );
usleep(200);
IOWR_ALTERA_AVALON_PIO_DATA( WAVESHARE_ADS_RST_BASE, LOW );
usleep(200);
IOWR_ALTERA_AVALON_PIO_DATA( WAVESHARE_ADS_RST_BASE, HIGH );

复位完成后执行DRDY等待逻辑,无论上拉方案如何配置,等待始终超时。对应的等待函数代码如下:

alt_u8 ADS1256_wait_DRDY( void ) {
    for( int i=0; i<50; i++ ) {
        alt_u8 drdy = ADS1256_DRDY_get_level();
        if ( drdy == LOW ) {
            printf( "DRDY asserted\n" );
            return 0;
        } else {
            usleep( DELAY_DRDY );
        }
    }
    printf( "Timeout: DRDY not asserted.\n" );
    return -1;
}

调试过程中已使用逻辑分析仪抓取各管脚电平波形,现需该场景下的适配配置指导。


内容的提问来源于stack exchange,提问作者fin121

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 14:24:03