Обновление командировка 05.06.2026
This commit is contained in:
parent
3e46835b95
commit
99c79f4c5b
|
|
@ -118,14 +118,13 @@ bool vCanSerialPortFrameDMAInit(
|
||||||
env->DMA_ErrorCallback = DMA_ErrorCallback;
|
env->DMA_ErrorCallback = DMA_ErrorCallback;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
env->access = osMutexNew(NULL);
|
env->access = osMutexNew(NULL);
|
||||||
|
|
||||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
|
||||||
uint32_t u32TargetAddr = (uint32_t) (DMA_BUF_RX);
|
uint32_t u32TargetAddr = (uint32_t)(DMA_BUF_RX);
|
||||||
|
|
||||||
env->chnCfg_RX.pSrcBuffer = &(CANx->RAM[0]);
|
env->chnCfg_RX.pSrcBuffer = &(CANx->RAM[0]);
|
||||||
env->chnCfg_RX.pDestBuffer = (void *) (u32TargetAddr);
|
env->chnCfg_RX.pDestBuffer = (void *) (u32TargetAddr);
|
||||||
|
|
@ -442,8 +441,7 @@ bool vCanSerialPortFrameMbInit(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool vCanSerialPortSetMaskCount(tCanSerialPortFrameFlagchip *env, uint8_t maskCount)
|
bool vCanSerialPortSetMaskCount(tCanSerialPortFrameFlagchip *env, uint8_t maskCount) {
|
||||||
{
|
|
||||||
FLEXCAN_ErrorType tRetVal;
|
FLEXCAN_ErrorType tRetVal;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
|
@ -552,7 +550,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F
|
||||||
filter_index = env->IdHardSoftFilter_RX[i].filter;
|
filter_index = env->IdHardSoftFilter_RX[i].filter;
|
||||||
pMsg->filter_index = filter_index;
|
pMsg->filter_index = filter_index;
|
||||||
|
|
||||||
if (i> 2) {
|
if (i > 2) {
|
||||||
asm("nop");
|
asm("nop");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -562,6 +560,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F
|
||||||
|
|
||||||
// Если ID найден или фильтров нет
|
// Если ID найден или фильтров нет
|
||||||
if (filter_index != 0xFF || count == 0) {
|
if (filter_index != 0xFF || count == 0) {
|
||||||
|
|
||||||
memcpy(pMsg->data, pRxCfg->aData, dlc);
|
memcpy(pMsg->data, pRxCfg->aData, dlc);
|
||||||
CanSerialPortFrameAddDataQueue(env, pMsg, filter_index != 0xFF ? filter_index : 0);
|
CanSerialPortFrameAddDataQueue(env, pMsg, filter_index != 0xFF ? filter_index : 0);
|
||||||
}
|
}
|
||||||
|
|
@ -571,7 +570,7 @@ void CanSerialPortFrameIrqRxProcessingNO_DMA(tCanSerialPortFrameFlagchip *env, F
|
||||||
void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_t *pBuf) {
|
void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_t *pBuf) {
|
||||||
|
|
||||||
// message buffer 1th word
|
// message buffer 1th word
|
||||||
uint32_t u32TempAddr = (uint32_t) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 0U);
|
uint32_t u32TempAddr = (uint32_t)FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 0U);
|
||||||
|
|
||||||
uint32_t dlc = FLEXCAN_MB_DLC_GET(u32TempAddr);
|
uint32_t dlc = FLEXCAN_MB_DLC_GET(u32TempAddr);
|
||||||
env->rx_message_struct.dlc = FLEXCAN_DlcToDataLen(dlc);
|
env->rx_message_struct.dlc = FLEXCAN_DlcToDataLen(dlc);
|
||||||
|
|
@ -579,7 +578,7 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_
|
||||||
env->rx_message_struct.id_type = FLEXCAN_MB_IDE_GET(u32TempAddr);
|
env->rx_message_struct.id_type = FLEXCAN_MB_IDE_GET(u32TempAddr);
|
||||||
|
|
||||||
// message buffer 2th word
|
// message buffer 2th word
|
||||||
u32TempAddr = (uint32_t) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 4U);
|
u32TempAddr = (uint32_t)FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 4U);
|
||||||
|
|
||||||
if (env->rx_message_struct.id_type == FLEXCAN_ID_STD) {
|
if (env->rx_message_struct.id_type == FLEXCAN_ID_STD) {
|
||||||
env->rx_message_struct.standard_id = FLEXCAN_MB_STDID_GET(u32TempAddr);
|
env->rx_message_struct.standard_id = FLEXCAN_MB_STDID_GET(u32TempAddr);
|
||||||
|
|
@ -620,8 +619,8 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_
|
||||||
if (index != 0xFF) {
|
if (index != 0xFF) {
|
||||||
|
|
||||||
// message buffer 3th word
|
// message buffer 3th word
|
||||||
uint32_t *pSrc = (uint32_t *) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U);
|
uint32_t *pSrc = (uint32_t * )FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U);
|
||||||
uint32_t *pDest = (uint32_t *) &env->rx_message_struct.data[0];
|
uint32_t *pDest = (uint32_t * ) & env->rx_message_struct.data[0];
|
||||||
|
|
||||||
uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U);
|
uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U);
|
||||||
|
|
||||||
|
|
@ -635,8 +634,8 @@ void CanSerialPortFrameIrqRxProcessing(tCanSerialPortFrameFlagchip *env, uint32_
|
||||||
|
|
||||||
if (env->CountHardSoftFilter_RX == 0) {
|
if (env->CountHardSoftFilter_RX == 0) {
|
||||||
// message buffer 3th word
|
// message buffer 3th word
|
||||||
uint32_t *pSrc = (uint32_t *) FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U);
|
uint32_t *pSrc = (uint32_t * )FLEXCAN_MB_WORDN_ADDR(&pBuf[env->pBufCounter << 2], 0U, 8U, 8U);
|
||||||
uint32_t *pDest = (uint32_t *) &env->rx_message_struct.data[0];
|
uint32_t *pDest = (uint32_t * ) & env->rx_message_struct.data[0];
|
||||||
|
|
||||||
uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U);
|
uint32_t u32WordLen = env->rx_message_struct.dlc / 4U + (env->rx_message_struct.dlc % 4U > 0U ? 1U : 0U);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue