Обновление 23.06.2026
This commit is contained in:
parent
6f117f0f13
commit
eb5628c998
|
|
@ -54,6 +54,8 @@ typedef struct {
|
|||
|
||||
uint8_t CAN_INDEX;
|
||||
|
||||
osMessageQueueId_t txDataQueueCan;
|
||||
|
||||
uint32_t id;
|
||||
uint32_t id1;
|
||||
FLEXCAN_IdType canTypeFrame;
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ bool vCanSerialPortFrameDMAInit(
|
|||
env->DMA_ErrorCallback = DMA_ErrorCallback;
|
||||
|
||||
|
||||
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL);
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||
|
|
@ -325,7 +326,7 @@ bool vCanSerialPortFrameMbInit(
|
|||
// env->DMA_ErrorCallback = DMA_ErrorCallback;
|
||||
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
env->txDataQueueCan = osMessageQueueNew(1, 1, NULL);
|
||||
|
||||
//начало------------------------------------CAN---------------------------------------------------------------------
|
||||
//начало------------------------------------CAN---------------------------------------------------------------------
|
||||
|
|
@ -704,6 +705,32 @@ vCanSerialPortFrameReceive(tCanSerialPortFrameFlagchip *env, uint8_t idFilter, u
|
|||
// : 0;
|
||||
//}
|
||||
|
||||
FLEXCAN_ErrorType TransmitCan(tCanSerialPortFrameFlagchip *env, FLEXCAN_TxMsgType *tTxMsg) {
|
||||
|
||||
FLEXCAN_ErrorType tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, tTxMsg);
|
||||
|
||||
if (tRetval != FLEXCAN_ERROR_OK) {
|
||||
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg->u8TxHandler);
|
||||
} else {
|
||||
|
||||
if (tTxMsg->bWaitTxCompleted) {
|
||||
|
||||
uint8_t u8TxHandler;
|
||||
if (osMessageQueueGet(env->txDataQueueCan, &u8TxHandler, NULL, tTxMsg->bWaitTxCompleted) == osOK) {
|
||||
tRetval = FLEXCAN_ERROR_OK;
|
||||
} else {
|
||||
tRetval = FLEXCAN_ERROR_TIMEOUT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg->u8TxHandler);
|
||||
}
|
||||
|
||||
return tRetval;
|
||||
}
|
||||
|
||||
|
||||
uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *data, uint16_t size, uint32_t adr,
|
||||
uint8_t canType, uint32_t timeout) {
|
||||
|
||||
|
|
@ -739,12 +766,7 @@ uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *
|
|||
FCFUNC_FcOwnMemcpy(tTxMsg.aData, &data[len], 8, NULL);
|
||||
len += 8;
|
||||
|
||||
tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, &tTxMsg);
|
||||
if (tRetval != FLEXCAN_ERROR_OK) {
|
||||
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg.u8TxHandler);
|
||||
} else {
|
||||
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg.u8TxHandler);
|
||||
}
|
||||
tRetval = TransmitCan(env, &tTxMsg);
|
||||
|
||||
sent += 8;
|
||||
size -= 8;
|
||||
|
|
@ -755,12 +777,7 @@ uint16_t vCanSerialPortFrameTransmit(tCanSerialPortFrameFlagchip *env, uint8_t *
|
|||
|
||||
FCFUNC_FcOwnMemcpy(tTxMsg.aData, &data[len], tailSize, NULL);
|
||||
|
||||
tRetval = FLEXCAN_TransmitData(env->CAN_INDEX, &tTxMsg);
|
||||
if (tRetval != FLEXCAN_ERROR_OK) {
|
||||
FLEXCAN_TransmitAbort(env->CAN_INDEX, tTxMsg.u8TxHandler);
|
||||
} else {
|
||||
FLEXCAN_TransmitProcess(env->CAN_INDEX, tTxMsg.u8TxHandler);
|
||||
}
|
||||
tRetval = TransmitCan(env, &tTxMsg);
|
||||
|
||||
sent += tailSize;
|
||||
size -= tailSize;
|
||||
|
|
|
|||
Loading…
Reference in New Issue