Skip to content

Commit 393394e

Browse files
Merge pull request #2 from DarkMechanikum/dev
Dev
2 parents 9de26f1 + 31d7e70 commit 393394e

File tree

12 files changed

+300
-73
lines changed

12 files changed

+300
-73
lines changed
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
"""Starffive boards defenition"""
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev, Jetbrains Research
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Starfive boards defenition"""
Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,42 @@
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev, Jetbrains Research
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Starfive VisionFive2 board config"""
15
from adafruit_blinka.microcontroller.starfive.JH7110 import pin
26

3-
D0 = pin.D0
4-
D1 = pin.D1
5-
D4 = pin.D4
6-
D5 = pin.D5
7-
D6 = pin.D6
7+
88
D7 = pin.D7
9-
D8 = pin.D8
10-
D9 = pin.D9
11-
D10 = pin.D10
129
D11 = pin.D11
1310
D12 = pin.D12
1411
D13 = pin.D13
15-
D14 = pin.D14
1612
D15 = pin.D15
1713
D16 = pin.D16
18-
D17 = pin.D17
1914
D18 = pin.D18
20-
D19 = pin.D19
21-
D20 = pin.D20
22-
D21 = pin.D21
2315
D22 = pin.D22
24-
D23 = pin.D23
2516
D24 = pin.D24
26-
D25 = pin.D25
2717
D26 = pin.D26
2818
D27 = pin.D27
29-
19+
D28 = pin.D28
20+
D29 = pin.D29
21+
D31 = pin.D31
22+
D35 = pin.D35
23+
D36 = pin.D36
24+
D37 = pin.D37
25+
D38 = pin.D38
26+
D40 = pin.D40
3027
# I2C
31-
SDA = pin.I2C1_SDA
32-
SCL = pin.I2C1_SCL
33-
SDA2 = pin.I2C2_SDA
34-
SCL2 = pin.I2C2_SCL
35-
SDA3 = pin.I2C3_SDA
36-
SCL3 = pin.I2C3_SCL
28+
SDA = pin.I2C_SDA
29+
SCL = pin.I2C_SCL
3730

3831
# SPI
3932
SPI_MISO = pin.SPI_MISO
4033
SPI_MOSI = pin.SPI_MOSI
4134
SPI_SCLK = pin.SPI_SCLK
4235

43-
4436
# UART
4537
UART_TX = pin.UART_TX
4638
UART_RX = pin.UART_RX
39+
40+
# PWM
41+
PWM1 = pin.PWM1
42+
PWM2 = pin.PWM2

src/adafruit_blinka/microcontroller/generic_micropython/i2c.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
class I2C:
99
"""I2C Class for Generic MicroPython"""
1010

11-
1211
MASTER = 0
1312

1413
# pylint: disable=unused-argument
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev, Jetbrains Research
2+
#
3+
# SPDX-License-Identifier: MIT
14
"""Definition for the StarFive JH7110 chip"""
Lines changed: 100 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,115 @@
1-
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev, Jetbrains Research
22
#
33
# SPDX-License-Identifier: MIT
44
"""A Pin class for use with StarFive JH7110."""
55

6-
from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
7-
8-
D0 = Pin(9)
9-
D1 = Pin(10)
10-
D4 = Pin(46)
11-
D5 = Pin(8)
12-
D6 = Pin(6)
13-
D7 = Pin(11)
14-
D8 = Pin(15)
15-
D9 = Pin(16)
16-
D10 = Pin(18)
17-
D11 = Pin(12)
18-
D12 = Pin(7)
19-
D13 = Pin(5)
20-
D14 = Pin(14)
21-
D15 = Pin(13)
22-
D16 = Pin(4)
23-
D17 = Pin(44)
24-
D18 = Pin(45)
25-
D19 = Pin(3)
26-
D20 = Pin(2)
27-
D21 = Pin(0)
28-
D22 = Pin(20)
29-
D23 = Pin(21)
30-
D24 = Pin(19)
31-
D25 = Pin(17)
32-
D26 = Pin(1)
33-
D27 = Pin(22)
6+
import VisionFive.gpio as GPIO
347

