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

Basic SPI reads and writes

Hi,

I have a SPI peripheral connected to the nRF960 DK. In order to access this correctly, I need to be able to write a byte to a specific address first and then read back from specific addresses. 

I can run the basic SPI example

https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/spi

which carries out a basic loop back. This all works fine but I can't see how to write a specific byte to a specific address or read a specific address.

So, ideally I would like to write 0xD2 to address 0x80, wait 1 second and then read data from address 0x00.

Can you point me to a simple example please?

Ta,
Rod

  • Hi Øyvind,

    Ok, I have tried this but with no luck. I have updated my code as detailed above.

    I then tried to build the SPM code but am getting errors

    Watts-MacBook-Pro:build Watt$ pwd
    /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/build
    Watts-MacBook-Pro:build Watt$ cmake -GNinja -DBOARD=nrf9160_pca10090 ..
    Zephyr version: 1.14.0
    -- Selected BOARD nrf9160_pca10090
    -- Found west: /usr/local/bin/west (found suitable version "0.5.7", minimum required is "0.5.4")
    -- Loading /Users/Watt/zephyrproject/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090.dts as base
    -- Overlaying /Users/Watt/zephyrproject/ncs/zephyr/dts/common/common.dts
    -- Overlaying /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/nrf9160_pca10090.overlay
    nrf9160_pca10090.dts.pre.tmp:114.18-120.3: Warning (unique_unit_address_if_enabled): /soc/peripheral@50000000/uart@a000: duplicate unit-address (also used in node /soc/peripheral@50000000/i2c@a000)
      also defined at nrf9160_pca10090.dts.pre.tmp:504.8-511.3
    nrf9160_pca10090.dts.pre.tmp:254.19-260.3: Warning (unique_unit_address_if_enabled): /soc/peripheral@50000000/clock@5000: duplicate unit-address (also used in node /soc/peripheral@50000000/power@5000)
    Parsing Kconfig tree in /Users/Watt/zephyrproject/ncs/zephyr/Kconfig
    Loading /Users/Watt/zephyrproject/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090_defconfig as base
    Merging /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf
    
    /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf:2: warning: attempt to assign the value 'y' to the undefined symbol SPM
    
    Error: Aborting due to non-whitelisted Kconfig warning
    '/Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf:2: warning: attempt to assign the
    value 'y' to the undefined symbol SPM'. Note: If this warning doesn't point to an actual problem,
    you can add it to the whitelist at the top of
    /Users/Watt/zephyrproject/ncs/zephyr/scripts/kconfig/kconfig.py.
    
    CMake Error at /Users/Watt/zephyrproject/ncs/zephyr/cmake/kconfig.cmake:191 (message):
      command failed with return code: 1
    Call Stack (most recent call first):
      /Users/Watt/zephyrproject/ncs/zephyr/cmake/app/boilerplate.cmake:397 (include)
      CMakeLists.txt:3 (include)
    
    
    -- Configuring incomplete, errors occurred!
    Watts-MacBook-Pro:build Watt$ 
    

  • Next week, week 15 will have less staffing due to Easter Holiday. You may expect a delayed answer from the support team.


    Hi Rod,

    When you followed my instructions regarding git checkout and west update, did you get any errors or warnings there?


  • Hiya,

    This is what I am seeing.

    Watts-MacBook-Pro:nrf Watt$ pwd
    /Users/Watt/zephyrproject/ncs/nrf
    Watts-MacBook-Pro:nrf Watt$ git checkout c1939d963fe2c18013ffb8de0bd8f6fc1d91724d
    warning: refname 'c1939d963fe2c18013ffb8de0bd8f6fc1d91724d' is ambiguous.
    Git normally never creates a ref that ends with 40 hex characters
    because it will be ignored when you just specify 40-hex. These refs
    may be created by mistake. For example,
    
      git checkout -b $br $(git rev-parse ...)
    
    where "$br" is somehow empty and a 40-hex ref is created. Please
    examine these refs and maybe delete them. Turn this message off by
    running "git config advice.objectNameWarning false"
    Switched to branch 'c1939d963fe2c18013ffb8de0bd8f6fc1d91724d'

    Watts-MacBook-Pro:nrf Watt$ git checkout -b test_branch
    Switched to a new branch 'test_branch'
    Watts-MacBook-Pro:nrf Watt$ west update
    === self-updating west:
    --- west: fetching changes
    From https://github.com/zephyrproject-rtos/west
     * tag               v0.5.7     -> FETCH_HEAD
    --- west: checked out 5113fecc09399226010beb508f1b66d9f60856af as detached HEAD
    === updating net-tools (net-tools):
    --- net-tools: fetching changes
    --- net-tools: checked out 30b7efa827b04d2e47840716b0372737fe7d6c92 as detached HEAD
    === updating tinycbor (modules/lib/tinycbor):
    --- tinycbor: fetching changes
    --- tinycbor: checked out 111f7a215cc4efa49fd03a7835719adca83b4388 as detached HEAD
    Watts-MacBook-Pro:nrf Watt$ 
    

    finally try to build spm

    Watts-MacBook-Pro:build Watt$ pwd
    /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/build
    Watts-MacBook-Pro:build Watt$ cmake -GNinja -DBOARD=nrf9160_pca10090 ..
    Zephyr version: 1.14.0
    -- Selected BOARD nrf9160_pca10090
    -- Found west: /usr/local/bin/west (found suitable version "0.5.7", minimum required is "0.5.4")
    -- Loading /Users/Watt/zephyrproject/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090.dts as base
    -- Overlaying /Users/Watt/zephyrproject/ncs/zephyr/dts/common/common.dts
    -- Overlaying /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/nrf9160_pca10090.overlay
    nrf9160_pca10090.dts.pre.tmp:114.18-120.3: Warning (unique_unit_address_if_enabled): /soc/peripheral@50000000/uart@a000: duplicate unit-address (also used in node /soc/peripheral@50000000/i2c@a000)
      also defined at nrf9160_pca10090.dts.pre.tmp:504.8-511.3
    nrf9160_pca10090.dts.pre.tmp:254.19-260.3: Warning (unique_unit_address_if_enabled): /soc/peripheral@50000000/clock@5000: duplicate unit-address (also used in node /soc/peripheral@50000000/power@5000)
    Parsing Kconfig tree in /Users/Watt/zephyrproject/ncs/zephyr/Kconfig
    Loading /Users/Watt/zephyrproject/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090_defconfig as base
    Merging /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf
    
    /Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf:2: warning: attempt to assign the value 'y' to the undefined symbol SPM
    
    Error: Aborting due to non-whitelisted Kconfig warning
    '/Users/Watt/zephyrproject/ncs/nrf/samples/nrf9160/spm/prj.conf:2: warning: attempt to assign the
    value 'y' to the undefined symbol SPM'. Note: If this warning doesn't point to an actual problem,
    you can add it to the whitelist at the top of
    /Users/Watt/zephyrproject/ncs/zephyr/scripts/kconfig/kconfig.py.
    
    CMake Error at /Users/Watt/zephyrproject/ncs/zephyr/cmake/kconfig.cmake:191 (message):
      command failed with return code: 1
    Call Stack (most recent call first):
      /Users/Watt/zephyrproject/ncs/zephyr/cmake/app/boilerplate.cmake:397 (include)
      CMakeLists.txt:3 (include)
    
    
    -- Configuring incomplete, errors occurred!
    Watts-MacBook-Pro:build Watt$ 
    

  • Hi Øyvind,

    I have enabled debug and I see this error .

    Secure Boot: MSP_NS 20021a58

    Secure Boot: prepare to jump to Non-Secure image

    ***** Booting Zephyr OS v1.13.99-ncs1-5561-gde69d2df908f *****

    [00:00:00.000,061] <inf> spi_nrfx_spim: CS control inhibited (no GPIO device)

    Exception occurred in Secure State

    ***** HARD FAULT *****

      Fault escalation (see below)

    ***** BUS FAULT *****

      Precise data bus error

      BFAR Address: 0x50008120

    ***** Hardware exception *****

    Current thread ID = 0x200201f8

    Faulting instruction address = 0x41fa6

    Fatal fault in ISR! Spinning...

    I have googled "CS control inhibited (no GPIO device)" but didn't see anything obvious, any ideas?

    Rod

  • Hi Rod, 

    I am not able to reproduce the Hard Fault you are seeing. Using the SPI example, and latest update with west, I was able to run it with your overlay config and proj.conf, but setting

    CONFIG_BME280=n

    There seems to be an issue with the BME280 driver provided by Zephyr and I suggest contacting the Zephyr forum for more assistance on how to configure this driver for SPI. We expect the issue is with how the BME280 is configured in the overlay file, as it seems to how you configure for SPI.  

    Maybe can be of more assistance?

    Kind regards,
    Øyvind

Related