arduino UNO、arduino 2560和can总线-基于mcp2515的一些基础通讯

最近小白做了有关arduino和can总线的通信,先在网上买了基于Arduino的CAN模块,买的时候别买错了,要Arduino版的不是51版的(小白就买错一次)。arduino UNO、arduino 2560和can总线-基于mcp2515的一些基础通讯_第1张图片

 然后,我就根据淘宝店家给的Arduino库和连线方式,用MEGA2560和CAN模块通信,但是串口显示 Can init fail!!!最后我用Arduino UNO 和CAN模块通信,串口显示出数据了。
   这个是 CAN模块Arduino UNO连线方式:
它的库请在下面的连接下载。
arduino UNO、arduino 2560和can总线-基于mcp2515的一些基础通讯_第2张图片
       本来任务已经完成,不过对于MEGA2560一直不能通信我感到很好奇,于是我问了一下度娘,查到 Arduino UNO的SPI引脚和 MEGA2560的SPI引脚不同,
这个是 MEGA2560的SPI引脚:
arduino UNO、arduino 2560和can总线-基于mcp2515的一些基础通讯_第3张图片
于是乎, 我又换了引脚,结果 串口 还是显示 Can init fail!!!为什么啊!
没有办法,我只好用示波器来测这两个单片机的SPI因脚的波形,发现两个单片机的SCK引脚都是发出4MHZ的脉冲信号,MOSI发出的是载波信号,MISO发出的 是低电平(我测的是发送程序),只有SS信号不一样,哈哈,终于发现倪端了!尽管SS是SPI的片选信号,可是我用的CAN库里好像只认 Arduino UNO的SPI的SS信号-10号引脚,于是我用2560的10号角接SS端,结果还是不行~
     最后,我在网上发现了另一个库,可以改SS信号的引脚,我就用了它的例程,把SS信号随便改了一个数字引脚,结果就成功了!而且 Arduino UNO也可以用。
Arduino 库:
仅Arduino UNO:可以用 http://yun.baidu.com/s/1qX3adXy
Arduino UNO和 MEGA2560都可以用: http://yun.baidu.com/s/1pKjzo4V


你可能感兴趣的:(嵌入式)