目的
进行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接口
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 15600000
发送数据
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