Traduit de English par IA ·
Testez d’abord le SPI seul, en boucle (loopback), sans puce. Retirez le MCP3008, reliez MOSI (GPIO10, broche 19) à MISO (GPIO9, broche 21) avec un cavalier, puis lancez :
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"
Si RX affiche les mêmes octets que TX, la partie Pi fonctionne. Si RX ne contient que des 00 ou des FF, le SPI ne tourne pas vraiment.Mon intuition porte cependant sur votre code : spi.open(0, 1) utilise la sélection de puce CE1, soit GPIO7 sur la broche 26. La plupart des tutoriels MCP3008 câblent CS sur CE0, soit GPIO8 sur la broche 24. Si votre CS va à la broche 24, la puce n’est jamais sélectionnée, sa sortie flotte, et vous obtenez 0 avec de temps en temps 1023 quand vous la touchez. Déplacez le fil sur la broche 26 ou remplacez le code par spi.open(0, 0). J’ai fait exactement cette confusion sur un banc de test au travail.Le fait que le canal 1 donne la même valeur est révélateur : une puce non sélectionnée renvoie les mêmes données parasites sur chaque canal.
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.

