This commit is contained in:
cfif 2026-06-02 17:30:44 +03:00
parent b43a3ec283
commit b4e3fed40a
1 changed files with 7 additions and 9 deletions

View File

@ -19,8 +19,8 @@ void vSerialPortLinInit(
) {
env->uart = uart;
env->linLastByteTime = 2;
env->linFrameTimeoutMs = 2;
env->linLastByteTime = 15;
env->linFrameTimeoutMs = 15;
usart_reset(uart);
@ -45,7 +45,7 @@ void vSerialPortLinInit(
// Включаем прерывание по break frame
usart_interrupt_enable(uart, USART_BF_INT, TRUE);
usart_interrupt_enable(uart, USART_RDBF_INT, TRUE);
usart_interrupt_enable(uart, USART_IDLE_INT, TRUE);
// usart_interrupt_enable(uart, USART_IDLE_INT, TRUE);
NVIC_EnableIRQ(irq);
NVIC_SetPriority(irq, irqPriority);
@ -150,6 +150,7 @@ static void LIN_ProcessReceivedFrame(tSerialPortLinArtery *env, bool isHeader) {
env->rxFrame.dataLen = 0;
env->rxFrame.event = LIN_RX_COMPLETED;
osMessageQueuePut(env->rxDataQueue, &env->rxFrame, 0, 0);
return;
}
@ -213,7 +214,7 @@ void SerialPort_IrqProcessing_UartLin(tSerialPortLinArtery *env) {
return;
}
/*
if (usart_flag_get(env->uart, USART_IDLEF_FLAG)) {
usart_flag_clear(env->uart, USART_IDLEF_FLAG);
@ -247,7 +248,7 @@ void SerialPort_IrqProcessing_UartLin(tSerialPortLinArtery *env) {
}
*/
// 2. Receive data (без IDLE)
@ -297,8 +298,6 @@ void SerialPort_IrqProcessing_UartLin(tSerialPortLinArtery *env) {
// Функция проверки таймаута (вызывать из таймера, например, каждые 1-5 мс)
void LIN_CheckTimeout(tSerialPortLinArtery *env) {
return;
if (!env->linFrameStarted) {
return;
}
@ -496,14 +495,13 @@ static uint8_t vLinTransmitCommand(tSerialPortLinArtery *env, tLinData *linData,
static uint8_t vLinReceivedCommand(tSerialPortLinArtery *env, tLinData *linData, uint8_t *ADR_COM, uint32_t timeout) {
lin_frame_t rxFrame;
// uint16_t len = vSerialPortLinReceiveQueue(env, (void *) &rxFrame, sizeof(lin_frame_t), osWaitForever, env->rxDataQueue);
osStatus_t result = osMessageQueueGet(env->rxDataQueue, (void *) &rxFrame, NULL, osWaitForever);
if (result == osOK) {
memset(linData->g_aRxBuffer, 0, sizeof(linData->g_aRxBuffer));
if (rxFrame.event == LIN_RX_COMPLETED) {
linData->g_aRxBufferLen = rxFrame.dataLen + 1;
linData->g_aRxBufferLen = rxFrame.dataLen;
*ADR_COM = rxFrame.id & 0x3F;
for (uint8_t i = 0; i < rxFrame.dataLen; ++i) {
linData->g_aRxBuffer[i] = rxFrame.data[i];