Skip to content

Commit ad60894

Browse files
migrated from libgpio to VisionFive.gpio, added pwmio
1 parent f3ae3c0 commit ad60894

File tree

10 files changed

+296
-67
lines changed

10 files changed

+296
-67
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
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Starfive boards defenition"""
Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,47 @@
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev
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
7+
8+
D3 = pin.D3
69
D5 = pin.D5
7-
D6 = pin.D6
810
D7 = pin.D7
911
D8 = pin.D8
10-
D9 = pin.D9
1112
D10 = pin.D10
1213
D11 = pin.D11
1314
D12 = pin.D12
1415
D13 = pin.D13
15-
D14 = pin.D14
1616
D15 = pin.D15
1717
D16 = pin.D16
18-
D17 = pin.D17
1918
D18 = pin.D18
2019
D19 = pin.D19
21-
D20 = pin.D20
2220
D21 = pin.D21
2321
D22 = pin.D22
2422
D23 = pin.D23
2523
D24 = pin.D24
26-
D25 = pin.D25
2724
D26 = pin.D26
2825
D27 = pin.D27
29-
26+
D28 = pin.D28
27+
D29 = pin.D29
28+
D31 = pin.D31
29+
D32 = pin.D32
30+
D33 = pin.D33
31+
D35 = pin.D35
32+
D36 = pin.D36
33+
D37 = pin.D37
34+
D38 = pin.D38
35+
D40 = pin.D40
3036
# 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
37+
I2C_SDA = pin.I2C_SDA
38+
I2C_SCL = pin.I2C_SCL
3739

3840
# SPI
3941
SPI_MISO = pin.SPI_MISO
4042
SPI_MOSI = pin.SPI_MOSI
4143
SPI_SCLK = pin.SPI_SCLK
4244

43-
4445
# UART
4546
UART_TX = pin.UART_TX
4647
UART_RX = pin.UART_RX

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
2+
#
3+
# SPDX-License-Identifier: MIT
14
"""Definition for the StarFive JH7110 chip"""
Lines changed: 101 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,116 @@
1-
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
1+
# SPDX-FileCopyrightText: 2024 Vladimir Shtarev
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, bcm_number):
27+
self.id = bcm_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+
if mode is not None:
38+
if mode == self.IN:
39+
self._mode = self.IN
40+
GPIO.setup(self.id, GPIO.IN)
41+
elif mode == self.OUT:
42+
self._mode = self.OUT
43+
GPIO.setup(self.id, GPIO.OUT)
44+
else:
45+
raise RuntimeError("Invalid mode for pin: %s" % self.id)
46+
if pull is not None:
47+
if self._mode != self.IN:
48+
raise RuntimeError("Cannot set pull resistor on output")
49+
if pull == self.PULL_UP:
50+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
51+
elif pull == self.PULL_DOWN:
52+
GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
53+
else:
54+
raise RuntimeError("Invalid pull for pin: %s" % self.id)
55+
56+
def value(self, val=None):
57+
"""Set or return the Pin Value"""
58+
if val is not None:
59+
if val == self.LOW:
60+
self._value = val
61+
GPIO.output(self.id, val)
62+
elif val == self.HIGH:
63+
self._value = val
64+
GPIO.output(self.id, val)
65+
else:
66+
raise RuntimeError("Invalid value for pin")
67+
return None
68+
return GPIO.input(self.id)
69+
70+
71+
D3 = Pin(3)
72+
D5 = Pin(5)
73+
D7 = Pin(7)
74+
D8 = Pin(9)
75+
D10 = Pin(10)
76+
D11 = Pin(11)
77+
D12 = Pin(12)
78+
D13 = Pin(13)
79+
D15 = Pin(15)
80+
D16 = Pin(16)
81+
D18 = Pin(18)
82+
D19 = Pin(19)
83+
D21 = Pin(21)
84+
D22 = Pin(22)
85+
D23 = Pin(23)
86+
D24 = Pin(24)
87+
D26 = Pin(26)
88+
D27 = Pin(27)
89+
D28 = Pin(28)
90+
D29 = Pin(29)
91+
D31 = Pin(31)
92+
D32 = Pin(32)
93+
D33 = Pin(33)
94+
D35 = Pin(35)
95+
D36 = Pin(36)
96+
D37 = Pin(37)
97+
D38 = Pin(38)
98+
D40 = Pin(40)
3599
# 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)
100+
I2C_SDA = D3
101+
I2C_SCL = D5
42102

43103
# SPI
44-
SPI_MISO = D9
45-
SPI_MOSI = D10
46-
SPI_SCLK = D11
104+
SPI_MISO = D21
105+
SPI_MOSI = D19
106+
SPI_SCLK = D23
47107

48108
# UART
49-
UART_TX = D14
50-
UART_RX = D15
109+
UART_TX = D8
110+
UART_RX = D10
51111

52112
# 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-
)
113+
i2cPorts = ((0, I2C_SCL, I2C_SDA),)
58114

59115
# ordered as spiId, sckId, mosiId, misoId
60116
spiPorts = ((0, SPI_SCLK, SPI_MOSI, SPI_MISO),)

0 commit comments

Comments
 (0)