请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LS1227 您好!
我一直在使用 N2HET 仿真 I2C 应用代码、我可以看到发送、接收和 NACK 中断。 如何从 het1HighLevelInterrupt()函数获取停止条件检测中断?
#pragma CODE_STATE(het1HighLevelInterrupt, 32)
#pragma INTERRUPT(het1HighLevelInterrupt, IRQ)
void het1HighLevelInterrupt(void)
{
uint32_t vect = hetREG1->OFF1;
switch (vect)
{
case 11: /*---------------------------> Transmit interrupt */
if(Data_Send_HET<3)
{
HetI2CPutData(*I2C1_txptr++, IntEna);
Data_Send_HET++;
}
if(Start_Repeat==1)
{
if(Data_Send_HET<5)
{
HetI2CPutData(*I2C1_txptr++, IntEna);
Data_Send_HET++;
}
else if(Data_Send_HET==5)
{
RW = 1; //Read
IntEna = 0;//no transmit interrupt
HetI2CPutAddr(I2C2_ADDR, RW, 2, IntEna, 1);//now, start to receive two data bytes and generate stop bit
}
}
break;
case 15: /*---------------------------> Receive interrupt */
*I2C1_rxptr++ = (hetRAM1->Instruction[0x2C].Data>>8) & 0xFF; // read the data
Data_Rece_HET++;
break;
case 18: /*---------------------------> No ACK interrupt */
case 29: /* timeout2*/
case 8: /* timeout6*/
case 2: /* timeout9*/
default:
/* timeout + phantom interrupt, clear flags and return */
while(1);
break;
}
}
/* USER CODE BEGIN (6) */
/* USER CODE END */
此致