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.

[参考译文] CCS/MSP432P401R:验证 P2.5何时更改状态

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

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/855375/ccs-msp432p401r-verify-when-the-p2-5-change-the-state

器件型号:MSP432P401R
主题中讨论的其他器件:ADS1292ADS1292R

工具/软件:Code Composer Studio

大家好、我遇到了一些问题、因为我正在执行一个例行程序、我需要知道 P2.5何时从高电平变为低电平或从低电平变为高电平、有人能帮我吗? 这是 我的代码的一部分...

#define ADS1292_DRDY      位5

int main (void){
P2->DIR &=~(ADS1292_DRDY); /*将 ADS1292R DRDY 引脚设置为输入*/
P2->REN |= ADS1292_DRDY; /*使用内部电阻器*/
P2->OUT |= ADS1292_DRDY; /*上拉内部电阻器*/
P2->IES |= ADS1292_DRDY;
P2->IFG &=~Ω(ADS1292_DRDY);
P2->IE &=~(ADS1292_DRDY);
while (1){
if ((P2->IN & ADS1292_DRDY)== false){
//代码
}

}

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

    我看不到该代码片段有任何明显的错误。

    您看到了哪种问题?

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

    当我的引脚更改内部代码的状态时  (P2->IN & ADS1292_DRDY) == false) should be executed. And doesn't work

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

    您如何知道 P2.5正在改变状态(具体而言:变为低电平)?  

    您如何知道该代码块未执行?

    (我假设该 false = 0。)

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

    是的、我知道、因为我调用了一些应更改状态引脚的函数

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

    我看不到任何其他函数。 它是如何更改引脚的?  

    调试器可以告诉您引脚的状态。 除了 IN 寄存器、IFG 寄存器将告诉您在您看不到的情况下它是变为低电平还是高电平。

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

    我可以与您共享我的整个代码...

    e2e.ti.com/.../ads1292r.c

    e2e.ti.com/.../ads1292r.h

    e2e.ti.com/.../1731.main.c

    e2e.ti.com/.../3107.main.h

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

    哪个函数导致 P2.5变为低电平? P2->IN 和 P2->IFG 会说什么? 我没有这些设备之一、因此您必须进行诊断。

    我想使用 UCMODE=1和 UCSTEM=1时会遇到问题、因为这不会使 STE (/CS)在整个事务中保持有效。 我建议 UCMODE=0、UCSTEM=0、并且不要为 CS 引脚设置 SEL0。

    您正在设置 UCCKPL=1、但 ADS1292R 数据表要求 CPOL=0。

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

    因此、我必须使 P2.5变为低电平、该引脚仅在完成数据传输时变为低电平、这样、我必须在 P2.5变为低电平时读取以开始发送数据、并定义准备发送多少字节。 我可以进行任何诊断、因为 该功能甚至没有被读取、我会得到您的建议、并将该功能更改为:

    void ads1292SPIInterface_Initialize (void){
    P2->SEL0 |= ADS1292_SPI_SCK | ADS1292_SPI_DOUT | ADS1292_SPI_DIN;
    P2->DIR |= ADS1292_SPI_DOUT | ADS1292_SPI_DOUT;
    P2->DIR &=~Ω(ADS1292_SPI_DIN); /*DIN 作为输入*/
    
    
    EUSCI_A1->CTLW0 |= EUSCI_B_CTLW0_SWRST; /*将 eUSCI 状态机置于复位状态*/
    EUSCI_A1->CTLW0 = EUSCI_A_CTLW0_SWRST |
    EUSCI_B_CTLW0_MST | /*设置为 SPI 主设备*/
    EUSCI_B_CTLW0_SYNC | /*设置为同步模式*/
    EUSCI_B_CTLW0_CKPL | /*将时钟极性相位设置为高*/
    EUSCI_B_CTLW0_MSB; /*MSB 优先*/
    
    
    EUSCI_A1->CTLW0 |= EUSCI_B_CTLW0_ssel_SMCLK; /*SMCLK*/
    EUSCI_A1->BRW = 0x0011; /*fBitClock =fBRCLK/(UCBRx+1)[~1000kHz]*/
    EUSCI_A1->MCTLW = 0; /*无调制*/
    EUSCI_A1->CTLW0 &=~(EUSCI_B_CTLW0_SWRST); /*清除软件复位,恢复操作*/
    
    EUSCI_A1->IE |= EUSCI_A_IE_RXIE;
    printf ("3b:%s\n"、"SPI");
    } 

    如何将 CPOL=0设置为低电平?

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

    只需删除"eUSCI_B_CTLW0_CKPL"行、该行将设置(离开) CKPL=0。

    读取 P2->IN 和 P2->IFG 的内容将帮助您区分(a) DRDY 从未置为有效、(b) DRDY 置为有效、但代码丢失。 更好的可能是在整个启动过程中在示波器上观察 DRDY。

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

    你好,阿曼多弗尔,

    您的问题如何?

    您好、Bruce、

    非常感谢您对 E2E 的支持。

    此致

    Johnson

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

    jonhson、您好!

    我无法解决这个问题,我在对我的问题进行建模时遇到了一些困难,因此在正确的位置调用函数并导致引脚发生变化

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

    你好,阿曼多弗尔,

    我测试您上传的代码,发现有关 P2->BIT5的设置是正常的,可以输入此代码:

     if (!(P2->IN & ADS1292_DRDY){...}

     

    在调试模式下附加测试图像:


    另一个问题似乎是应用程序代码问题、您可能需要 诊断用户程序的错误。

    如果您需要有关 MSP432寄存器的任何支持、请清楚地描述问题、程序用途、测试数据和 SON。

    有关 MSP432 MCU 中 SPI 配置的一些代码示例作为您的参考:

    http://dev.ti.com/tirex/explore/node?node=ABEAZlDMprmacNpMLdmkWw__z-lQYNj__LATEST

    此致

    Johnson

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

    您好朋友、

    我尝试将 msp432与 ads1292R 集成、我必须控制 DRDY 引脚的状态、以处理样本、这就是我需要控制引脚状态的原因。 我对 SPI 代码进行了一些修改、但其余代码相同。

    EUSCI_A1->CTLW1 |= EUSCI_B_CTLW0_SWRST; /*将 eUSCI 状态机置于复位状态*/
    EUSCI_A1->CTLW0 = EUSCI_B_CTLW0_MST | /*设置为 SPI 主设备*/
    EUSCI_B_CTLW0_MSB | /*MSB 优先*/
    EUSCI_B_CTLW0_SYNC; /*设置为同步模式*/
    
    EUSCI_A1->CTLW1 |= EUSCI_B_CTLW0_ssel_ACLK; /*SMCLK*/
    EUSCI_A1->BRW = 2; /*fBitClock =fBRCLK/(UCBRx+1)[~500kHz]*/
    EUSCI_A1->MCTLW = 0; /*无调制*/
    EUSCI_A1->CTLW1 &=~(EUSCI_B_CTLW0_SWRST); /*清除软件复位,恢复操作*/ 

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

    >EUSCI_A1->CTLW1 |= EUSCI_B_CTLW0_SWRST;

    SWRST 不在 CTLW1中、而是在 CTLW0中(因此是名称)。 除了我的建议之外、我不确定您的旧 SPI 代码是否有任何问题。

    您知道 DRDY 是否发生了变化? 例如、如果 ADS1292R 未正确上电、则不会看到任何内容。 (我已经建议了3种方法来检查它。)

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

    您好、Armandeferr

    我已经有六天没有听到您的声音,因此我假设您能够解决您的问题。 如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。 如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

    此致、

    Johnson

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

    这无法解决我的问题。  一个问题我如何验证引脚是否更改了状态、是否有人可以为我提供一些示例。

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

    你好,阿曼多弗尔,

    为了验证 GPIO 的状态、您可以在调试模式下查看相关的寄存 器、例如 P2->IN 或 P2->OUT、也可以在调试模式下使用单步函数来诊断您描述的问题。

    我在前一篇回复中测试了您的程序、似乎能够正常操作 GPIO 端口、因此这个问题似乎是与 ADS1292通信的应用问题。 您可以在调试模式下单步调试代码、并检查硬件电路以解决问题。

    最好的农家

    Johnson