SPI使用参考
本文介绍了SPI控制器,是一个同步串行接口,可以连接各种外部设备。spi控制器cs只支持低有效。有些芯片是CS高有效,需要加反相器(NPN管)。
-
硬件方面:默认使用SPI0_CZ SPI0_CK SPI0_DI SPI0_DO做SPI0,如果硬件需要切PAD MUX,请修改spi0_mode/spi1_mode
-
需要打开的内核config:
-
CONFIG_SPI=y
-
CONFIG_SPI_MASTER=y
-
CONFIG_SPI_SPIDEV=y
-
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有没有被复用其他功能。
-
-
应用层上通过ioctl 操作/dev/spidev0.0。内核里面有sample code。kernel\tools/spi/spidev_test.c
-
跑程序从spi0发送数据:
./spidev_test -D /dev/spidev0.0 -s 27000000
; 用示波器量SPI0_CK引脚有反应,说明spi0操作正