]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #959 from mrv96/ft4232h
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Mon, 5 May 2025 19:50:45 +0000 (12:50 -0700)
committerGitHub <noreply@github.com>
Mon, 5 May 2025 19:50:45 +0000 (12:50 -0700)
Add support to FT4232H

12 files changed:
src/adafruit_blinka/board/ftdi_ft4232h.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/pin.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/i2c.py
src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/pin.py
src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/spi.py
src/adafruit_blinka/microcontroller/ftdi_mpsse/mpsse/url.py
src/board.py
src/busio.py
src/digitalio.py
src/microcontroller/__init__.py
src/microcontroller/pin.py

diff --git a/src/adafruit_blinka/board/ftdi_ft4232h.py b/src/adafruit_blinka/board/ftdi_ft4232h.py
new file mode 100644 (file)
index 0000000..6e49c70
--- /dev/null
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the FTDI FT4232H"""
+from adafruit_blinka.microcontroller.ftdi_mpsse.ft4232h import pin
+
+# MPSSE A
+AD4 = pin.AD4
+AD5 = pin.AD5
+AD6 = pin.AD6
+AD7 = pin.AD7
+
+SDA0 = pin.SDA0
+SCL0 = pin.SCL0
+
+SCK0 = pin.SCK0
+SCLK0 = pin.SCLK0
+MOSI0 = pin.MOSI0
+MISO0 = pin.MISO0
+
+# MPSSE B
+BD4 = pin.BD4
+BD5 = pin.BD5
+BD6 = pin.BD6
+BD7 = pin.BD7
+
+SDA1 = pin.SDA1
+SCL1 = pin.SCL1
+
+SCK1 = pin.SCK1
+SCLK1 = pin.SCLK1
+MOSI1 = pin.MOSI1
+MISO1 = pin.MISO1
diff --git a/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/__init__.py b/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/pin.py b/src/adafruit_blinka/microcontroller/ftdi_mpsse/ft4232h/pin.py
new file mode 100644 (file)
index 0000000..ad946f2
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""FT4232H pin names"""
+
+from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin
+
+# See https://eblot.github.io/pyftdi/pinout.html for detailed FTDI device pinout information
+
+# MPSSE Port A
+AD4 = Pin(4, interface_id=0)
+AD5 = Pin(5, interface_id=0)
+AD6 = Pin(6, interface_id=0)
+AD7 = Pin(7, interface_id=0)
+
+SCL0 = Pin(interface_id=0)
+SDA0 = Pin(interface_id=0)
+SCK0 = SCLK0 = Pin(interface_id=0)
+MOSI0 = Pin(interface_id=0)
+MISO0 = Pin(interface_id=0)
+
+# MPSSE Port B
+BD4 = Pin(4, interface_id=1)
+BD5 = Pin(5, interface_id=1)
+BD6 = Pin(6, interface_id=1)
+BD7 = Pin(7, interface_id=1)
+
+SCL1 = Pin(interface_id=1)
+SDA1 = Pin(interface_id=1)
+SCK1 = SCLK1 = Pin(interface_id=1)
+MOSI1 = Pin(interface_id=1)
+MISO1 = Pin(interface_id=1)
+
+i2cPorts = (
+    (0, SCL0, SDA0),
+    (1, SCL1, SDA1),
+)
+
+spiPorts = (
+    (0, SCLK0, MOSI0, MISO0),
+    (1, SCLK1, MOSI1, MISO1),
+)
index b98c59ba649d9fcc829fde27bc37e95238087235..58973ec7c95108e5deef2deb2d1ff7721ad3a1ce 100644 (file)
@@ -5,7 +5,7 @@
 from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin
 from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import (
     get_ft232h_url,
-    get_ft2232h_url,
+    get_ftx232h_url,
 )
 
 
@@ -32,7 +32,7 @@ class I2C:
         if i2c_id is None:
             self._i2c.configure(get_ft232h_url(), frequency=frequency)
         else:
-            self._i2c.configure(get_ft2232h_url(i2c_id), frequency=frequency)
+            self._i2c.configure(get_ftx232h_url(i2c_id), frequency=frequency)
         Pin.mpsse_gpio = self._i2c.get_gpio()
 
     def scan(self):
index cf9316195cdffc6da0ca10f159c9f3b1fb776441..b8423d7222109831cb5fb782040ebf67b5b3102e 100644 (file)
@@ -5,7 +5,7 @@
 
 from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import (
     get_ft232h_url,
-    get_ft2232h_url,
+    get_ftx232h_url,
 )
 
 
@@ -35,7 +35,7 @@ class Pin:
             if interface_id is None:
                 i2c.configure(get_ft232h_url())
             else:
-                i2c.configure(get_ft2232h_url(interface_id))
+                i2c.configure(get_ftx232h_url(interface_id))
             Pin.mpsse_gpio = i2c.get_gpio()
         # check if pin is valid
         if pin_id:
index d5f1e917925c7a90f0d2a7f8997a70c676304798..da644b45942ace26f9992f76b24260097217e36b 100644 (file)
@@ -5,7 +5,7 @@
 from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.pin import Pin
 from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.url import (
     get_ft232h_url,
-    get_ft2232h_url,
+    get_ftx232h_url,
 )
 
 
@@ -25,7 +25,7 @@ class SPI:
         if spi_id is None:
             self._spi.configure(get_ft232h_url())
         else:
