@@ -85,7 +85,7 @@ unsigned int ticksSinceStart = 0;
85
85
JshPinFunction pinStates [JSH_PIN_COUNT ];
86
86
87
87
#if SPI_ENABLED
88
- static const NRF_SPI_Type * spi0 = NRF_DRV_SPI_PERIPHERAL (0 );
88
+ static const nrf_drv_spi_t spi0 = NRF_DRV_SPI_INSTANCE (0 );
89
89
bool spi0Initialised = false;
90
90
#endif
91
91
@@ -723,6 +723,11 @@ bool jshIsEventForPin(IOEvent *event, Pin pin) {
723
723
724
724
/** Is the given device initialised? */
725
725
bool jshIsDeviceInitialised (IOEventFlags device ) {
726
+ #if SPI_ENABLED
727
+ if (device == EV_SPI1 ) return spi0Initialised ;
728
+ #endif
729
+ if (device == EV_I2C1 ) return twi1Initialised ;
730
+ if (device == EV_SERIAL1 ) return uartInitialised ;
726
731
return false;
727
732
}
728
733
@@ -830,12 +835,14 @@ void jshSPISetup(IOEventFlags device, JshSPIInfo *inf) {
830
835
spi_config .frequency = freq ;
831
836
spi_config .mode = inf -> spiMode ;
832
837
spi_config .bit_order = inf -> spiMSB ? NRF_DRV_SPI_BIT_ORDER_MSB_FIRST : NRF_DRV_SPI_BIT_ORDER_LSB_FIRST ;
833
-
838
+ if (jshIsPinValid (inf -> pinSCK ))
839
+ spi_config .sck_pin = (uint32_t )pinInfo [inf -> pinSCK ].pin ;
834
840
if (jshIsPinValid (inf -> pinMISO ))
835
841
spi_config .miso_pin = (uint32_t )pinInfo [inf -> pinMISO ].pin ;
836
842
if (jshIsPinValid (inf -> pinMOSI ))
837
- spi_config .mosi_pin = (uint32_t )pinInfo [inf -> pinMOSI ].pin ;
838
- if (spi0Initialised ) nrf_drv_twi_uninit (& spi0 );
843
+ spi_config .mosi_pin = (uint32_t )pinInfo [inf -> pinMOSI ].pin ;
844
+
845
+ if (spi0Initialised ) nrf_drv_spi_uninit (& spi0 );
839
846
spi0Initialised = true;
840
847
// No event handler means SPI transfers are blocking
841
848
uint32_t err_code = nrf_drv_spi_init (& spi0 , & spi_config , NULL );
@@ -863,7 +870,9 @@ int jshSPISend(IOEventFlags device, int data) {
863
870
if (device != EV_SPI1 ) return -1 ;
864
871
uint8_t tx = (uint8_t )data ;
865
872
uint8_t rx = 0 ;
866
- nrf_drv_spi_transfer (& spi0 , & tx , 1 , & rx , 1 );
873
+ uint32_t err_code = nrf_drv_spi_transfer (& spi0 , & tx , 1 , & rx , 1 );
874
+ if (err_code != NRF_SUCCESS )
875
+ jsExceptionHere (JSET_INTERNALERROR , "SPI Send Error %d\n" , err_code );
867
876
return rx ;
868
877
#endif
869
878
}
@@ -873,7 +882,9 @@ void jshSPISend16(IOEventFlags device, int data) {
873
882
#if SPI_ENABLED
874
883
if (device != EV_SPI1 ) return ;
875
884
uint16_t tx = (uint16_t )data ;
876
- nrf_drv_spi_transfer (& spi0 , (uint8_t * )& tx , 1 , 0 , 0 );
885
+ uint32_t err_code = nrf_drv_spi_transfer (& spi0 , (uint8_t * )& tx , 1 , 0 , 0 );
886
+ if (err_code != NRF_SUCCESS )
887
+ jsExceptionHere (JSET_INTERNALERROR , "SPI Send Error %d\n" , err_code );
877
888
#endif
878
889
}
879
890
0 commit comments