目的

进行IC测试,需要使用SPI输入数据并采集数据,考虑使用树莓派可以直接将数据采集和数据处理结合成一体,避免易出错的数据采集部分(单片机或FPGA实现)

树莓派SPI接口

物理接口

由上图中可以看出,树莓派的19,21,23构成了一个SPI接口,片选信号使用GPIO控制,本次并不使用自动的片选信号。速度方面,树莓派的接口有以下速度可以选择

速度
125.0 MHz 125000000
62.5 MHz 62500000
31.2 MHz 31200000
15.6 MHz 15600000
7.8 MHz 7800000
3.9 MHz 3900000
1953 kHz 1953000
976 kHz 976000
488 kHz 488000
244 kHz 244000
122 kHz 122000
61 kHz 61000
30.5 kHz 30500
15.2 kHz 15200
7629 Hz 7629

开启SPI接口

使用sudo raspi-config命令进入配置选项后选择SPI接口,打开后重启即可

Python驱动

Python使用spidev库驱动SPI

启动并配置SPI接口

1
2
3
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 15600000

发送数据

1
2
3
4
def write_pot(input):
msb = input >> 8
lsb = input & 0xFF
spi.xfer([msb, lsb])

故障排除

MOSI工作不正常

问题描述:使用逻辑分析仪测试输出,发现有SCK信号和CS信号,MOSI信号一直为高
解决方法:使用raspi-config关闭SPI后重启,再打开SPI,重启,故障排除(重启debug大法)

参考教程

python-spidev网站
Controlling an SPI device with the Raspberry Pi