• 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的读取速度。

     

  • 相关阅读:
    [C]static变量详解
    [LINUX]重定向
    [PHP]一些坑
    [PHP]常量的一些特性
    [数学]三角函数(一)
    [PHP]session的一些要点
    [C]控制外部变量访问权限的extern和static关键字
    c语言基础----共用体
    c语言基础----字符串数组
    c语言基础----函数库
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11935042.html
Copyright © 2020-2023  润新知