目的
进行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 | spi = spidev.SpiDev() |
发送数据
1 | def write_pot(input): |
故障排除
MOSI工作不正常
问题描述:使用逻辑分析仪测试输出,发现有SCK信号和CS信号,MOSI信号一直为高
解决方法:使用raspi-config关闭SPI后重启,再打开SPI,重启,故障排除(重启debug大法)
参考教程
python-spidev网站
Controlling an SPI device with the Raspberry Pi