适用于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
相关产品推荐
相关产品推荐

