1 """NXP LPC4330 pin names"""
3 from greatfet import GreatFET
4 from greatfet.interfaces.adc import ADC
7 except ModuleNotFoundError:
9 "Unable to create GreatFET object. Make sure library is "
10 "installed and the device is connected."
11 ) from ModuleNotFoundError
15 """A basic Pin class for the NXP LPC4330 that
16 acts as a wrapper for the GreatFET api.
20 OUT = gf.gpio.DIRECTION_OUT
21 IN = gf.gpio.DIRECTION_IN
29 def __init__(self, pin_id=None):
34 def init(self, mode=IN, pull=None):
35 """Initialize the Pin"""
37 raise RuntimeError("Can not init a None type pin.")
39 raise NotImplementedError("Internal pullups and pulldowns not supported")
40 if mode in (Pin.IN, Pin.OUT):
41 if self.id not in gf.GPIO_MAPPINGS:
42 raise ValueError("Pin does not have GPIO capabilities")
43 self._pin = gf.gpio.get_pin(self.id)
44 self._pin.set_direction(mode)
46 # ADC only available on these pins
47 if self.id not in gf.ADC_MAPPINGS:
48 raise ValueError("Pin does not have ADC capabilities")
49 self._pin = ADC(gf, self.id)
51 # DAC only available on these pins
52 if self.id != "J2_P5":
53 raise ValueError("Pin does not have DAC capabilities")
54 self._pin = gf.apis.dac
55 self._pin.initialize()
57 raise ValueError("Incorrect pin mode: {}".format(mode))
60 def value(self, val=None):
61 """Set or return the Pin Value"""
63 if self._mode in (Pin.IN, Pin.OUT):
66 return self._pin.get_state()
68 if val in (Pin.LOW, Pin.HIGH):
69 self._pin.set_state(val)
72 raise ValueError("Invalid value for pin.")
74 if self._mode == Pin.ADC:
77 return self._pin.read_samples()[0]
79 raise AttributeError("'AnalogIn' object has no attribute 'value'")
81 if self._mode == Pin.DAC:
84 raise AttributeError("unreadable attribute")
86 self._pin.set_value(int(val))
89 "No action for mode {} with value {}".format(self._mode, val)
93 # create pin instances for each pin
102 J1_P10 = Pin("J1_P10")
103 J1_P12 = Pin("J1_P12")
104 J1_P13 = Pin("J1_P13")
105 J1_P14 = Pin("J1_P14")
106 J1_P15 = Pin("J1_P15")
107 J1_P16 = Pin("J1_P16")
108 J1_P17 = Pin("J1_P17")
109 J1_P18 = Pin("J1_P18")
110 J1_P19 = Pin("J1_P19")
111 J1_P20 = Pin("J1_P20")
112 J1_P21 = Pin("J1_P21")
113 J1_P22 = Pin("J1_P22")
114 J1_P23 = Pin("J1_P23")
115 J1_P24 = Pin("J1_P24")
116 J1_P25 = Pin("J1_P25")
117 J1_P26 = Pin("J1_P26")
118 J1_P27 = Pin("J1_P27")
119 J1_P28 = Pin("J1_P28")
120 J1_P29 = Pin("J1_P29")
121 J1_P30 = Pin("J1_P30")
122 J1_P31 = Pin("J1_P31")
123 J1_P32 = Pin("J1_P32")
124 J1_P33 = Pin("J1_P33")
125 J1_P34 = Pin("J1_P34")
126 J1_P35 = Pin("J1_P35")
127 J1_P37 = Pin("J1_P37")
128 J1_P39 = Pin("J1_P39") # MOSI
129 J1_P40 = Pin("J1_P40") # MISO
135 J2_P5 = Pin("J2_P5") # ADC, ADC, DAC
139 J2_P9 = Pin("J2_P9") # ADC, GPIO
140 J2_P10 = Pin("J2_P10")
141 J2_P13 = Pin("J2_P13")
142 J2_P14 = Pin("J2_P14")
143 J2_P15 = Pin("J2_P15")
144 J2_P16 = Pin("J2_P16") # GPIO, ADC
145 J2_P18 = Pin("J2_P18")
146 J2_P19 = Pin("J2_P19")
147 J2_P20 = Pin("J2_P20")
148 J2_P22 = Pin("J2_P22")
149 J2_P23 = Pin("J2_P23")
150 J2_P24 = Pin("J2_P24")
151 J2_P25 = Pin("J2_P25")
152 J2_P27 = Pin("J2_P27")
153 J2_P28 = Pin("J2_P28")
154 J2_P29 = Pin("J2_P29")
155 J2_P30 = Pin("J2_P30")
156 J2_P31 = Pin("J2_P31")
157 J2_P33 = Pin("J2_P33")
158 J2_P34 = Pin("J2_P34")
159 J2_P35 = Pin("J2_P35")
160 J2_P36 = Pin("J2_P36")
161 J2_P37 = Pin("J2_P37")
162 J2_P38 = Pin("J2_P38")
167 J7_P4 = Pin("J7_P4") # ADC, ADC
168 J7_P5 = Pin("J7_P5") # ADC, ADC
172 J7_P13 = Pin("J7_P13")
173 J7_P14 = Pin("J7_P14")
174 J7_P15 = Pin("J7_P15")
175 J7_P16 = Pin("J7_P16")
176 J7_P17 = Pin("J7_P17")
177 J7_P18 = Pin("J7_P18")
189 # ordered as uartId, txId, rxId
190 uartPorts = ((0, TX, RX),)
192 # pwm outputs: pwm channel and pin