background image

SPI 的“串口发送中断”来对 MCP2515 进行写操作,通过“查询”的方式来获得 MCP2515 的状
态信息以及数据信息。本系统中,

CAN 数据速率设置为 1Mbps。

  

MCU 对 MCP2515 的数据接收:当 MCP2515 的接收缓冲器中接收满 CAN 数据时,在

MCP2515 的/INT 管脚产生中断信号,通过 MCU 的 I/O 口中断来得知 CAN 数据已接收好,
即时把

CAN 数据接收到 MCU。

  

MCU 对 MCP2515 的数据发送:只需要被发送的信息帧传送到 CAN 的发送缓冲器,然

后传送一条

“请求发送”指令,启动数据的发送。

  该模块通信软件由

3 部分组成:MCP2515 初始化、CAN 数据接收、CAN 数据发送。

  (

1)MCP2515 的初始化:

  主要完成

CAN 的通信速率设置、接收寄存器设置、ID 屏蔽寄存器和 ID 过滤寄存器设置

以及

CAN 收/发中断功能的设置。MCU 对 MCP2515 所有寄存器的操作,都必须通过 SPI 接

口,用

MCP2515 内置的读写命令来完成。

  因为

MCP2515 初始化完成后,默认处于“配置”模式,所以需要在初始化完成后,将其

置为

“正常”模式,否则 MCP2515 将一直停留于“配置”模式,而无法正常工作。

  (

2)CAN 数据的接收:

  

MCU 调用函数 ReceiveMsg(),功能为:验收、滤波正确之后,收到的信息自动存放

MCP2515 的接收缓冲中,由 MCP2515 产生中断,通知 MCU 进行 CAN 数据的接收和后

续处理。其详细流程见图

7:

  (

3)CAN 数据的发送:

  

MCU 组织好要发送到 CAN 总线的数据后,发送一条“读状态”命令,来判断 MCP2515

把 前 面 一 条 报 文 是 否 已 发 送 完 毕 。 若 前 一 条 报 文 已 发 送 完 成 , 则 调 用 发 送 函 数
SendMsg(),功能为:把待发送数据装载到 MCP2515 的数据发送缓冲,把待发数据的长

DLC、报文发送优先级、相应的节点 ID 信息依次装载到 MCP2515 的对应寄存器后,最后

发送一条

“数据发送请求”命令,来启动数据向 CAN 总线的发送。

  具体的数据发送流程图见图

8:

  

4.守时时间数据与 CAN 总线的数据交互

  

MCU 的主程序中,检测到 can_flag=‘1’,就转而进行已接收 CAN 数据的分析。当发现

CAN 总线传来的命令是要求守时模块进行时间传输时,立即组织相应的时间数据,并通过
CAN 总线发送出去。
  五、结束语
  经实践证明,该系统能很好的完成

GPS OEM 板数据的接收、超低功耗 MCU 的软件守

时以及与

CAN 总线的数据交互工作。软件全部采用 C 语言进行编写,具有较强的通用性、

扩展性和可移植性。
  参考文献
  

[1]秦龙.MSP430 单片机 C 语言应用程序设计实例精讲[M].电子工业出版社,2006.

  

[2]陈桂珍.利用 MATLAB 实现 GPS OEM 板与计算机的通讯及信息处理[J].盐城工学院

学报,

2006.

  

[3]邬宽明.CAN 总线原理和应用系统设计[J].北京航空航天大学出版社,1996.

  

[4]王继国.CAN 总线控制器 MCP2515 的原理及应用[J].电测与仪表,2004.