-            self._spi.configure(get_ft2232h_url(spi_id + 1))
+            self._spi.configure(get_ftx232h_url(spi_id + 1))
         self._port = self._spi.get_port(0)
         self._port.set_frequency(100000)
         self._port._cpol = 0
index e264b947f57ff425effe1cc82cd7d02cca34b5fe..8e2a49c3705b4e89ba6961d7666053d8bd56cfd9 100644 (file)
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 """
 Support for getting the URL from the BLINKA_FT232H
-and BLINKA_FT2232H_{} environment variables.
+and BLINKA_FTX232H_{} environment variables.
 """
 
 import os
@@ -23,15 +23,17 @@ def get_ft232h_url():
     return "ftdi://ftdi:ft232h/1"
 
 
-def get_ft2232h_url(interface_id):
+def get_ftx232h_url(interface_id):
     """
-    Return the FTDI url to use. If BLINKA_FT2232H_{} starts with ftdi:, returns
+    Return the FTDI url to use. If BLINKA_FTX232H_{} starts with ftdi:, returns
     that. Otherwise, returns a default value.
     """
 
-    url = os.environ.get("BLINKA_FT2232H_{}".format(interface_id), "1")
+    url = os.environ.get("BLINKA_FTX232H_{}".format(interface_id), "1")
 
     if url.startswith("ftdi:"):
         return url
 
-    return "ftdi://ftdi:ft2232h/{}".format(interface_id + 1)
+    if os.environ.get("BLINKA_FT2232H", None):
+        return "ftdi://ftdi:ft2232h/{}".format(interface_id + 1)
+    return "ftdi://ftdi:ft4232h/{}".format(interface_id + 1)
index cf32fd62ba36d3d5ff118ebe2c4c57e0e1dd01f2..5aec198d99eb6c298442faad7a2fe7c8365482c4 100644 (file)
@@ -239,6 +239,9 @@ elif board_id == ap_board.FTDI_FT232H:
 elif board_id == ap_board.FTDI_FT2232H:
     from adafruit_blinka.board.ftdi_ft2232h import *
 
+elif board_id == ap_board.FTDI_FT4232H:
+    from adafruit_blinka.board.ftdi_ft4232h import *
+
 elif board_id == ap_board.BINHO_NOVA:
     from adafruit_blinka.board.binho_nova import *
 
index 234bc4fd156aefb14459e3aefd91313d9f7cb8f8..7224a58254b41972f11b9c1cfa7a1f7f38507eaa 100644 (file)
@@ -151,6 +151,8 @@ class I2C(Lockable):
                 frequency = None  # Set to None if default to avoid triggering warning
         elif detector.board.ftdi_ft2232h:
             from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.i2c import I2C as _I2C
+        elif detector.board.ftdi_ft4232h:
+            from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.i2c import I2C as _I2C
         else:
             from adafruit_blinka.microcontroller.generic_micropython.i2c import (
                 I2C as _I2C,
@@ -358,6 +360,8 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         elif detector.board.ftdi_ft2232h:
             from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import SPI as _SPI
+        elif detector.board.ftdi_ft4232h:
+            from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import SPI as _SPI
         elif detector.board.OS_AGNOSTIC_BOARD:
             from adafruit_blinka.microcontroller.generic_agnostic_board.spi import (
                 SPI as _SPI,
@@ -396,6 +400,10 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import (
                 SPI as _SPI,
             )
+        elif detector.board.ftdi_ft4232h:
+            from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import (
+                SPI as _SPI,
+            )
         elif detector.board.binho_nova:
             from adafruit_blinka.microcontroller.nova.spi import SPI as _SPI
         elif detector.board.greatfet_one:
index a35f377533d7f169671e55ed042075941502c81e..50183a6047cfb258fe91cb6150c6235b42d70e98 100644 (file)
@@ -126,6 +126,8 @@ elif detector.board.ftdi_ft232h:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin
 elif detector.board.ftdi_ft2232h:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import Pin
+elif detector.board.ftdi_ft4232h:
+    from adafruit_blinka.microcontroller.ftdi_mpsse.ft4232h.pin import Pin
 elif detector.board.binho_nova:
     from adafruit_blinka.microcontroller.nova.pin import Pin
 elif detector.board.greatfet_one:
index 9f5e0fa779a477496821fc7c61000067684b8d46..93a6f7e705561960d4723d7ed75c585af3fcf382 100644 (file)
@@ -139,6 +139,8 @@ elif chip_id == ap_chip.FT232H:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h import *
 elif chip_id == ap_chip.FT2232H:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h import *
+elif chip_id == ap_chip.FT4232H:
+    from adafruit_blinka.microcontroller.ftdi_mpsse.ft4232h import *
 elif chip_id == ap_chip.PENTIUM_N3710:
     from adafruit_blinka.microcontroller.pentium.n3710 import *
 elif chip_id == ap_chip.ATOM_J4105:
index 1241672658c31abf661b82dfb4913979cbad543a..9cfe4b6f1e18d1b5cb7449d2a8a60610c08e0168 100644 (file)
@@ -92,6 +92,8 @@ elif chip_id == ap_chip.FT232H:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import *
 elif chip_id == ap_chip.FT2232H:
     from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import *
+elif chip_id == ap_chip.FT4232H:
+    from adafruit_blinka.microcontroller.ftdi_mpsse.ft4232h.pin import *
 elif chip_id == ap_chip.BINHO:
     from adafruit_blinka.microcontroller.nova.pin import *
 elif chip_id == ap_chip.LPC4330: