在该架构图对于CAN功能主要包含几大方面,Port、中断、系统总线接口、时钟、CAN核心模块(MultiCAN)。 其中,Port用于选择CAN Note的Tx/Rx引脚选择;时钟主要用于选择CAN时钟的来源,支持晶振时钟、PLL输出时钟等,可以根据实际需要进行选择;总线接口主要用于Core对CAN外设的控制;中断模块主要对CAN的收发数据、Error、BusOff等进行中断响应处理;MultiCAN是CAN通信的核上,实现了CAN通信的控制协议。 CAN Node中主要实现CAN协议中的主要功能,主要包括下面几个部分:
Bit Timing Unit:CAN的 Bit Timing定义到了整个CAN通信的位时间,CAN的一个Bit在通信中主要包括同步段、传播段、相位缓冲段1和相位缓冲段2四个部分,在实际中根据具体的情况选择相应的时间控制。 Bitstream Processor:主要作用是对CAN信号控制CRC产生,在物理层上增加SOF和EOF标志,同时对ID进行仲裁,在总线空闲的时候,将CAN信号传输到总线上,同时监控总线的状态,一旦总线上的电压与自期望发送数据的电压不匹配的时候诊断出总线错误,填充到相应的寄存器,同时对CRC进行校验,如果CRC不匹配,也置位相应的错误寄存器。 Error Handling Unit:两个错误计数器:REC & TEC,用于记录CAN报文的接收和发送的错误计数,实现主被动错误的切换以及Error汇报。 CAN Frame Counter :主要实现:计算发送和接收的CAN消息的个数以及计算某个CAN节点开始发送和接收数据的时间两大功能。 Node Timing Functions:主要用于诊断接收超时和通过GTM周期的发送CAN报文。 CAN Node Interrupts :实现CAN节点中断管理,主要包括:CAN Frame发送接收成功中断、CAN协议错误中断、Frame Counter Overflow中断、节点计时器事件中断、相关条件改变的中断等。 Message Object就是CAN的消息的收发邮箱,每个Message Object分配一个List,总共16个List,每个List会跟一个CAN Node对应,用于管理CAN接收发送数据的Message Object。 主要分为Basic CAN和Full CAN两种类型,Basic类型支持基本的CAN信号产生和CAN位流操作,信号的滤波靠软件实现,CAN管理是靠软件实现,可以只用一个Message Object实现数据的接收,一般实现普通的CAN协议; Full 类型在硬件上实现对CAN的信号滤波和管理,通过Message Object对CAN的ID、Data、Direction在硬件上处理,对于接收的信号可以分配到特定的Message Object通过中断实现接收,可以在硬件上减少CPU负载。