DM6467没有自带的CAN总线控制器,不过有SPI控制器,所以要使用CAN总线的话可以用MCP2510芯片实现SPI总线到CAN总线的转换。总线转换电路如下所示。
对于CAN总线模块的测试需要先测试SPI模块,然后测试MCP2510部分。DM6467的SPI模块自带回环模式(loop-backmode),可以自发自收,对于测试比较方便。并且MCP2510也自带回环模式,也可以测试发送和接收。所以我们的测试过程是:
1, 初始化SPI模块,置为回环模式,测试收发数据。
2, 设置SPI模块为正常工作模式,配置MCP2510为回环模式,测试数据收发。
3, 用SPI配置MCP2510为正常工作模式,测试CAN总线上的波形。
1 SPI回环测试
对于SPI总线协议这里不做介绍,只讲DM6467中SPI模块初始化的步骤。
1, 置寄存器CPIGCR0=0以复位SPI模块,然后置SPIGCR0=1使能SPI模块,开始配置。
2, 配置SPIGCR1为loop-back模式,DM6467为SPI主设备,使用内部时钟(SYSCLK3)。
3, 配置SPIPC0选择我们使用了的四根SPI线:MISO,MOSI,CS0和CLK。
4, 配置SPIFMT,选择传输字长为1个字节,至于时钟相序的搭配需根据MCP2510的实际情况来配置,将在下一部分介绍,在回环模式时可以使用任意格式。
5, 配置SPIDAT1选择CS0。
6, 置SPIGCR1的第24位为1,使SPI处于工作状态。
具体的配置代码如下所示:
void SPI_init(void) { SPIGCR0 = 0; _waitmsec(100); SPIGCR0 = 1; _waitmsec(100); SPIGCR1 = 0 | (1 << 16) | (1 << 1) | (1 << 0); // loop |