1

我目前正在做一个心电图项目,我在使用带有 Terasic DE10-Nano 套件的 Waveshare 高精度 AD/DA 板(它有一个 ADS1256 ADC 并且旨在与 RPI 一起使用)时遇到了一些困难。

我在 Qsys 中使用具有以下设置的 Altera SPI 主外设:

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

对于其余需要的信号,我正在使用 Avalon PIO:

  • DRDY(输入)
  • RST(输出)
  • 压水堆(输出)

此外,还有一个 Nios2 CPU,alt_avalon_spi_command用于发送 SPI 命令和IOWR_ALTERA_AVALON_PIO_DATA控制 PIO。

我遇到的问题是 DRDY 信号从未被断言(预计在能够读取数据之前它会变为低电平)。我知道这个信号应该与上拉电阻一起使用;我尝试了以下方法,但都没有奏效:

  1. 在 DE10-Nano GPIO 引脚上配置内部上拉电阻
  2. 使用外部上拉电阻 (10K/56K)

我知道在配置之前我应该​​能够读取 ADS1256 的芯片 ID。我首先重置设备,按照: https ://github.com/waveshare/High-Precision-AD-DA-Board/blob/master/Jetson%20nano/ADS1256/C/obj/ADS1256.c#L39

    /* 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;
}

我正在使用 Hobby Components Logic Analyser 进行探测。引脚连接详述如下:

AD/DA        RPI PIN       DE10-Nano   Location    Standard    HDL Signal        Direction  Logic Analyzer
==========================================================================================================
3v3          3v3           3v3                                                                  
GND          GND           GND                                                                             
MOSI         19 (GPIO 10)  GPIO_0(0)   PIN_V12     3.3V LVTTL  SPI_MOSI          OUT        D0                  
MISO         21 (GPIO 9)   GPIO_0(2)   PIN_W12     3.3V LVTTL  SPI_MISO          IN         D1 
SCK          23 (GPIO 11)  GPIO_0(4)   PIN_D8      3.3V LVTTL  SPI_SCK           OUT        D2 
P3 (CS_PIN)  15 (GPIO 22)  GPIO_0(1)   PIN_E8      3.3V LVTTL  SPI_SS_n(0)*      OUT        D3 
P1 (RST)     12 (GPIO 18)  GPIO_0(3)   PIN_D11     3.3V LVTTL  ADS_RST           OUT        D4  
P0 (DRDY)    11 (GPIO 17)  GPIO_0(6)   PIN_AE15    3.3V LVTTL  WAVESHARE_DRDY    IN         D5 

逻辑分析仪输出如下: PulseView

非常感谢任何有关如何设置的帮助。抱歉,如果我的帖子不是很好,我对在这些论坛上发帖还很陌生。

4

1 回答 1

1

一些引脚分配不正确。在修复这些问题并使用不同的微控制器而不是 AD/DA 板进行测试后,DRDY 被断言,但 waveshare 板仍然存在问题。它看起来像是特定于电路板的问题,因此我已联系制造商寻求帮助。

于 2021-03-23T09:58:50.830 回答