3434// Note that any bugs introduced in this file can cause crashes
3535// at startupfor chips using external SPI flash.
3636
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-
4237// Reset SPI when reload
4338void spi_reset (void ) {
44- if (!never_reset && in_used ) {
45- SPIDRV_DeInit (& spidrv_eusart_handle );
46- in_used = false;
47- }
39+ // FIXME: Implement
4840 return ;
4941}
5042
@@ -54,64 +46,14 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
5446 const mcu_pin_obj_t * mosi ,
5547 const mcu_pin_obj_t * miso ,
5648 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
10752}
10853
10954// Never reset SPI when reload
11055void 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
11557}
11658
11759// Check SPI status, deinited or not
@@ -122,23 +64,7 @@ bool common_hal_busio_spi_deinited(busio_spi_obj_t *self) {
12264// Deinit SPI obj
12365void common_hal_busio_spi_deinit (busio_spi_obj_t * self ) {
12466
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
14268}
14369
14470// 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,
14773 uint8_t polarity ,
14874 uint8_t phase ,
14975 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
18478 return true;
18579}
18680
18781// Lock SPI bus
18882bool 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;
19985}
20086
20187// Check SPI lock status
@@ -213,18 +99,17 @@ bool common_hal_busio_spi_write(busio_spi_obj_t *self,
21399 const uint8_t * data ,
214100 size_t len ) {
215101
216- Ecode_t result = SPIDRV_MTransmitB ( self -> handle , data , len );
217- return result == ECODE_EMDRV_SPIDRV_OK ;
102+ // FIXME: Implement
103+ return false ;
218104}
219105
220106// Read data into buffer
221107bool common_hal_busio_spi_read (busio_spi_obj_t * self ,
222108 uint8_t * data , size_t len ,
223109 uint8_t write_value ) {
224110
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;
228113}
229114
230115// Write out the data in data_out
@@ -234,8 +119,8 @@ bool common_hal_busio_spi_transfer(busio_spi_obj_t *self,
234119 uint8_t * data_in ,
235120 size_t len ) {
236121
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 ;
239124}
240125
241126// Get SPI baudrate
0 commit comments