Spi device tree source code

From Wiki at Neela Nurseries
Revision as of 23:00, 11 August 2022 by Ted (talk | contribs) (adding a few excerpt line numbers.)
Jump to: navigation, search

2022-08-11 Thursday

Notes on SPI device tree source, with goal to add SPI device to modified RPi Pico DTS files, which build firmware to run on Sparkfun DEV-18288 board.


In Zephyr RTOS' supported board dts files we find SPI peripherals defined for several boards. Here are excerpts

Excerpt 1 - zephyr/boards/arm/sparkfun_thing_plus_nrf9160/sparkfun_thing_plus_nrf9160_common.dts


142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162


&spi3 {
        compatible = "nordic,nrf-spim";
        status = "okay";
        cs-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
        pinctrl-0 = <&spi3_default>;
        pinctrl-1 = <&spi3_sleep>;
        pinctrl-names = "default", "sleep";
        w25q32jv: w25q32jv@0 {
                compatible = "jedec,spi-nor";
                label = "W25Q32JV";
                reg = <0>;
                spi-max-frequency = <40000000>;
                wp-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
                hold-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
                size = <0x2000000>;
                has-dpd;
                t-enter-dpd = <3000>;
                t-exit-dpd = <30000>;
                jedec-id = [ ef 40 16 ];
        };
};

a
 81         spi3_default: spi3_default {
 82                 group1 {
 83                         psels = <NRF_PSEL(SPIM_SCK, 0, 11)>,
 84                                 <NRF_PSEL(SPIM_MOSI, 0, 9)>,
 85                                 <NRF_PSEL(SPIM_MISO, 0, 28)>;
 86                 };
 87         };
 88 
 89         spi3_sleep: spi3_sleep {
 90                 group1 {
 91                         psels = <NRF_PSEL(SPIM_SCK, 0, 11)>,
 92                                 <NRF_PSEL(SPIM_MOSI, 0, 9)>,
 93                                 <NRF_PSEL(SPIM_MISO, 0, 28)>;
 94                         low-power-enable;
 95                 };
 96         };


Excerpt 2 - zephyr/boards/arm/96b_carbon_nrf51/96b_carbon_nrf51.dts<i>

47
48
49
50
&spi1 {
        compatible = "nordic,nrf-spis";
        status = "okay";
        def-char = <0x00>;

        pinctrl-0 = <&spi1_default>;
        pinctrl-names = "default";
        bt-hci@0 {
                compatible = "zephyr,bt-hci-spi-slave";
                reg = <0>;
                irq-gpios = <&gpio0 28 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
        };
};



<i>Excerpt 3 - <i>






<i>Excerpt 4 - <i>






<i>Excerpt 5 - <i>







^ YAML device bindings files

To support a typical development kit or custom board with multiple peripherals we need a device bindings file comparable to this ... bindings file:

  1. ~/projects-sandbox/workspace-for-rpi/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160.yaml
identifier: nrf9160dk_nrf9160
name: nRF9160-DK-NRF9160
type: mcu 
arch: arm 
toolchain:
  - gnuarmemb
  - xtools
  - zephyr
ram: 88
flash: 256 
supported:
  - arduino_gpio
  - arduino_i2c
  - gpio
  - i2c
  - pwm
  - spi
  - watchdog
  - counter