@@ -20,139 +20,257 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
20
SOFTWARE.
21
21
*/
22
22
23
-
24
23
#include " ap3_iomaster.h"
25
24
26
- IOMaster::IOMaster (uint8_t instance){
25
+ IOMaster::IOMaster (uint8_t instance)
26
+ {
27
27
_instance = instance;
28
28
}
29
29
30
- ap3_err_t IOMaster::initialize ( void ){
30
+ ap3_err_t IOMaster::initialize (void )
31
+ {
31
32
return initialize (_config);
32
33
}
33
34
34
- ap3_err_t IOMaster::initialize (am_hal_iom_config_t config){
35
+ ap3_err_t IOMaster::initialize (am_hal_iom_config_t config)
36
+ {
35
37
uint32_t retVal32 = 0 ;
36
38
_config = config;
37
39
38
40
am_hal_iom_disable (_handle);
39
41
am_hal_iom_uninitialize (_handle);
40
-
42
+
41
43
retVal32 = am_hal_iom_initialize (_instance, &_handle);
42
- if (retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
44
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
45
+ {
46
+ return AP3_ERR;
47
+ }
43
48
44
49
retVal32 = am_hal_iom_power_ctrl (_handle, AM_HAL_SYSCTRL_WAKE, false );
45
- if (retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
46
-
50
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
51
+ {
52
+ return AP3_ERR;
53
+ }
54
+
47
55
retVal32 = am_hal_iom_configure (_handle, &_config);
48
- if (retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
56
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
57
+ {
58
+ return AP3_ERR;
59
+ }
49
60
50
61
retVal32 = am_hal_iom_enable (_handle);
51
- if (retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
62
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
63
+ {
64
+ return AP3_ERR;
65
+ }
52
66
53
67
// Configure the IOM pins. (Must be done by the inherited classes [this is just a reminder])
54
68
55
69
return AP3_OK;
56
70
}
57
71
58
- ap3_err_t IOMaster::deinitialize ( void ){
72
+ ap3_err_t IOMaster::deinitialize (void )
73
+ {
59
74
uint32_t retVal32 = 0 ;
60
-
75
+
61
76
retVal32 = am_hal_iom_disable (_handle);
62
- if ( retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
77
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
78
+ {
79
+ return AP3_ERR;
80
+ }
63
81
64
82
retVal32 = am_hal_iom_uninitialize (_handle);
65
- if ( retVal32 != AM_HAL_STATUS_SUCCESS){ return AP3_ERR; }
83
+ if (retVal32 != AM_HAL_STATUS_SUCCESS)
84
+ {
85
+ return AP3_ERR;
86
+ }
66
87
67
88
return AP3_OK;
68
89
}
69
90
70
-
71
- ap3_err_t ap3_iom_pad_funcsel ( uint8_t instance, ap3_iom_pad_type_e type, ap3_gpio_pad_t * pad, uint8_t * funcsel) {
91
+ ap3_err_t ap3_iom_pad_funcsel ( uint8_t instance, ap3_iom_pad_type_e type, ap3_gpio_pad_t *pad, uint8_t *funcsel)
92
+ {
72
93
ap3_err_t retval = AP3_OK;
73
94
74
- switch ( instance ){
75
- case 0 :
76
- switch ( type ){
77
- case AP3_IOM_I2C_SCL : *pad = 5 ; *funcsel = AM_HAL_PIN_5_M0SCL; break ;
78
- case AP3_IOM_I2C_SDA : *pad = 6 ; *funcsel = AM_HAL_PIN_6_M0SDAWIR3; break ;
79
- case AP3_IOM_SPI_SCLK : *pad = 5 ; *funcsel = AM_HAL_PIN_5_M0SCK; break ;
80
- case AP3_IOM_SPI_MOSI : *pad = 7 ; *funcsel = AM_HAL_PIN_7_M0MOSI; break ;
81
- case AP3_IOM_SPI_MISO : *pad = 6 ; *funcsel = AM_HAL_PIN_6_M0MISO; break ;
82
- default :
83
- goto invalid_args;
84
- break ;
85
- }
86
- break ;
87
-
88
- case 1 :
89
- switch ( type ){
90
- case AP3_IOM_I2C_SCL : *pad = 8 ; *funcsel = AM_HAL_PIN_8_M1SCL; break ;
91
- case AP3_IOM_I2C_SDA : *pad = 9 ; *funcsel = AM_HAL_PIN_9_M1SDAWIR3; break ;
92
- case AP3_IOM_SPI_SCLK : *pad = 8 ; *funcsel = AM_HAL_PIN_8_M1SCK; break ;
93
- case AP3_IOM_SPI_MOSI : *pad = 10 ; *funcsel = AM_HAL_PIN_10_M1MOSI; break ;
94
- case AP3_IOM_SPI_MISO : *pad = 9 ; *funcsel = AM_HAL_PIN_9_M1MISO; break ;
95
- default :
96
- goto invalid_args;
97
- break ;
98
- }
99
- break ;
100
-
101
- case 2 :
102
- switch ( type ){
103
- case AP3_IOM_I2C_SCL : *pad = 27 ; *funcsel = AM_HAL_PIN_27_M2SCL; break ;
104
- case AP3_IOM_I2C_SDA : *pad = 25 ; *funcsel = AM_HAL_PIN_25_M2SDAWIR3; break ;
105
- case AP3_IOM_SPI_SCLK : *pad = 27 ; *funcsel = AM_HAL_PIN_27_M2SCK; break ;
106
- case AP3_IOM_SPI_MOSI : *pad = 28 ; *funcsel = AM_HAL_PIN_28_M2MOSI; break ;
107
- case AP3_IOM_SPI_MISO : *pad = 25 ; *funcsel = AM_HAL_PIN_25_M2MISO; break ;
108
- default :
109
- goto invalid_args;
110
- break ;
111
- }
112
- break ;
113
-
114
- case 3 :
115
- switch ( type ){
116
- case AP3_IOM_I2C_SCL : *pad = 42 ; *funcsel = AM_HAL_PIN_42_M3SCL; break ;
117
- case AP3_IOM_I2C_SDA : *pad = 43 ; *funcsel = AM_HAL_PIN_43_M3SDAWIR3; break ;
118
- case AP3_IOM_SPI_SCLK : *pad = 42 ; *funcsel = AM_HAL_PIN_42_M3SCK; break ;
119
- case AP3_IOM_SPI_MOSI : *pad = 38 ; *funcsel = AM_HAL_PIN_38_M3MOSI; break ;
120
- case AP3_IOM_SPI_MISO : *pad = 43 ; *funcsel = AM_HAL_PIN_43_M3MISO; break ;
121
- default :
122
- goto invalid_args;
123
- break ;
124
- }
125
- break ;
126
-
127
- case 4 :
128
- switch ( type ){
129
- case AP3_IOM_I2C_SCL : *pad = 39 ; *funcsel = AM_HAL_PIN_39_M4SCL; break ;
130
- case AP3_IOM_I2C_SDA : *pad = 40 ; *funcsel = AM_HAL_PIN_40_M4SDAWIR3; break ;
131
- case AP3_IOM_SPI_SCLK : *pad = 39 ; *funcsel = AM_HAL_PIN_39_M4SCK; break ;
132
- case AP3_IOM_SPI_MOSI : *pad = 44 ; *funcsel = AM_HAL_PIN_44_M4MOSI; break ;
133
- case AP3_IOM_SPI_MISO : *pad = 40 ; *funcsel = AM_HAL_PIN_40_M4MISO; break ;
134
- default :
135
- goto invalid_args;
136
- break ;
137
- }
138
- break ;
139
-
140
- case 5 :
141
- switch ( type ){
142
- case AP3_IOM_I2C_SCL : *pad = 48 ; *funcsel = AM_HAL_PIN_48_M5SCL; break ;
143
- case AP3_IOM_I2C_SDA : *pad = 49 ; *funcsel = AM_HAL_PIN_49_M5SDAWIR3; break ;
144
- case AP3_IOM_SPI_SCLK : *pad = 48 ; *funcsel = AM_HAL_PIN_48_M5SCK; break ;
145
- case AP3_IOM_SPI_MOSI : *pad = 47 ; *funcsel = AM_HAL_PIN_47_M5MOSI; break ;
146
- case AP3_IOM_SPI_MISO : *pad = 49 ; *funcsel = AM_HAL_PIN_49_M5MISO; break ;
147
- default :
148
- goto invalid_args;
149
- break ;
150
- }
151
- break ;
152
-
153
- default :
95
+ switch (instance)
96
+ {
97
+ case 0 :
98
+ switch (type)
99
+ {
100
+ case AP3_IOM_I2C_SCL:
101
+ *pad = 5 ;
102
+ *funcsel = AM_HAL_PIN_5_M0SCL;
103
+ break ;
104
+ case AP3_IOM_I2C_SDA:
105
+ *pad = 6 ;
106
+ *funcsel = AM_HAL_PIN_6_M0SDAWIR3;
107
+ break ;
108
+ case AP3_IOM_SPI_SCLK:
109
+ *pad = 5 ;
110
+ *funcsel = AM_HAL_PIN_5_M0SCK;
111
+ break ;
112
+ case AP3_IOM_SPI_MOSI:
113
+ *pad = 7 ;
114
+ *funcsel = AM_HAL_PIN_7_M0MOSI;
115
+ break ;
116
+ case AP3_IOM_SPI_MISO:
117
+ *pad = 6 ;
118
+ *funcsel = AM_HAL_PIN_6_M0MISO;
119
+ break ;
120
+ default :
121
+ goto invalid_args;
122
+ break ;
123
+ }
124
+ break ;
125
+
126
+ case 1 :
127
+ switch (type)
128
+ {
129
+ case AP3_IOM_I2C_SCL:
130
+ *pad = 8 ;
131
+ *funcsel = AM_HAL_PIN_8_M1SCL;
132
+ break ;
133
+ case AP3_IOM_I2C_SDA:
134
+ *pad = 9 ;
135
+ *funcsel = AM_HAL_PIN_9_M1SDAWIR3;
136
+ break ;
137
+ case AP3_IOM_SPI_SCLK:
138
+ *pad = 8 ;
139
+ *funcsel = AM_HAL_PIN_8_M1SCK;
140
+ break ;
141
+ case AP3_IOM_SPI_MOSI:
142
+ *pad = 10 ;
143
+ *funcsel = AM_HAL_PIN_10_M1MOSI;
144
+ break ;
145
+ case AP3_IOM_SPI_MISO:
146
+ *pad = 9 ;
147
+ *funcsel = AM_HAL_PIN_9_M1MISO;
148
+ break ;
149
+ default :
154
150
goto invalid_args;
155
151
break ;
152
+ }
153
+ break ;
154
+
155
+ case 2 :
156
+ switch (type)
157
+ {
158
+ case AP3_IOM_I2C_SCL:
159
+ *pad = 27 ;
160
+ *funcsel = AM_HAL_PIN_27_M2SCL;
161
+ break ;
162
+ case AP3_IOM_I2C_SDA:
163
+ *pad = 25 ;
164
+ *funcsel = AM_HAL_PIN_25_M2SDAWIR3;
165
+ break ;
166
+ case AP3_IOM_SPI_SCLK:
167
+ *pad = 27 ;
168
+ *funcsel = AM_HAL_PIN_27_M2SCK;
169
+ break ;
170
+ case AP3_IOM_SPI_MOSI:
171
+ *pad = 28 ;
172
+ *funcsel = AM_HAL_PIN_28_M2MOSI;
173
+ break ;
174
+ case AP3_IOM_SPI_MISO:
175
+ *pad = 25 ;
176
+ *funcsel = AM_HAL_PIN_25_M2MISO;
177
+ break ;
178
+ default :
179
+ goto invalid_args;
180
+ break ;
181
+ }
182
+ break ;
183
+
184
+ case 3 :
185
+ switch (type)
186
+ {
187
+ case AP3_IOM_I2C_SCL:
188
+ *pad = 42 ;
189
+ *funcsel = AM_HAL_PIN_42_M3SCL;
190
+ break ;
191
+ case AP3_IOM_I2C_SDA:
192
+ *pad = 43 ;
193
+ *funcsel = AM_HAL_PIN_43_M3SDAWIR3;
194
+ break ;
195
+ case AP3_IOM_SPI_SCLK:
196
+ *pad = 42 ;
197
+ *funcsel = AM_HAL_PIN_42_M3SCK;
198
+ break ;
199
+ case AP3_IOM_SPI_MOSI:
200
+ *pad = 38 ;
201
+ *funcsel = AM_HAL_PIN_38_M3MOSI;
202
+ break ;
203
+ case AP3_IOM_SPI_MISO:
204
+ *pad = 43 ;
205
+ *funcsel = AM_HAL_PIN_43_M3MISO;
206
+ break ;
207
+ default :
208
+ goto invalid_args;
209
+ break ;
210
+ }
211
+ break ;
212
+
213
+ case 4 :
214
+ switch (type)
215
+ {
216
+ case AP3_IOM_I2C_SCL:
217
+ *pad = 39 ;
218
+ *funcsel = AM_HAL_PIN_39_M4SCL;
219
+ break ;
220
+ case AP3_IOM_I2C_SDA:
221
+ *pad = 40 ;
222
+ *funcsel = AM_HAL_PIN_40_M4SDAWIR3;
223
+ break ;
224
+ case AP3_IOM_SPI_SCLK:
225
+ *pad = 39 ;
226
+ *funcsel = AM_HAL_PIN_39_M4SCK;
227
+ break ;
228
+ case AP3_IOM_SPI_MOSI:
229
+ *pad = 44 ;
230
+ *funcsel = AM_HAL_PIN_44_M4MOSI;
231
+ break ;
232
+ case AP3_IOM_SPI_MISO:
233
+ *pad = 40 ;
234
+ *funcsel = AM_HAL_PIN_40_M4MISO;
235
+ break ;
236
+ default :
237
+ goto invalid_args;
238
+ break ;
239
+ }
240
+ break ;
241
+
242
+ case 5 :
243
+ switch (type)
244
+ {
245
+ case AP3_IOM_I2C_SCL:
246
+ *pad = 48 ;
247
+ *funcsel = AM_HAL_PIN_48_M5SCL;
248
+ break ;
249
+ case AP3_IOM_I2C_SDA:
250
+ *pad = 49 ;
251
+ *funcsel = AM_HAL_PIN_49_M5SDAWIR3;
252
+ break ;
253
+ case AP3_IOM_SPI_SCLK:
254
+ *pad = 48 ;
255
+ *funcsel = AM_HAL_PIN_48_M5SCK;
256
+ break ;
257
+ case AP3_IOM_SPI_MOSI:
258
+ *pad = 47 ;
259
+ *funcsel = AM_HAL_PIN_47_M5MOSI;
260
+ break ;
261
+ case AP3_IOM_SPI_MISO:
262
+ *pad = 49 ;
263
+ *funcsel = AM_HAL_PIN_49_M5MISO;
264
+ break ;
265
+ default :
266
+ goto invalid_args;
267
+ break ;
268
+ }
269
+ break ;
270
+
271
+ default :
272
+ goto invalid_args;
273
+ break ;
156
274
}
157
275
158
276
return retval;
0 commit comments