1 # SPDX-FileCopyrightText: 2020 Melissa LeBlanc-Williams for Adafruit Industries
3 # SPDX-License-Identifier: MIT
7 ================================================================================
9 paralleldisplay for Blinka
11 **Software and Dependencies:**
14 https://github.com/adafruit/Adafruit_Blinka/releases
16 * Author(s): Melissa LeBlanc-Williams
20 from typing import Optional
21 import microcontroller
22 from circuitpython_typing import ReadableBuffer
24 __version__ = "0.0.0+auto.0"
25 __repo__ = "https://github.com/adafruit/Adafruit_Blinka_displayio.git"
29 """Manage updating a display over 8-bit parallel bus in the background while Python code
30 runs. This protocol may be refered to as 8080-I Series Parallel Interface in datasheets.
31 It doesn't handle display initialization.
37 data0: microcontroller.Pin,
38 command: microcontroller.Pin,
39 chip_select: microcontroller.Pin,
40 write: microcontroller.Pin,
41 read: Optional[microcontroller.Pin],
42 reset: Optional[microcontroller.Pin] = None,
43 frequency: int = 30000000,
45 # pylint: disable=unnecessary-pass
46 """Create a ParallelBus object associated with the given pins. The
47 bus is inferred from data0 by implying the next 7 additional pins on a given GPIO
50 The parallel bus and pins are then in use by the display until
51 displayio.release_displays() is called even after a reload. (It does this so
52 CircuitPython can use the display after your code is done.) So, the first time you
53 initialize a display bus in code.py you should call
54 :py:func`displayio.release_displays` first, otherwise it will error after the first
59 def reset(self) -> None:
60 """Performs a hardware reset via the reset pin. Raises an exception if called when
61 no reset pin is available.
63 raise NotImplementedError("ParallelBus reset has not been implemented yet")
65 def send(self, command: int, data: ReadableBuffer) -> None:
66 """Sends the given command value followed by the full set of data. Display state,
67 such as vertical scroll, set via ``send`` may or may not be reset once the code is
70 raise NotImplementedError("ParallelBus send has not been implemented yet")
76 _data: ReadableBuffer,
80 def _free(self) -> bool:
81 """Attempt to free the bus and return False if busy"""
83 def _begin_transaction(self) -> bool:
86 def _end_transaction(self) -> None: