将 Waveshare 高精度 AD/DA 板 (ADS1256) 连接到 DE10-Nano 套件

问题描述

我目前正在开展一个心电图项目,但在将 Waveshare 高精度 AD/DA 板(具有 ADS1256 ADC 且旨在与 RPI 配合使用)与 Terasic DE10-Nano 套件一起使用时遇到了一些困难.

我在 Qsys 中使用 Altera SPI Master 外设,设置如下:

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

对于其余所需的信号,我使用的是 Avalon PIO:

  • DRDY(输入)
  • RST(输出)
  • PWR(输出)

此外,还有一个 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

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

解决方法

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...