SPIDevice selects an active-high device as soon as it is created
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 73/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Domaine
- embedded-iot
Piste de recherche
Lisez shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c, en vous concentrant sur l’appel à switch_to_output et sur la façon dont il utilise cs_active_value. Reproduisez l’exemple fourni et vérifiez que la construction laisse un périphérique actif à l’état haut non sélectionné, tandis qu’une transaction le sélectionne et que la sortie de la transaction le désélectionne.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
SPIDevice() sets the chip select pin high as soon as it is created.
That is wrong for a device with cs_active_value=True: it selects the device before any transaction.
The Python BusDevice library sets the pin to not cs_active_value instead.
import board, busio, digitalio
from adafruit_bus_device.spi_device import SPIDevice
spi = busio.SPI(board.GP18, MOSI=board.GP19, MISO=board.GP16)
cs = digitalio.DigitalInOut(board.GP17)
print("fresh", cs.direction, cs.value)
d = SPIDevice(spi, cs, cs_active_value=True)
print("constructed", cs.direction, cs.value)
with d:
print("in transaction", cs.value)
print("after transaction", cs.value)
fresh digitalio.Direction.INPUT False
constructed digitalio.Direction.OUTPUT True
in transaction True
after transaction False
constructed should be False.
| Board | Raspberry Pi Pico (RP2040) |
| Version | 11.0.0-alpha.3-7-g95f9ddb95b, also seen on the desktop port |
| Cause | shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c calls switch_to_output(..., true, ...) regardless of cs_active_value |
| Also on | 10.3.x (same line) |
Found with Claude while testing #11865; I ran the code above on the Pico myself.
- Langage dominant
- C
- Étoiles
- 4.6k
- Forks
- 1.4k
- Merge moyen
- 1 j 1 h
- PR mergées (30 j)
- 208
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de adafruit/circuitpython
-
Update Learn Guides for #11777Ouvertedocumentation rp2
Difficulté 1/5 1-3 heures Accessibilité débutants 67/100
adafruit/circuitpython#11779 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
documentation enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
adafruit/circuitpython#11689 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement network
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
adafruit/circuitpython#11845 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
adafruit/circuitpython#11834 ·
Les mainteneurs répondent en général sous 1 jour
-
audio bug crash esp32-s3 needs retest
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
adafruit/circuitpython#11822 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de adafruit/circuitpython
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
gnif/LookingGlass#1352 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bazel-contrib/rules_go#4784 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour