本文档详细介绍了在S12ZVM平台下CAN驱动软件的设计过程以及关键功能测试,包括CAN控制器的初始化、报文收发、中断处理和错误检测。以下是主要内容的详细阐述:
1. **MSCAN初始化**:
- 在S12ZVMC256板上,通过设置CANCTL0寄存器的CANCTL0_INITRQ为1,然后等待CAN0CTL1寄存器的CAN0CTL1_INITAK变为1,来启动CAN控制器的初始化过程。初始化期间会配置波特率,如通过CAN0BTR1和CAN0BTR0寄存器来设置。
- 初始化完成后,清除CANCTL0_INITRQ,并等待CAN0CTL1_INITAK回到0,表示初始化结束。此时,需要设置CAN0CTL0寄存器和中断使能寄存器CAN0RIER、CAN0TIER,以便启用正确的中断。
2. **报文发送与接收**:
- 发送阶段涉及判断发送缓冲区的状态,比如通过CAN0TBSEL寄存器选择空闲缓冲区,填充报文的ID、DLC和数据,并设置发送标志位启动发送。发送操作后,需要检查发送结果并返回。
- 接收部分则是监控CAN0RFLG_RXF标志,当CAN0RFLG_RXF等于1时,表示有新消息可读取,此时可以读取接收到的ID、DLC和数据,然后清除接收缓冲区已满标志。
3. **中断处理**:
- MSCAN支持四种类型的中断,每种对应CPU中的一个向量号。中断处理主要包括CAN_InterruptTx(用于传输完成)、CAN_InterruptRx(接收中断)、ErrorInterrupts(错误检测中断)以及ReceiveInterrupt(接收中断)。这些中断允许系统在特定事件发生时执行相应的处理逻辑。
4. **功能测试**:
- 文档提供了一个示例,使用CANalyzer工具创建发送节点,持续发送数据。在接收缓冲区满时,系统会触发接收中断,进行中断处理,并验证接收到的数据是否正确。
这篇文档的核心内容是针对S12ZVM的CAN驱动软件开发,涵盖了硬件控制、通信流程和中断管理等方面,对CAN通信系统的调试和测试提供了实用指南。开发者可以根据这些步骤和技巧,确保CAN驱动的稳定性和性能。