Edit online

关键流程设计

初始化流程

CAN 模块的初始化流程如下:

  1. 释放 reset 和 clock 信号

  2. 设置为复位模式

  3. 设置默认接收所有帧数据

  4. 设置为 normal 模式

中断处理流程

在驱动中,利用中断进行数据的接收和总线错误的检测。由于 CAN 每帧数据量较小,所以发送时采用了轮询的方式,直到发送完所有数据。但是为了统计发送信息,也使能了发送中断,接收到发送中断后,只更新 CAN 的发送状态信息。

../images/interrupt_flow.png

数据发送流程

由于 CAN 每帧的数据量只有 8byte,所以发送数据时没有采用 DMA 或中断方式,而是直接调用发送函数将数据发送出去。CAN 模块驱动的数据发送流程如下:

../images/start_xmit.png