This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP432-调试 器:MSP432P401R SPI 问题

Guru**** 2553390 points
Other Parts Discussed in Thread: ADS1292, ADS1292R

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1410859/msp432-debuggers-msp432p401r-spi-problem

器件型号:MSP432-调试 器
主题中讨论的其他器件:ADS1292R、ADS1292

工具与软件:

您好、Fellows、

我有一个大问题与红板 MSP432P401R ,我正在尝试配置它与模拟前端接口,这个设备使用 SPI 通信。
从器件的要求是... 微控制器应充当主控制器、时钟 CPOL = 0且 CPHA = 1。 我的时钟系统配置为24MHz (MCLK)和 SPI 时钟源12MHz (SMCLK)。

因此、SPI 时钟为500kHz (SPI 时钟=源 时钟/BRW => BRW=源 时钟/SPI 时钟)。 但不幸的是、系统发生了问题。
MOSI 行正确地发送了数据、但 MISO 行只给了我0xFF、所以这给了我一个想法、即它对代码的实现不当、我希望有人能帮助我解决这个问题。 我分享 SPI 集成代码和喜剧的屏幕截图。

void initialize_spi(void) {
    /*INITIALIZE PORT REGISTERS*/
    // 4. Configure SPI pins: P1.5 (SCLK), P1.6 (MOSI), P1.7 (MISO)
    P1->SEL0 |= (BIT5 | BIT6 | BIT7);   // Select primary module function for P1.5, P1.6, and P1.7
    P1->SEL1 &= ~(BIT5 | BIT6 | BIT7);  // Clear P1SEL1 for those bits to use SPI functionality

    /* set CLK and MOSI as outputs */
    P1->DIR |= (BIT5 | BIT6);
    P1->OUT |= (BIT5 | BIT6);

    /* set MISO as input */
    P1->DIR &= ~(BIT7);


    EUSCI_B0->CTLW1 |= EUSCI_B_CTLW0_SWRST;

    // 2. Configure eUSCI_B0 in SPI master mode, 3-pin SPI (no STE pin), synchronous mode
    EUSCI_B0->CTLW0 = EUSCI_B_CTLW0_SWRST      // Keep eUSCI in reset
                    | EUSCI_B_CTLW0_MST      // Master mode
                    | EUSCI_B_CTLW0_MSB        // MSB first
                    | EUSCI_B_CTLW0_SYNC       // Synchronous mode
                    | EUSCI_B_CTLW0_SSEL__SMCLK   // Use SMCLK (12 MHz)
                    | EUSCI_B_CTLW0_CKPL
                    | EUSCI_B_CTLW0_CKPH;      // Clock Phase: Data changed on the first clock edge, captured on the next (CPHA = 0)




    // 3. Set SPI clock divider for 500 KHz baud rate (12 MHz SMCLK / 24 = 1/2 MHz)
    EUSCI_B0->BRW = 24;  // Clock prescaler
    // 5. Take eUSCI_B0 out of reset mode
    EUSCI_B0->CTLW0 &= ~EUSCI_B_CTLW0_SWRST;
    EUSCI_B0->CTLW1 &= ~EUSCI_B_CTLW0_SWRST;

}


