code.py
 1  # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  import board
 6  import audiobusio
 7  from microcontroller import Pin
 8  
 9  
10  def is_hardware_i2s(bit_clock, word_select, data):
11      try:
12          p = audiobusio.I2SOut(bit_clock, word_select, data)
13          p.deinit()
14          return True
15      except ValueError:
16          return False
17  
18  
19  def get_unique_pins():
20      exclude = ['NEOPIXEL', 'APA102_MOSI', 'APA102_SCK']
21      pins = [pin for pin in [
22          getattr(board, p) for p in dir(board) if p not in exclude]
23              if isinstance(pin, Pin)]
24      unique = []
25      for p in pins:
26          if p not in unique:
27              unique.append(p)
28      return unique
29  
30  
31  for bit_clock_pin in get_unique_pins():
32      for word_select_pin in get_unique_pins():
33          for data_pin in get_unique_pins():
34              if bit_clock_pin is word_select_pin or bit_clock_pin is data_pin or word_select_pin\
35                      is data_pin:
36                  continue
37              if is_hardware_i2s(bit_clock_pin, word_select_pin, data_pin):
38                  print("Bit clock pin:", bit_clock_pin, "\t Word select pin:", word_select_pin,
39                        "\t Data pin:", data_pin)
40              else:
41                  pass