尊敬的团队:
关于中断帧头的检测、当当前执行以下配置时、可以正确检测到中断:
Tsynbrk = 13、Tsyndel = 1/5/10
但有两种配置不会检测中断:
Tsynbrk = 13、Tsyndel = 14
Tsynbrk = 26、Tsyndel = 1
以下是配置代码:
const tUARTPort g_myLINPort = { .pbReceiveCallback = &LINreceiveHandler, .pbErrorCallback = &LINerrorHandler, .peripheralParameters.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK,//EUSCI_A_UART_CLOCKSOURCE_UCLK, //EUSCI_A_UART_CLOCKSOURCE_SMCLK, .peripheralParameters.clockPrescalar = 6, //26, .peripheralParameters.firstModReg = 8, //0, .peripheralParameters.secondModReg = 0x11, //0xB6, .peripheralParameters.parity = EUSCI_A_UART_NO_PARITY, .peripheralParameters.msborLsbFirst = EUSCI_A_UART_LSB_FIRST, .peripheralParameters.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT, .peripheralParameters.uartMode = EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE,//EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE .peripheralParameters.overSampling = EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION //EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION//EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION }; void LIN_GPIO_Init(void) { P1OUT = (0); P1DIR = (0);//(GPIO_PIN0 | GPIO_PIN6 | GPIO_PIN7); P1SEL0 = (GPIO_PIN4 | GPIO_PIN5); //(GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4 | GPIO_PIN5); P1SEL1 = (0); LIN_EN_POUT |= LIN_EN_PIN; LIN_EN_PDIR |= LIN_EN_PIN; LIN_EN_ON; } void LIN_Init(void) { LIN_GPIO_Init(); UART_openPort(&g_myLINPort); } void UART_openPort(const tUARTPort *pPort) { UART_closePort(); g_pUARTPort = pPort; UCA0CTLW0 |= UCSWRST; //reset UART0 MAP_EUSCI_A_UART_init( UART__EUSCI_A_PERIPHERAL, (EUSCI_A_UART_initParam*)&(g_pUARTPort->peripheralParameters) ); UCA0CTLW0 |=UCBRKIE; //打开break 中断 UCA0CTLW0 &= ~UCDORM;//Not dormant. All received characters will set UCAxRXIFG MAP_EUSCI_A_UART_enable(UART__EUSCI_A_PERIPHERAL); MAP_EUSCI_A_UART_clearInterrupt( UART__EUSCI_A_PERIPHERAL, EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG ); MAP_EUSCI_A_UART_enableInterrupt( UART__EUSCI_A_PERIPHERAL, EUSCI_A_UART_RECEIVE_INTERRUPT ); MAP_EUSCI_A_UART_enableInterrupt( UART__EUSCI_A_PERIPHERAL, EUSCI_A_UART_BREAKCHAR_INTERRUPT ); g_UARTStatus = eUARTIsIdle; }
此致