Von English mit KI übersetzt ·
Testen Sie SPI zuerst für sich allein mit einem Loopback, ohne Chip. Ziehen Sie den MCP3008 ab, verbinden Sie MOSI (GPIO10, Pin 19) mit MISO (GPIO9, Pin 21) über einen Jumper und führen Sie aus:
wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-6.6.y/tools/spi/spidev_test.c
gcc -o spidev_test spidev_test.c
./spidev_test -D /dev/spidev0.0 -v -p "HELLO"
Wenn RX dieselben Bytes wie TX zeigt, ist die Pi-Seite in Ordnung. Wenn RX nur aus 00 oder FF besteht, läuft SPI nicht wirklich.Meine Vermutung liegt allerdings in Ihrem Code: spi.open(0, 1) verwendet die Chip-Select-Leitung CE1, also GPIO7 an Pin 26. Die meisten MCP3008-Anleitungen verbinden CS mit CE0, also GPIO8 an Pin 24. Wenn Ihr CS an Pin 24 liegt, wird der Chip nie selektiert, sein Ausgang schwebt, und Sie erhalten 0 mit gelegentlich 1023, wenn Sie ihn berühren. Entweder verlegen Sie die Leitung an Pin 26 oder ändern den Code auf spi.open(0, 0). Genau diese Verwechslung hatte ich bei der Arbeit an einem Testaufbau schon einmal.Dass Kanal 1 denselben Wert liefert, ist der Hinweis: Ein nicht selektierter Chip liefert auf jedem Kanal denselben Datenmüll.
Test SPI on its own first with a loopback, no chip. Pull the MCP3008 out, put a jumper from MOSI (GPIO10, pin 19) to MISO (GPIO9, pin 21) and run:
wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-6.6.y/tools/spi/spidev_test.c
gcc -o spidev_test spidev_test.c
./spidev_test -D /dev/spidev0.0 -v -p "HELLO"
If RX shows the same bytes as TX, the Pi side is fine. If RX is all 00 or FF, SPI isn’t really running.
My bet though is in your code: spi.open(0, 1) uses chip select CE1, which is GPIO7 on pin 26. Most MCP3008 tutorials wire CS to CE0, GPIO8 on pin 24. If your CS goes to pin 24, the chip is never selected, its output floats, and you get 0 with the odd 1023 when you touch it. Either move the wire to pin 26 or change the code to spi.open(0, 0). I’ve done this exact mixup on a bench at work.
Your channel 1 reading the same is the giveaway: an unselected chip gives the same junk on every channel.

