CAN协议控制器采用Microchip公司生产的MCP2515。MCP2515是带有SPI接口的独立CAN控制器,它完全支持CAN V2.0B技术规范,通信速率为1 Mb/s,包括2个接收缓冲器、6个29位验收滤波寄存器、2个29位验收屏蔽寄存器、3个具有优先级设定及发送中止的发送缓冲器、高速SPI接口(10 MHz)。
MCP2515与MCU的接口可以灵活配置。可通过引脚(如TXORTS)与MCU的数字I/O脚直接相连,利用数字I/O的读写功能控制MCP2515 的状态;也可以直接使用MCP2515的SPI指令集来实现所有的功能。用于控制MCP2515的SPI指令集如表1所列。
dsPIC30F3013通过SPI接口与MCP2515进行通信,dsPIC30F3013的SPI模块工作在主控模式,MCP2515工作在从动模式。dsPIC30F3013通过调用SPI指令来访问MCP2515的内部寄存器。
MCP2551是一个可容错的高速CAN收发器,它完全符合ISO-11898标准,包括能满足24 V电压要求。它的工作速率可高达1 Mb/s。
2 软件设计
dsPIC30F3013作为控制核心,它承担着数据采集处理和CAN通信的任务。数据采集部分的工作流程如图4所示。
dsPIC30F3013的12位ADC模块包含一块ADCBUFO至ADCBUFF的16字双口只读缓冲区,对ADC转换结果进行缓冲。本应用采样3路信号,并用扫描输入,经过12次ADC转换后,每次转换的数据依次写入ADCBUF0至ADCBUFB。即代号为0、3、6、9的AD-CBUF中存放的是同一个信号的不同时间的采样值,将这4个缓冲器的结果相加,然后再右移2位,即可实现该信号的4次平均值数字滤波。其他两个信号存放在与之相关的 ADCBUF中,处理方法与此相同。