揭秘车载VCU项目之外挂界的“大哥”DMA

描述

引脚配置

 


 

dma

 

此实例选择CAN0进行配置。

 

三、外设配置

 

对于DMA,其采用的固定映射,对于通道0至通道15,其映射一部分外设,通道16至通道31映射一部分外设,所以对于外设要使用DMA,也需要注意此项。添加外设:dma

CAN基础配置:

dma

CAN的用户回调配置:

dma中断配置:dma

配置完毕后更新代码:

dma

dma

dma

dma

四、部分代码展示

dma

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

/** * @brief FlexCAN0中断回调函数 * * 该函数处理FlexCAN0模块的各类事件,根据事件类型执行相应的处理逻辑。 * 主要负责接收和发送CAN消息。 * * @param instance CAN实例号,此处固定为FlexCAN0。 * @param eventType 事件类型,指示当前中断的原因。 * @param buffIdx 接收缓冲区索引,指示接收消息所在的缓冲区。 * @param flexcanState FlexCAN状态结构体指针,包含FlexCAN模块的当前状态信息。 */void FlexCAN0_Callback(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx, const Flexcan_Ip_StateType *flexcanState){ /* 忽略参数,防止编译器警告 */ (void)flexcanState; (void)instance; (void)buffIdx;
/* 根据事件类型执行相应的处理逻辑 */ switch(eventType) { case FLEXCAN_EVENT_RX_COMPLETE: { txData[7] = 0; /* 设置消息ID类型为标准ID,准备发送消息 */ tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; /* 发送消息,并从接收缓冲区读取新消息 */ FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&txData); FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, FALSE); }break; case FLEXCAN_EVENT_RXFIFO_COMPLETE: { /* RXFIFO完成事件的处理逻辑 */ }break; case FLEXCAN_EVENT_TX_COMPLETE: { /* TX完成事件的处理逻辑 */ }break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_COMPLETE: { /* 增强型RXFIFO完成事件的处理逻辑 */ }break; case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK: { /* 增强型RXFIFO水位标记事件的处理逻辑 */ }break; case FLEXCAN_EVENT_DMA_COMPLETE: { txData[7] = 11; /* DMA完成事件的处理逻辑,发送消息并从FIFO读取数据 */ tx_info.msg_id_type = FLEXCAN_MSG_ID_STD; FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&txData); FlexCAN_Ip_RxFifo(INST_FLEXCAN_0, &rxFifoData); }break; default: { /* 默认情况下,不做任何处理 */ }break; }}

dma

 五、注意事项

dma

中断配置回调函数注意事项:

dma

dma

dma

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分