我正在努力寻找否定确认例程的解决方案。 在 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