提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [quote userid="167486" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1410859/msp432-debuggers-msp432p401r-spi-problem mosi 行正确地发送了数据,但 miso 行只给了我0xFF,所以这给了我一个想法,这是它对代码的错误实施,

    您说 MOSI 线正确。 这意味着主器件在 MOSI 上发送正确的波形。 但是、观察波形、您的 CS 处于非活动状态。 您的从器件是否需要使用 CS 输入作为限定符? 如果您的从设备需要 CS 输入、则需要查看 CS 生成。 如果您的从设备不需要 CS、并且您认为 MOSI 波形正确、则需要查看从设备、了解其为何仅返回0xFF 而不响应主设备命令。 请注意、MSP432P 已停产多年。 不再对此器件提供 e2e 支持。   

    SDK 中有一个主 SPI 示例:

    C:\ti\simplelink_msp432p4_sdk_3_40_01_02\examples\nortos\MSP_EXP432P401R\driverlib\spi_3WIRE_inumining_data-master

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Charles:

    感谢您的支持。 是的,我知道这张卡已经停止,没有任何更多的支持此设备,但我的所有工作都在这个平台上完成,我只是想完成这项任务。 在未来的工作中,如果你有一些建议被欢迎,我将申请一个新的和更支持的设备。
    针对这个问题、我的应用需要一个有源 CS 引脚、我认为我的问题的根源是集成到 SPI 代码中、使时钟 CPOL = 0和 CPHA = 1的任务"我认为在集成之后、CS 引脚和 SCLK 将正确调整和工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    若想使 CPOL=0、则使用 CKPL=0。 若要使 CPHA=1、请使用 CKPH=0。

    SWRST 位于 CTLW0中、而不是 CTLW1中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!  

    感谢您的支持。 只需要问一个问题、从设备需要该配置、但如果是该配置。 时钟为 时钟"CPOL = 0且 CPHA = 0"、这有点奇怪。 不管怎样、我将配置更改为以下内容:

    void initialize_spi(void) {
         P1->SEL0 |= BIT5 | BIT6 | BIT7;  // set 4-SPI pin as second function
        P1->DIR  |= BIT5 | BIT6 ;
        P1->DIR  &= ~(BIT7);
    
        EUSCI_B0->CTLW0 |=  EUSCI_B_CTLW0_SWRST;
    
        EUSCI_B0->CTLW0 =   EUSCI_B_CTLW0_SWRST
                            | EUSCI_B_CTLW0_CKPH
                            &~(EUSCI_B_CTLW0_CKPL)
                            | EUSCI_B_CTLW0_MSB
                            &~(EUSCI_B_CTLW0_SEVENBIT)
                            | EUSCI_B_CTLW0_MST
                            | EUSCI_B_CTLW0_MODE_0
                            | EUSCI_B_CTLW0_SYNC
                            | EUSCI_B_CTLW0_SSEL__SMCLK;
    
        EUSCI_B0->BRW = 12;                               // /2,fBitClock = fBRCLK/(UCBRx+1).
        /*INITIALIZE PORT REGISTERS*/
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_SWRST);   
    }

    逻辑分析仪显示一个错误、表明 CLK 线路的初始(IDLE)状态与设置不匹配。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在活动结束后、SCK 似乎没有保持空闲状态、但现在我们在代码的不同部分。 在交易结束时、您有什么特别之处吗?

    此外、您是否知道这些"错误"是在交易过程中发生的? 布线分辨率实际上不允许看到单个位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!  

    不、我在交易结束时没有任何特殊之处。 我们将以单个位集中处理事务、如下所示

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您已将 eUSCI 配置为 CPOL=0、CPHA=0 (CKPL=0、CKPH=1)。 您的分析仪是这样设置的吗?

    另外、/CS 的变化非常快--中间字节。 /CS 至少应在一帧内放置一个完整字节。 (您是否仍在使用 ADS1292R? 它期望/CS 在整个事务中(可能是多个字节)保持低电平。

    这些不一定与 SCK (显然)高怠速有关、但如果您将其他事情弄清楚、情况可能会有所不同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、
    现在、对于这两种应用(代码寄存器和数字分析仪上的设置)、我已经将代码更改为 eUSCI (CPOL=0、CPHA=0)。 这就是现在的设置方式。 是的、我正在尝试一款新的 Aproach to this chip (ADS1292R)。 每次传输数据时、引脚 CS 都会变为低电平并保持该电平、直到进行事务。 我不知道为什么会这样。 为了满足另一个条件,我正在尝试在每次解决 onde 问题。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    分析仪是否知道/CS 信号? 也许这就是它所抱怨的。

    另外、您是否正在使用调试器? 我忘记了在断点期间哪些时钟停止(在 P 系列上)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!

    好消息、我已经能够发送数据并通过数字式分析仪进行检查。 现在、读数通道响应所有发送的数据"0xFF"、在最后一次读数读取0x10数据后、所有后续数据都附带错误信息、这是正常的、通道是否应该恢复到初始状态? ! 我分享我的读数并在下面的代码下进行更改。

    我分享修改后的代码,所以它可以分析,如果有任何观察,请说.

    void initialize_spi(void) {
        /*INITIALIZE PORT REGISTERS*/
        P1->SEL0 |= BIT5 | BIT6 | BIT7;
        P1->DIR  |= BIT5 | BIT6 ;
        P1->DIR  &= ~(BIT7);
    
        EUSCI_B0->CTLW0 |=  EUSCI_B_CTLW0_SWRST;
    
        EUSCI_B0->CTLW0  =  EUSCI_B_CTLW0_SWRST
                            | EUSCI_B_CTLW0_MSB
                            | EUSCI_B_CTLW0_SYNC
                            | EUSCI_B_CTLW0_MST
                            | EUSCI_B_CTLW0_MODE_0
                            | EUSCI_B_CTLW0_SSEL__SMCLK;
    
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_SEVENBIT);
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_CKPL);
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_CKPH);
    
        EUSCI_B0->BRW = 24;
    
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_SWRST);
    
        NVIC->ISER[0] = 1 << ((EUSCIB0_IRQn) & 31);     /*ENABLE EUSCI_B0 INTERRUPT IN NVIC MODULE*/
    }

    提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看起来您的/CS(静态)与您的交易不协调。 您如何管理此引脚?

    我看到您正在启用 USCIB0中断、但您尚未启用任何中断源。 这本身是无害的、但它表明在其他地方有一些重要的代码。 [对于足够快的 SPI 上的短事务、我不建议使用中断。]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!  

    该引脚会关闭。  在通过 SPI 传输发送数据时对此引脚进行管理。

    现在中断不适用、直到现在我打算实施它、现在我将考虑你的建议、并尝试在不使用中断的情况下进行所有这些过渡。

    static void ADS1292R_spi_cmd(uint8_t data){
        ADS1292R_disable_CS();
        _delay(4, 'm');
        ADS1292R_enable_CS();
        _delay(4, 'm');
        ADS1292R_disable_CS();
        _delay(4, 'm');
        EUSCI_B0->TXBUF = data;
        while (EUSCI_B0->STATW & EUSCI_B_STATW_BBUSY);
    
    
    
    }
    
    
    void ADS1292R_register_write(uint8_t WRITE_ADDRESS, uint8_t DATA) {
        // Apply bit masks based on register address
        switch (WRITE_ADDRESS) {
            case 1:
                DATA &= 0x87;
                break;
            case 2:
                DATA &= 0xFB;
                DATA |= 0x80;
                break;
            case 3:
                DATA &= 0xFD;
                DATA |= 0x10;
                break;
            case 7:
                DATA &= 0x3F;
                break;
            case 8:
                DATA &= 0x5F;
                break;
            case 9:
                DATA |= 0x02;
                break;
            case 10:
                DATA &= 0x87;
                DATA |= 0x01;
                break;
            case 11:
                DATA &= 0x0F;
                break;
            default:
                break;
        }
    
        SPI_TX_BUFF[0] = WRITE_ADDRESS | WREG;
        SPI_TX_BUFF[1] = 0;
        SPI_TX_BUFF[2] = DATA;
    
        ADS1292R_disable_CS();
        _delay(2, 'm');
    
    
        EUSCI_B0->TXBUF = SPI_TX_BUFF[0];
        while (EUSCI_B0->STATW & EUSCI_B_STATW_BBUSY);
    
        EUSCI_B0->TXBUF = SPI_TX_BUFF[1];
        while (EUSCI_B0->STATW & EUSCI_B_STATW_BBUSY);
    
        EUSCI_B0->TXBUF = SPI_TX_BUFF[2];
        while (EUSCI_B0->STATW & EUSCI_B_STATW_BBUSY);
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1) 1) ENABLE_CS 是意味着将(/CS)引脚设置为低电平还是高电平? 我猜是第一个、但如果是这样、用法会向后倒退。

    2)我认为 UCBBUSY 位用于 I2C。 它可能偶尔会工作、但尝试使用 UCBUSY (EUSCI_B_STATW_BUSY)位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!  

    代码中的 ADS1292R_ENABLE_CS 表示(/CS)引脚为高电平。

    void ADS1292R_enable_CS(void) {
        P5->OUT |= BIT2;  // Set CS pin HIGH
    }
    

    UCBBUSY 可以在 MSP432P401R eUSCI_B 模块内的 I2C 和 SPI 模式下使用。 因此、检查 UCBBUSY 的语法适用于 I2C 和 SPI 通信、而不是只适用于其中任何一种通信。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    仅在 I2C 模式下记录 UCBBUSY [它出现在 TRM (SLAU356I)表26-7中、但不在表25-14]。 如果您有其他信息表明它将满足您的预期(在 SPI 模式下)、那么我推迟。

    我看到您在交易前将/CS (低)置为有效、但我看不出您在何处将其置为无效(高)。 这是如何实现的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!
    您是 Wright、这是一个巨大的错误、我在编写代码时、始终尝试用技术参考手册和先前我选择 EUSCI_B_STATW_BBUSY 文件中的寄存器参考来指导我、但由于您的提醒、我阅读了寄存器并将其下载到 EUSCI_B_STATW_SPI_BUSY、这似乎是 Wright 的错误、但非常感谢 Wright 提请注意。
    关于"set_spi"函数、我调用另外两个函数、其中一个函数介绍了与从器件交互的默认寄存器防御。 另一个函数调用对初始化引脚(START、RESET、CLK 和 CS)负责的函数。 最后这个连接到高电平、因此在启动时、CS 引脚变为高电平、当进行数据转换时、他变为低电平、并保持低电平、直到检测结束

    #include <msp432.h>
    #include "spi.h"
    #include "ads1292r.h"
    
    void set_spi(void) {
        initialize_ports();
        initialize_spi();
    }
    
    void initialize_spi(void) {
    
    
    
        /*DISABLE EUSCI_B0 MODULE*/
        EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_SWRST;         /*PUT EUSCI IN RESET*/
    
        EUSCI_B0->CTLW0 =   EUSCI_B_CTLW0_SWRST         /*KEEP MODULE IN RESET MODE*/
                          | EUSCI_B_CTLW0_MST           /*MASTER MODE*/
                          | EUSCI_B_CTLW0_SYNC          /*SYNCHRONOUS MODE*/
                          | EUSCI_B_CTLW0_MSB           /*MSB FIRST*/
                          //| EUSCI_B_CTLW0_CKPH          /*CPHA = 1*/
                          | EUSCI_B_CTLW0_UCSSEL_2      /*SMCLK AS CLOCK SOURCE*/
                          | EUSCI_B_CTLW0_MODE_0;       /*3-PIN SPI MODE*/
    
    
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_CKPH);
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_CKPL);
    
        /*SET CLOCK DIVIDER (ASSUME SMCLK = 12MHz, SPI CLOCK 0 500KHz)*/
    
        EUSCI_B0->BRW = 24;                             /*CLOCK PRESCALER (12MHz/24 = 500 KHZ)*/
    
    
        /*INITIALIZE PORT REGISTERS, CONFIGURE FOR SPI FUNCTIONALITY*/
        /*P1.5 = SCLK, P1.6 = SOMI, P1.7 = SIMO*/
    
        P1->SEL0 |= BIT5 | BIT6 | BIT7;
        P1->SEL1 &= ~(BIT5 | BIT6 | BIT7);              /*SELECT THE PRIMARY MOCULE FUNCTION*/
    
    
    
        EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_SWRST);      /*RELEASE EUSCI FROM RESET*/
    
              //  NVIC->ISER[0] = 1 << ((EUSCIB0_IRQn) & 31);     /*ENABLE EUSCI_B0 INTERRUPT IN NVIC MODULE*/
            }
    
    void initialize_ports(void) {
        /* GPIO PINS ADS COMMAND PIN'S I/O */
        P2->DIR |= BIT4 | BIT5 | BIT6;                  /* P2.4-CLK_SEL; P2.5-START; P2.6-RESET */
        P2->OUT &= ~(BIT5 | BIT6);                      /* START AND RESET PINS */
        P2->OUT |=  BIT6 | BIT4;                        /* ENABLE RESET AND CLK_SEL*/
    
        P5->DIR |= BIT2;                                /* SET P5.2 CS */
        P5->OUT &= ~(BIT2);                             /* SET CS PIN TO LOW */
        P5->OUT |= BIT2;                                /* SET CS PIN TO HIGH */
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您现在的症状是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!

    这周我生病了,现在我更好,回到项目.
    所以我要将 SPI 更改为 MODE_0以只读3Wire、在逻辑分析仪中考虑仅 MOSI、MISO 和 SCLK……
    现在、响应采用以下波形:

    CMD 0x08

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    就目前而言、这看起来正常。 您是否能够读回您写入 CONFIG1的内容?

    您可能希望尝试读取 ID 寄存器(0x00)、因为它应该具有一个众所周知的值( 根据表17为0x73)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是、  

    在 CONFIG1中, 我发送了以下寄存器:

    当我尝试使用(0x00)读取 ID 寄存器时、  

    结果是除已知值之外的任何值0x73:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此响应看起来与写入寄存器操作期间看到的类似。

    我想知道您是否处于连续模式[Ref 数据表 Sec 8.5.2.7]、而它不是在听您说话。 尝试先发送0x11 (SDATAC)命令。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    我已经查看了我的所有完整代码、没有任何东西可以让 DE 器件正常工作!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据您发布的内容、SPI 似乎可以正常运行。

    您是否已使器件退出连续模式?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!  

    测试在 STOP 命令 发送 STOP   数据 CMD 0x11后进行、MISO 线路未提供正确的 ID。

    如果 IAM 错误、那么 MSCLK 是我用于执行等待状态的时钟、因为它基于系统时钟、所以可以进行更正!! 这是正确的吗?

    如果是、我的时钟系统在24MHz 下运行、每个周期都基于 tCYCLE =(1/POR)= 41.67ns、每条指令大约需要4个周期、因此每条指令花费166.68ns、也许24MHz 后上升脉冲的等待状态不足以将数字内核调至正确状态。

    在我的应用(ADS1292R 中央板)中、CLK 引脚未连接、因此在复位后、DRDY 应以恒定频率精确的切换频率运行、这应该是 DRDY 引脚频率、但脉冲接缝异步。
    是的、SPI 似乎得到了很好的实施、现在其他人的怀疑就已经到来了

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    读取 ID 寄存器会带来什么? 它与以前大致相同、还是不同?

    如果您将 Tclk 指的是/CS (置为无效)延迟、这将是 ADS1292R 时钟。 由于您尚未更改、因此需要~2us (Fclk=512kHz /DS p. 27 ["clock"])。 如果可以的话、这(巧合)与 SCLK 速度(SMCLK/24)大致相同。 我假设您已使用 JP2将 CLKSEL 跳接为高电平[请参阅 DS 表9]。

    我想到这个时:如何设置焊接跳线 SJ1? 我希望它设置为 VCC = 3.3V、但原理图不会指示。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当读取 ID 记录时、它会返回您可以在下图中看到的值。 值​​始终会更改、每次重新启动器件时、在重新启动时都不会得到相同的值
    我已经尝试过所有的东西、
    使用数字分析仪我测试了其他控制连接(启动;复位; CLK 和 DRDY ),我共享传输,我发送了寄存器以获得 ID 器件。 如果你愿意,我可以私下与你分享项目真实状态的所有代码,也许你可以看到任何逃脱我的东西。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何设置 JP2和 SJ1?

    我找到了 ADS1292R SPI 调试的常见问题解答。 项目(2)提到/RESET 脉冲、并使用"Essential (基本)"一词。 你在干什么?"

    https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/775262/faq-ads129x-i-m-having-trouble-communicating-with-my-ads129x-device-via-spi-what-debug-steps-i-should-try/2868427#2868427

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!
    我正在使用一个中央板,所以我不是很明白你的问题... 但是、如果您指的是连接、我将总结如下:

    MCU 实现 ADS1292
    3V3 VDD
    P2.6. PWD/RESET
    P2.5 启动
    P2.4 DRDY
    P5.0 CS
    P1.6 主站输入
    P1.7 MISO
    P1.5 SCK
    不适用 GPIO1
    不适用 GPIO2
    不适用 CLK
    GND GND

    在表中、N/C 的含义是未连接引脚。 回答您的问题时、如果我理解正确、在 SJ1 (逻辑电平转换器)中、输入功率为3.3V、我测量 JP2的状态并检查是否还填充了3.3V 电源。  

    按照收集的常见问题解答、我会在这里花很多时间来调试我的问题并获取 上电和通信时序。

    在测试的每个通信中、我看到 MISO 线路在比 SCLK 线路更高的频率下工作。 我已经尝试了一切、现在我再把注意力转向 SPI 通信、我阅读了 ADS1292R 数据表、其中建议使用 SPI 模式1:CPOL = 0、CPHA = 1 (空闲时时时时时钟为低电平、数据在上升沿发生变化、在下降沿捕捉)。 有时我会得到一个 ID 值接近我所需的值(0x71)。