DM6467的CAN模块调试(SPI转CAN)

本文详细介绍了如何在DM6467上利用SPI接口与MCP2510芯片进行交互,以实现SPI到CAN总线的转换。首先进行了SPI回环测试,确保DM6467的SPI模块正常工作,接着配置MCP2510并进行回环测试,最后展示了MCP2510在正常工作模式下的CAN总线波形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值