This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Reading SD card on nRF9160dk

Hello,

I want to read two files from SD card using nRF9160dk. I tried this code ncs/zephyr/samples/subsys/fs/fat_fs.

The Code:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* Copyright (c) 2019 Tavish Naruka <tavishnaruka@gmail.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
/* Sample which uses the filesystem API and SDHC driver */
#include <zephyr.h>
#include <device.h>
#include <disk/disk_access.h>
#include <logging/log.h>
#include <fs/fs.h>
#include <ff.h>
LOG_MODULE_REGISTER(main);
static int lsdir(const char *path);
static FATFS fat_fs;
/* mounting info */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

I am getting the following error:

Fullscreen
1
2
3
4
5
***** Booting Zephyr OS build v1.14.99-ncs3-snapshot2-2647-gd6e67554cfeb *****
[00:00:00.024,078] ·[0m<inf> spi_nrfx_spim: CS control inhibited (no GPIO device)·[0m
[00:00:05.039,306] ·[1;31m<err> main: Storage init ERROR!·[0m
Error mounting disk.
[00:00:10.054,565] ·[1;31m<err> fs: fs mount error (-5)·[0m
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

nrf9160_pca10090ns.overlay:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* Copyright (c) 2019 Tavish Naruka <tavishnaruka@gmail.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
&spi3 {
status = "okay";
cs-gpios = <&gpio0 16 0>;
sdhc0: sdhc@0 {
compatible = "zephyr,mmc-spi-slot";
reg = <0>;
status = "okay";
label = "SDHC0";
spi-max-frequency = <24000000>;
};
};
&spi3 {
status = "okay";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

I checked the voltage levels at SPI_3 pins. Pin 16, 17, 18 shows 3V but 19 which is SCK is at 0V. I am not understanding why it is at 0V.

Why there is error? What else I need to do?

Parents
  • Hello, 

    What version of NCS are you using? 

    Kind regards,
    Øyvind

  • I am working with ncs_tag v1.0.0.

  • Yes I have connected the SD card.

    OK I will not change the zephyr branch. I will try to ask in the Zephyr community. Thanks for the help.

  • Instead of disk_access_spi_sdhc, can I use app_sdcard on nRF9160? I guess app_sdcard uses nrf legacy drivers. My collegue has used app_sdcard on nRF52840DK to interface with SD card. So is it possible to use with nRF9160DK instead of Zephyr drivers?

  • Hello,

    I downloaded the merged.hex file which you provided and I think it is working. LED on SD card is continuously blinking which means it is continuously receiving the clock signal.

    When I download my merged.hex file, LED stops working after 10-15sec indicating that SD card is not mounted and it stops receiving clock signal.

    I compared both merged.hex files and they are different.

    I am using the same ncs tag, overlay file and prj.conf file as yours. Still it is different.

    I think in my program, spi is never initialized. Can you please guide me for this problem?

  • Hello, 

    Jagruti said:
    Instead of disk_access_spi_sdhc, can I use app_sdcard on nRF9160? I guess app_sdcard uses nrf legacy drivers. My collegue has used app_sdcard on nRF52840DK to interface with SD card. So is it possible to use with nRF9160DK instead of Zephyr drivers?

     The app_sdcard is a library from the nRF5 SDK. You can use this but will need to port to nRF9160.

    Can you please provide more information about your setup? Can you take a picture to show how you have connected?

    Have you ensured that the pins are correctly configured in the board controller? P0.13 on the board controller must be set to enable these pins.

    To minimize editing the board controller, can you please route SPI3 to P0.10 - P0.13  instead? These are found on P19 and should be directly available.

    Kind regards,
    Øyvind

  • Hello,

    Attached is a working project using SPI3. The output is shown in the image.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    &spi3 {
    compatible = "nordic,nrf-spim";
    status = "okay";
    sck-pin = <10>;
    mosi-pin = <11>;
    miso-pin = <12>;
    cs-gpios = <&gpio0 13 0>;
    sdhc0: sdhc@0 {
    compatible = "zephyr,mmc-spi-slot";
    reg = <0>;
    status = "okay";
    label = "SDHC0";
    spi-max-frequency = <24000000>;
    };
    };
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    fat_fs.zip


    Let me know how it works for you!

    Kind regards,
    Øyvind

Reply
  • Hello,

    Attached is a working project using SPI3. The output is shown in the image.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    &spi3 {
    compatible = "nordic,nrf-spim";
    status = "okay";
    sck-pin = <10>;
    mosi-pin = <11>;
    miso-pin = <12>;
    cs-gpios = <&gpio0 13 0>;
    sdhc0: sdhc@0 {
    compatible = "zephyr,mmc-spi-slot";
    reg = <0>;
    status = "okay";
    label = "SDHC0";
    spi-max-frequency = <24000000>;
    };
    };
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    fat_fs.zip


    Let me know how it works for you!

    Kind regards,
    Øyvind

Children