Hello,
After a long investigation I got to the conclusion that SPI master (spi3) has been broken in the SDK version 1.4.1.
It is working fine in V1.3.1
I have an application that communicates with Analog Devices MEMS, ADXL335, via SPI.
The application was working fine, until I upgraded to the new SDK v1.4.1 due to some bugs in the cloud APIs.
But then I noticed that the SPI stopped working.
Going back to v1.3.1, the application is back working (the Could API is not
Here is my overlay (nrf9160dk_nrf9160ns.overlay)
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
sck-pin = <19>;
mosi-pin = <18>;
miso-pin = <17>;
cs-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
};
As you see, I am using GPIO 10 as the CS. I noticed that a new member has been added to the spi_cs_control structure (gpio_dt_flags).
struct spi_cs_control g_spi_cs_ctrl;
g_spi_cs_ctrl.gpio_dev = g_p_gpio_dev;
g_spi_cs_ctrl.gpio_pin = 10;
g_spi_cs_ctrl.delay = 0;
//g_spi_cs_ctrl.gpio_dt_flags = GPIO_OUTPUT_LOW;
const static struct spi_config spi_cfg =
{
.operation = SPI_OP_MODE_MASTER | SPI_WORD_SET(8) | SPI_LINES_SINGLE | SPI_TRANSFER_MSB,
.frequency = 500000, /* The frequency in Hz to use when testing in slow mode. Slow: 500000, Fast=16000000 */
.slave = 0, /* Slave number from 0 to host controller slave limit */
.cs = &g_spi_cs_ctrl, /* Chip-Select Control GPIO */
};
In version v.1.3.1 the SPI communication with sensor works fine and I get valid values. In v1.4.1 all the returned values from the sensor are ff or .
I need this issue would be fixed. Because I need both cloud and sensor in my program.
Danny