SPI使用参考

本文介绍了SPI控制器,是一个同步串行接口,可以连接各种外部设备。spi控制器cs只支持低有效。有些芯片是CS高有效,需要加反相器(NPN管)。

  1. 硬件方面:默认使用SPI0_CZ SPI0_CK SPI0_DI SPI0_DO做SPI0,如果硬件需要切PAD MUX,请修改spi0_mode/spi1_mode

  2. 需要打开的内核config:

    1. CONFIG_SPI=y

    2. CONFIG_SPI_MASTER=y

    3. CONFIG_SPI_SPIDEV=y

    4. CONFIG_MS_SPI_INFINITY=y

    如下修改dtsi:

    spi: spi {  
        compatible = "sstar_spi";  
        io_phy_addr = <0x1f000000>;  
        banks = <0x1110>,<0x1111>,<0x1038>,<0x101E>,<0x100B>;  
        interrupts = <GIC_SPI INT_IRQ_MSPI_0 IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI INT_IRQ_MSPI_1 IRQ_TYPE_LEVEL_HIGH>;  
        dma = <0>;  
        spi0_mode = <1>;    //表示SPI0使用哪一组PAD。  
        spi1_mode = <1>;  
        status = "ok";  
    };
    

    同时需要检查dts和dtsi的SPI0_CZ SPI0_CK SPI0_DI SPI0_DO有没有被复用其他功能。

  3. 应用层上通过ioctl 操作/dev/spidev0.0。内核里面有sample code。kernel\tools/spi/spidev_test.c

  4. 跑程序从spi0发送数据:./spidev_test -D /dev/spidev0.0 -s 27000000; 用示波器量SPI0_CK引脚有反应,说明spi0操作正