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.

[参考译文] MSP430F47177:USCIAB0RX、USCIAB0TX、USCIAB1RX、USCIAB1TX - MSP430中断

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/719697/msp430f47177-usciab0rx-usciab0tx-usciab1rx-usciab1tx---msp430-interrupts

器件型号:MSP430F47177

我正在努力寻找否定确认例程的解决方案。  在 MSP430x4xx 的用户手册 中、I2C 遮光器发送器模式部分中提到了以下行:  

如果从器件不确认发送的数据、则表示未确认
中断标志 UCNACKIFG 被置位。 主器件必须以 STOP 进行响应
条件或重复起始条件。 是否已将数据写入
UCBxTXBUF、它将被丢弃。 如果该数据应在之后传输
重复起始必须再次写入 UCBxTXBUF。 任何置位 UCTXSTT
也会被丢弃。 要触发重复的启动,需要再次置位 UCTXSTT。  

 

当 UCNACKIFG 被置位时,我的从器件是 LCD 控制器( HT16C24)我的数据传输停止。

请找到以下代码并帮助 我解决问题。  

我所期望的理想条件是当未确认位被置位时,我的传输应该从 LCD 页面上的挂起位置恢复(没有确认位被置位)  

#pragma CODE_SECTION (USCI_A1_RX_ISR," LOWPAGE") //在闪存的下页中对 ISR 进行复制  

#Pragma vector =USCIADRX_VECTOR  

_interrupt void USCI_A1_RX_ISR (void)

IF (UCB1STAT 和 UCNACKIFG)

UCBCTL1 |= UCTXSTP;                        // I2C 停止条件  

UC1IE &=~UCB1TXIE;                         //禁用 TX 中断  

IFG2 &= ~UCB1TXIFG;                         //清除 USCI_B1 TX int 标志

UCB1I2CIE &=~ UCNACKIE;

I2C_TxInProgressFlag = 0;                       // 传输完成

I2CTxSucessful = 0;          

 UCB1CTL1 |=  UCTR + UCTXSST;                 // I2C TX、启动条件  

}             

通过编写此代码,我面临的问题是,如果未设置确认位,数据传输将停止。  

纠正我出错的地方 。  

此致,  

Sameer Batra  

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