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.

[参考译文] MSP430F477:针对负确认中断标志(UCNACKIFG)的中断处理例程

Guru**** 657930 points
Other Parts Discussed in Thread: MSP430F477, MSP430F47177
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/717837/msp430f477-interrupt-service-routine-for-negative-acknowledgement-interrupt-flag-ucnackifg

器件型号:MSP430F477
主题中讨论的其他器件: MSP430F47177

尊敬的所有人:

我的应用使用的是 I2C 主发送器模式。  

在以下情况下,我会遇到问题:

1 -确认位丢失或负确认位被置位。

我无法找到,如何为 该否定确认编写中断服务例程 ,以及 将在其中编写服务例程的矢量地址是什么。  

在数据表中,我还找到了 UCNACKIE (未确认中断使能) 位。  UCNACKIE 在负确认例程中的作用是什么。

此致、

Sameer Batra  

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

    Sameer、您好!

    很抱歉、我不明白您的要求。 您是否已经参考了我们的 I2C 代码示例? 如果不是、我建议从它们开始。 此外,请查看我们 的《MSP430TmMCU 上常见 eUSCI 和 USCI 串行通信问题解决方案 》应用手册。

    此主题可能对 UCNACKIE 有所帮助。

    在 I2C 通信中使用 UCNACKIE

    此致、

    James

    MSP 客户应用

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

    您好 James、

    感谢您分享的信息。

    我的问题是如何为负确认中断编写服务例程 ?

    您能给我提供 I2C 代码示例参考代码的链接吗?

    此致,

    Sameer

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

    Sameer、您好!

    在下面链接的线程中、我看到您已将器件型号从 MSP430F477更改为 MSP430F47177。 您可以在 TI Resource Explorer 中找到 MSP430F47177的 I2C 代码示例。  这些示例可下载并导入到 CCS 中。  

    MSP430F47177代码示例

    例如、您可以在 msp430x471x7_USCI_i2c_standard_master.c 代码示例的底部找到 NACK ISR。

    //
    // I2C 中断用于启动、重启、NACK、停止********
    //
    
    #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_)
    #pragma vector = USCIAB0RX_Vector
    __interrupt void USCIAB0RX_ISR (void)
    #Elif defined (__GNU__)
    void __attribute__((interrupt (USCIAB0RX_ISR)#vector
    
    (void) USCIA0RX_ICUICUICURX_ICURX_ICURX_ISR (void))#defineer_ICUICRx_ICUAR
    #endif
    {
    IF (UCB0STAT 和 UCNACKIFG)
    {
    UCB0STAT &=~UCNACKIFG; //清除 NACK 标志
    }
    IF (UCB0STAT 和 UCSTPIFG) //停止或 NACK 中断
    {
    UCB0STAT &=
    ~(UCSTTIFG + UCSTPIFG + UCNACKIFG); //清除启动/停止/ NACK 标志
    }
    IF (UCB0STAT 和 UCSTTIFG)
    {
    UCB0STAT &=~(UCSTTIFG); //清除启动标志
    }
    } 

    我看到 Clemens 在以下线程中帮助您处理了 NACK 中断、所以我要关闭这个线程。

    MSP430F47177:USCIAB0RX、USCIAB0TX、USCIAB1RX、USCIAB1TX - MSP430中断