34
34
// Note that any bugs introduced in this file can cause crashes
35
35
// at startupfor chips using external SPI flash.
36
36
37
- static SPIDRV_HandleData_t spidrv_eusart_handle ;
38
- static SPIDRV_Init_t spidrv_eusart_init = SPIDRV_MASTER_EUSART1 ;
39
- static bool in_used = false;
40
- static bool never_reset = false;
41
-
42
37
// Reset SPI when reload
43
38
void spi_reset (void ) {
44
- if (!never_reset && in_used ) {
45
- SPIDRV_DeInit (& spidrv_eusart_handle );
46
- in_used = false;
47
- }
39
+ // FIXME: Implement
48
40
return ;
49
41
}
50
42
@@ -54,64 +46,14 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
54
46
const mcu_pin_obj_t * mosi ,
55
47
const mcu_pin_obj_t * miso ,
56
48
bool half_duplex ) {
57
- Ecode_t sc = ECODE_OK ;
58
-
59
- if (half_duplex ) {
60
- mp_raise_NotImplementedError (
61
- MP_ERROR_TEXT ("Half duplex SPI is not implemented" ));
62
- }
63
-
64
- if ((sck != NULL ) && (mosi != NULL ) && (miso != NULL )) {
65
- if (sck -> function_list [FN_EUSART1_SCLK ] == 1
66
- && miso -> function_list [FN_EUSART1_RX ] == 1
67
- && mosi -> function_list [FN_EUSART1_TX ] == 1 ) {
68
-
69
- self -> sck = sck ;
70
- self -> mosi = mosi ;
71
- self -> miso = miso ;
72
- self -> handle = & spidrv_eusart_handle ;
73
- self -> polarity = 0 ;
74
- self -> phase = 0 ;
75
- self -> bits = 8 ;
76
-
77
- spidrv_eusart_init .portTx = mosi -> port ;
78
- spidrv_eusart_init .portRx = miso -> port ;
79
- spidrv_eusart_init .portClk = sck -> port ;
80
- spidrv_eusart_init .pinTx = mosi -> number ;
81
- spidrv_eusart_init .pinRx = miso -> number ;
82
- spidrv_eusart_init .pinClk = sck -> number ;
83
- spidrv_eusart_init .bitRate = 1000000 ;
84
- spidrv_eusart_init .frameLength = 8 ;
85
- spidrv_eusart_init .dummyTxValue = 0 ;
86
- spidrv_eusart_init .type = spidrvMaster ;
87
- spidrv_eusart_init .bitOrder = spidrvBitOrderMsbFirst ;
88
- spidrv_eusart_init .clockMode = spidrvClockMode0 ;
89
- spidrv_eusart_init .csControl = spidrvCsControlApplication ;
90
- spidrv_eusart_init .slaveStartMode = spidrvSlaveStartImmediate ;
91
-
92
- sc = SPIDRV_Init (self -> handle , & spidrv_eusart_init );
93
- if (sc != ECODE_EMDRV_SPIDRV_OK ) {
94
- mp_raise_ValueError (MP_ERROR_TEXT ("SPI init error" ));
95
- }
96
- } else {
97
- mp_raise_ValueError (MP_ERROR_TEXT ("Hardware in use, try alternative pins" ));
98
- }
99
- } else {
100
- raise_ValueError_invalid_pins ();
101
- }
102
-
103
- in_used = true;
104
- common_hal_mcu_pin_claim (sck );
105
- common_hal_mcu_pin_claim (mosi );
106
- common_hal_mcu_pin_claim (miso );
49
+
50
+
51
+ // FIXME: Implement
107
52
}
108
53
109
54
// Never reset SPI when reload
110
55
void common_hal_busio_spi_never_reset (busio_spi_obj_t * self ) {
111
- never_reset = true;
112
- common_hal_never_reset_pin (self -> mosi );
113
- common_hal_never_reset_pin (self -> miso );
114
- common_hal_never_reset_pin (self -> sck );
56
+ // FIXME: Implement
115
57
}
116
58
117
59
// Check SPI status, deinited or not
@@ -122,23 +64,7 @@ bool common_hal_busio_spi_deinited(busio_spi_obj_t *self) {
122
64
// Deinit SPI obj
123
65
void common_hal_busio_spi_deinit (busio_spi_obj_t * self ) {
124
66
125
- if (common_hal_busio_spi_deinited (self )) {
126
- return ;
127
- }
128
-
129
- Ecode_t sc = SPIDRV_DeInit (self -> handle );
130
- if (sc != ECODE_EMDRV_SPIDRV_OK ) {
131
- mp_raise_RuntimeError (MP_ERROR_TEXT ("SPI re-init" ));
132
- }
133
-
134
- in_used = false;
135
- self -> sck = NULL ;
136
- self -> mosi = NULL ;
137
- self -> miso = NULL ;
138
- self -> handle = NULL ;
139
- common_hal_reset_pin (self -> mosi );
140
- common_hal_reset_pin (self -> miso );
141
- common_hal_reset_pin (self -> sck );
67
+ // FIXME: Implement
142
68
}
143
69
144
70
// Configures the SPI bus. The SPI object must be locked.
@@ -147,55 +73,15 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
147
73
uint8_t polarity ,
148
74
uint8_t phase ,
149
75
uint8_t bits ) {
150
- Ecode_t sc ;
151
- // This resets the SPI, so check before updating it redundantly
152
- if (baudrate == self -> baudrate && polarity == self -> polarity
153
- && phase == self -> phase && bits == self -> bits ) {
154
- return true;
155
- }
156
-
157
- sc = SPIDRV_DeInit (self -> handle );
158
- if (sc != ECODE_EMDRV_SPIDRV_OK ) {
159
- mp_raise_RuntimeError (MP_ERROR_TEXT ("SPI re-init" ));
160
- }
161
- in_used = false;
162
- self -> baudrate = baudrate ;
163
- self -> phase = phase ;
164
- self -> bits = bits ;
165
- self -> polarity = polarity ;
166
-
167
- spidrv_eusart_init .bitRate = baudrate ;
168
- spidrv_eusart_init .frameLength = 8 ;
169
- if (polarity == 0 && phase == 0 ) {
170
- spidrv_eusart_init .clockMode = spidrvClockMode0 ;
171
- } else if (polarity == 0 && phase == 1 ) {
172
- spidrv_eusart_init .clockMode = spidrvClockMode1 ;
173
- } else if (polarity == 1 && phase == 0 ) {
174
- spidrv_eusart_init .clockMode = spidrvClockMode2 ;
175
- } else if (polarity == 1 && phase == 1 ) {
176
- spidrv_eusart_init .clockMode = spidrvClockMode3 ;
177
- }
178
-
179
- sc = SPIDRV_Init (self -> handle , & spidrv_eusart_init );
180
- if (sc != ECODE_EMDRV_SPIDRV_OK ) {
181
- mp_raise_RuntimeError (MP_ERROR_TEXT ("SPI re-init" ));
182
- }
183
- in_used = true;
76
+
77
+ // FIXME: Implement
184
78
return true;
185
79
}
186
80
187
81
// Lock SPI bus
188
82
bool common_hal_busio_spi_try_lock (busio_spi_obj_t * self ) {
189
- if (common_hal_busio_spi_deinited (self )) {
190
- return false;
191
- }
192
- bool grabbed_lock = false;
193
- if (!self -> has_lock ) {
194
- grabbed_lock = true;
195
- self -> has_lock = true;
196
- }
197
-
198
- return grabbed_lock ;
83
+ // FIXME: Implement
84
+ return false;
199
85
}
200
86
201
87
// Check SPI lock status
@@ -213,18 +99,17 @@ bool common_hal_busio_spi_write(busio_spi_obj_t *self,
213
99
const uint8_t * data ,
214
100
size_t len ) {
215
101
216
- Ecode_t result = SPIDRV_MTransmitB ( self -> handle , data , len );
217
- return result == ECODE_EMDRV_SPIDRV_OK ;
102
+ // FIXME: Implement
103
+ return false ;
218
104
}
219
105
220
106
// Read data into buffer
221
107
bool common_hal_busio_spi_read (busio_spi_obj_t * self ,
222
108
uint8_t * data , size_t len ,
223
109
uint8_t write_value ) {
224
110
225
- self -> handle -> initData .dummyTxValue = write_value ;
226
- Ecode_t result = SPIDRV_MReceiveB (self -> handle , data , len );
227
- return result == ECODE_EMDRV_SPIDRV_OK ;
111
+ // FIXME: Implement
112
+ return false;
228
113
}
229
114
230
115
// Write out the data in data_out
@@ -234,8 +119,8 @@ bool common_hal_busio_spi_transfer(busio_spi_obj_t *self,
234
119
uint8_t * data_in ,
235
120
size_t len ) {
236
121
237
- Ecode_t result = SPIDRV_MTransferB ( self -> handle , data_out , data_in , len );
238
- return result == ECODE_EMDRV_SPIDRV_OK ;
122
+ // FIXME: Implement
123
+ return false ;
239
124
}
240
125
241
126
// Get SPI baudrate
0 commit comments