spi调试步骤,mcp2515调试整理

1、先查看也硬件电路,一般都是单片机作为master,其他芯片作为slave。单片机的MOSI对应从机的SI,单片机的MISO对应从机的SO,如果两个引脚接反了,那是怎么调试都没有效果的。

2、单片机硬件spi的配置,spi我们有四种模式,模式要和芯片的模式一直,比如:mcp2515,支持高速SPI接口(10MHz):
支持 0,0 和 1,1 的 SPI 模式,这个可以网上找找,我这里也用图说明一下

说明如下
CPOL CPHA
MODE0 0 0
MODE1 0 1
MODE2 1 0
MODE3 1 1
CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)
CPHA: SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)
MODE0和MODE3最常用。
3、spi的速度,有的芯片,spi的速度有最低速度的要求,比如ads1259,不能太低,我使用的stm32配置为2.25Mbits/s,有的spi芯片是可以低速的。

4、调试的时候,可以先看看有没有clk,和自己配置是否相同。
5、然后单片机先把外设spi芯片复位后,先别着急写,可以看看读取芯片的寄存器是否和datasheet的默认值一致,如果一致,说明读取基本没有问题。

6、spi读取函数,要查看数据手册,在数据手册中,摘取了读取指令时序如下:

几个注意点:

1、红色的地方是不用添加任何延时的,写c语句的时候,直接spi发送即可。

2、cs的地方,数据手册建议是:先拉高,后拉低,再次写入数据,这样就可以做到时序上的同步,能快速的写入。

 7、mcp2515还有一个快速读取指令,不用写地址,就可以读取的,红色的地方,如果还想继续读取的,就不用拉高cs线,

比如我用can的时候,统一使用8个字节,那么发送完写的指令(比如0x91)后,连续读取8个数据,保存存到数组中,最后才拉高cs线。这样就可以加快spi的读取速度。

 

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11935042.html