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