sp; case SSC_EEPROM:
SSC0->CR = SSC_CR_TXEN;
break;
case SSC_MEMS:
SSC0->CR = SSC_CR_TXEN | SSC_CR_TXSRC(1);
break;
default:
break;
}
SCC0_TransmitInterrupt_EndTx = false;
while (!SCC0_TransmitInterrupt_EndTx) {
// Wait for the interrupt to be triggered
}
for (uint16_t i = 0; i < sizeData; i++) {
SSC0->DR = *p_Data++;
}
// Disable the transmitter
SSC0->CR &= ~SSC_CR_TXEN;
}
在这段代码中,我们首先根据设备类型设置SSC0的控制寄存器(CR)。然后,我们将SCC0_TransmitInterrupt_EndTx标志设置为false,并在循环中等待传输中断触发。接下来,我们通过SSC0的数据寄存器(DR)发送数据。最后,我们禁用传输器。
关于您的问题,TLE9893的SSC0在数据寄存器中的字节传输到移位寄存器后,确实会产生传输结束中断。在您的代码中,当数据发送完毕后,SSC0_TransmitInterrupt()函数会被调用,并将SCC0_TransmitInterrupt_EndTx标志设置为true。这样,循环中的while语句会退出,表示传输已经完成。
请注意,为了确保传输中断能够正确触发,您需要在NVIC(嵌套向量中断控制器)中启用SSC0的中断。您可以使用以下代码启用SSC0的中断:
NVIC_EnableIRQ(SSC0_IRQn);
同时,确保在您的项目中实现了SSC0_IRQn的中断处理函数,如下所示:
void SSC0_IRQHandler(void) {
SSC0_TransmitInterrupt();
}
这样,当SSC0的传输结束中断触发时,SSC0_IRQHandler()函数会被调用,进而调用SSC0_TransmitInterrupt()函数,将SCC0_TransmitInterrupt_EndTx标志设置为true,从而完成数据传输。
sp; case SSC_EEPROM:
SSC0->CR = SSC_CR_TXEN;
break;
case SSC_MEMS:
SSC0->CR = SSC_CR_TXEN | SSC_CR_TXSRC(1);
break;
default:
break;
}
SCC0_TransmitInterrupt_EndTx = false;
while (!SCC0_TransmitInterrupt_EndTx) {
// Wait for the interrupt to be triggered
}
for (uint16_t i = 0; i < sizeData; i++) {
SSC0->DR = *p_Data++;
}
// Disable the transmitter
SSC0->CR &= ~SSC_CR_TXEN;
}
在这段代码中,我们首先根据设备类型设置SSC0的控制寄存器(CR)。然后,我们将SCC0_TransmitInterrupt_EndTx标志设置为false,并在循环中等待传输中断触发。接下来,我们通过SSC0的数据寄存器(DR)发送数据。最后,我们禁用传输器。
关于您的问题,TLE9893的SSC0在数据寄存器中的字节传输到移位寄存器后,确实会产生传输结束中断。在您的代码中,当数据发送完毕后,SSC0_TransmitInterrupt()函数会被调用,并将SCC0_TransmitInterrupt_EndTx标志设置为true。这样,循环中的while语句会退出,表示传输已经完成。
请注意,为了确保传输中断能够正确触发,您需要在NVIC(嵌套向量中断控制器)中启用SSC0的中断。您可以使用以下代码启用SSC0的中断:
NVIC_EnableIRQ(SSC0_IRQn);
同时,确保在您的项目中实现了SSC0_IRQn的中断处理函数,如下所示:
void SSC0_IRQHandler(void) {
SSC0_TransmitInterrupt();
}
这样,当SSC0的传输结束中断触发时,SSC0_IRQHandler()函数会被调用,进而调用SSC0_TransmitInterrupt()函数,将SCC0_TransmitInterrupt_EndTx标志设置为true,从而完成数据传输。
举报