8+
GPIO.setmode(GPIO.BOARD)
9+
10+
11+
class Pin:
12+
"""Pins don't exist in CPython so...lets make our own!"""
13+
14+
IN = 0
15+
OUT = 1
16+
LOW = 0
17+
HIGH = 1
18+
PULL_NONE = 0
19+
PULL_UP = 1
20+
PULL_DOWN = 2
21+
22+
id = None
23+
_value = LOW
24+
_mode = IN
25+
26+
def __init__(self, number):
27+
self.id = number
28+
29+
def __repr__(self):
30+
return str(self.id)
31+
32+
def __eq__(self, other):
33+
return self.id == other
34+
35+
def init(self, mode=IN, pull=None):
36+
"""Initialize the Pin"""
37+
print(self.id)
38+
if mode is not None:
39+
if mode == self.IN:
40+
self._mode = self.IN
41+
GPIO.setup(self.id, GPIO.IN)
42+
elif mode == self.OUT:
43+
self._mode = self.OUT
44+
GPIO.setup(self.id, GPIO.OUT)
45+
else:
46+
raise RuntimeError("Invalid mode for pin: %s" % self.id)
47+
if pull is not None:
48+
if self._mode != self.IN:
49+
raise RuntimeError("Cannot set pull resistor on output")
50+
if pull == self.PULL_UP:
51+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
52+
elif pull == self.PULL_DOWN:
53+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
54+
else:
55+
raise RuntimeError("Invalid pull for pin: %s" % self.id)
56+
57+
def value(self, val=None):
58+
"""Set or return the Pin Value"""
59+
if val is not None:
60+
if val == self.LOW:
61+
self._value = val
62+
GPIO.output(self.id, val)
63+
elif val == self.HIGH:
64+
self._value = val
65+
GPIO.output(self.id, val)
66+
else:
67+
raise RuntimeError("Invalid value for pin")
68+
return None
69+
return GPIO.input(self.id)
70+
71+
72+
D7 = Pin(7)
73+
D11 = Pin(11)
74+
D12 = Pin(12)
75+
D13 = Pin(13)
76+
D15 = Pin(15)
77+
D16 = Pin(16)
78+
D18 = Pin(18)
79+
D22 = Pin(22)
80+
D24 = Pin(24)
81+
D26 = Pin(26)
82+
D27 = Pin(27)
83+
D28 = Pin(28)
84+
D29 = Pin(29)
85+
D31 = Pin(31)
86+
D35 = Pin(35)
87+
D36 = Pin(36)
88+
D37 = Pin(37)
89+
D38 = Pin(38)
90+
D40 = Pin(40)
3591
# I2C
36-
I2C1_SDA = Pin(48)
37-
I2C1_SCL = Pin(47)
38-
I2C2_SDA = Pin(59)
39-
I2C2_SCL = Pin(60)
40-
I2C3_SDA = Pin(61)
41-
I2C3_SCL = Pin(62)
92+
I2C_SDA = Pin(3)
93+
I2C_SCL = Pin(5)
4294

4395
# SPI
44-
SPI_MISO = D9
45-
SPI_MOSI = D10
46-
SPI_SCLK = D11
96+
SPI_MISO = Pin(21)
97+
SPI_MOSI = Pin(19)
98+
SPI_SCLK = Pin(23)
4799

48100
# UART
49-
UART_TX = D14
50-
UART_RX = D15
101+
UART_TX = Pin(8)
102+
UART_RX = Pin(10)
103+
104+
# PWM, does not support pwmio
105+
PWM1 = Pin(32)
106+
PWM2 = Pin(33)
51107

52108
# ordered as i2cId, SCL, SDA
53-
i2cPorts = (
54-
(0, I2C1_SCL, I2C1_SDA),
55-
(1, I2C2_SCL, I2C2_SDA),
56-
(2, I2C3_SCL, I2C3_SDA),
57-
)
109+
i2cPorts = ((0, I2C_SCL, I2C_SDA),)
58110

59111
# ordered as spiId, sckId, mosiId, misoId
60112
spiPorts = ((0, SPI_SCLK, SPI_MOSI, SPI_MISO),)
113+
114+
# ordered as uartId, txId, rxId
115+
uartPorts = ((0, UART_TX, UART_RX),)

0 commit comments

Comments
 (0)