zoukankan      html  css  js  c++  java
  • 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的读取速度。

     

  • 相关阅读:
    在centos7上使用packstack安装openstack
    解决 React-Native: Android project not found. Maybe run react-native android first?
    javascript_11-函数面试题
    javascript_10-函数
    前端面试记录NO.1
    javascript_09-数组
    javascript_08-while 和 do while
    javascript_07-break 和 continue
    javascript_05-操作符
    javascript_06-控制流程
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11935042.html
Copyright © 2011-2022 走看看