import spidev
import time
+from adafruit_blinka.agnostic import detector
class SPI:
MSB = 0
self.baudrate = baudrate
self.mode = mode
self.bits = bits
+ self.chip = detector.chip
+
+ def set_no_cs(self):
+ # Linux SPI driver for AM33XX chip in BeagleBone and PocketBeagle
+ # does not support setting SPI_NO_CS mode bit (issue #104)
+ if not self.chip.AM33XX and not self.chip.IMX8MX and not self.chip.SAMA5:
+ try:
+ self._spi.no_cs = True # this doesn't work but try anyways
+ except AttributeError:
+ pass
def write(self, buf, start=0, end=None):
if not buf:
end = len(buf)
try:
self._spi.open(self._port, 0)
- try:
- self._spi.no_cs = True # this doesn't work but try anyways
- except AttributeError:
- pass
+ self.set_no_cs()
self._spi.max_speed_hz = self.baudrate
self._spi.mode = self.mode
self._spi.bits_per_word = self.bits
end = len(buf)
try:
self._spi.open(self._port, 0)
- try:
- self._spi.no_cs = True # this doesn't work but try anyways
- except AttributeError:
- pass
+ self.set_no_cs()
self._spi.max_speed_hz = self.baudrate
self._spi.mode = self.mode
self._spi.bits_per_word = self.bits
raise RuntimeError('Buffer slices must be of equal length.')
try:
self._spi.open(self._port, 0)
- try:
- self._spi.no_cs = True # this doesn't work but try anyways
- except AttributeError:
- pass
+ self.set_no_cs()
self._spi.max_speed_hz = self.baudrate
self._spi.mode = self.mode
self._spi.bits_per_word = self.bits