211 lines
7.2 KiB
Plaintext
211 lines
7.2 KiB
Plaintext
# Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig SPI_NRFX
|
|
bool "nRF SPI nrfx drivers"
|
|
default y
|
|
depends on SOC_FAMILY_NRF
|
|
help
|
|
Enable support for nrfx SPI drivers for nRF MCU series.
|
|
|
|
if SPI_NRFX
|
|
|
|
config SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58
|
|
depends on SOC_NRF52832
|
|
bool "Allow enabling the SPIM driver despite PAN 58"
|
|
help
|
|
Allow enabling the nRF SPI Master with EasyDMA, despite
|
|
Product Anomaly Notice 58 (SPIM: An additional byte is
|
|
clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1).
|
|
Without this override, the SPI Master is only available
|
|
without EasyDMA. Note that the 'SPIM' and 'SPIS' drivers
|
|
use EasyDMA, while the 'SPI' driver does not.
|
|
When used in conjunction with nRF SPIM Devicetree property
|
|
'anomaly-58-workaround' a workaround can be enabled per SPIM
|
|
instance. If you are certain that transactions with
|
|
RXD.MAXCNT == 1 and TXD.MAXCNT <= 1 will NOT be executed
|
|
then nRF52832 PPI and GPIOTE resources can be saved by not
|
|
enabling 'anomaly-58-workaround' via the Devicetree.
|
|
|
|
# Workaround for not being able to have commas in macro arguments
|
|
DT_COMPAT_NORDIC_NRF_SPI := nordic,nrf-spi
|
|
DT_COMPAT_NORDIC_NRF_SPIM := nordic,nrf-spim
|
|
DT_COMPAT_NORDIC_NRF_SPIS := nordic,nrf-spis
|
|
|
|
config SPI_0_NRF_SPI
|
|
def_bool $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPI))
|
|
select NRFX_SPI0
|
|
help
|
|
Enable nRF SPI Master without EasyDMA on port 0.
|
|
|
|
config SPI_0_NRF_SPIM
|
|
def_bool $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPIM))
|
|
# This driver is not available for nRF52832 because of Product Anomaly 58
|
|
# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
|
|
# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
|
|
depends on (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
|
|
select NRFX_SPIM0
|
|
help
|
|
Enable nRF SPI Master with EasyDMA on port 0.
|
|
|
|
config SPI_0_NRF_SPIS
|
|
def_bool $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPIS))
|
|
depends on SPI_SLAVE
|
|
select NRFX_SPIS0
|
|
help
|
|
Enable nRF SPI Slave with EasyDMA on port 0.
|
|
Due to hardware limitations the implementation supports only simple
|
|
buffers (consisting of one part) located in RAM.
|
|
|
|
config SPI_0_NRF_ORC
|
|
hex "SPI Port 0 over-read character"
|
|
depends on SPI_0_NRF_SPI || SPI_0_NRF_SPIM || SPI_0_NRF_SPIS
|
|
range 0x00 0xff
|
|
default 0xff
|
|
help
|
|
Over-read character. Character clocked out after an over-read
|
|
of the transmit buffer.
|
|
|
|
config SPI_1_NRF_SPI
|
|
def_bool $(dt_nodelabel_has_compat,spi1,$(DT_COMPAT_NORDIC_NRF_SPI))
|
|
select NRFX_SPI1
|
|
help
|
|
Enable nRF SPI Master without EasyDMA on port 1.
|
|
|
|
config SPI_1_NRF_SPIM
|
|
def_bool $(dt_nodelabel_has_compat,spi1,$(DT_COMPAT_NORDIC_NRF_SPIM))
|
|
# This driver is not available for nRF52832 because of Product Anomaly 58
|
|
# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
|
|
# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
|
|
depends on (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
|
|
select NRFX_SPIM1
|
|
help
|
|
Enable nRF SPI Master with EasyDMA on port 1.
|
|
|
|
config SPI_1_NRF_SPIS
|
|
def_bool $(dt_nodelabel_has_compat,spi1,$(DT_COMPAT_NORDIC_NRF_SPIS))
|
|
depends on SPI_SLAVE
|
|
select NRFX_SPIS1
|
|
help
|
|
Enable nRF SPI Slave with EasyDMA on port 1.
|
|
Due to hardware limitations the implementation supports only simple
|
|
buffers (consisting of one part) located in RAM.
|
|
|
|
config SPI_1_NRF_ORC
|
|
hex "SPI Port 1 over-read character"
|
|
depends on SPI_1_NRF_SPI || SPI_1_NRF_SPIM || SPI_1_NRF_SPIS
|
|
range 0x00 0xff
|
|
default 0xff
|
|
help
|
|
Over-read character. Character clocked out after an over-read
|
|
of the transmit buffer.
|
|
|
|
config SPI_2_NRF_SPI
|
|
def_bool $(dt_nodelabel_has_compat,spi2,$(DT_COMPAT_NORDIC_NRF_SPI))
|
|
select NRFX_SPI2
|
|
help
|
|
Enable nRF SPI Master without EasyDMA on port 2.
|
|
|
|
config SPI_2_NRF_SPIM
|
|
def_bool $(dt_nodelabel_has_compat,spi2,$(DT_COMPAT_NORDIC_NRF_SPIM))
|
|
# This driver is not available for nRF52832 because of Product Anomaly 58
|
|
# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
|
|
# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
|
|
depends on (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
|
|
select NRFX_SPIM2
|
|
help
|
|
Enable nRF SPI Master with EasyDMA on port 2.
|
|
|
|
config SPI_2_NRF_SPIS
|
|
def_bool $(dt_nodelabel_has_compat,spi2,$(DT_COMPAT_NORDIC_NRF_SPIS))
|
|
depends on SPI_SLAVE
|
|
select NRFX_SPIS2
|
|
help
|
|
Enable nRF SPI Slave with EasyDMA on port 2.
|
|
Due to hardware limitations the implementation supports only simple
|
|
buffers (consisting of one part) located in RAM.
|
|
|
|
config SPI_2_NRF_ORC
|
|
hex "SPI Port 2 over-read character"
|
|
depends on SPI_2_NRF_SPI || SPI_2_NRF_SPIM || SPI_2_NRF_SPIS
|
|
range 0x00 0xff
|
|
default 0xff
|
|
help
|
|
Over-read character. Character clocked out after an over-read
|
|
of the transmit buffer.
|
|
|
|
config SPI_3_NRF_SPIM
|
|
def_bool $(dt_nodelabel_has_compat,spi3,$(DT_COMPAT_NORDIC_NRF_SPIM))
|
|
select NRFX_SPIM3
|
|
help
|
|
Enable nRF SPI Master with EasyDMA on port 3.
|
|
|
|
config SPI_3_NRF_SPIS
|
|
def_bool $(dt_nodelabel_has_compat,spi3,$(DT_COMPAT_NORDIC_NRF_SPIS))
|
|
depends on SPI_SLAVE
|
|
select NRFX_SPIS3
|
|
help
|
|
Enable nRF SPI Slave with EasyDMA on port 3.
|
|
Due to hardware limitations the implementation supports only simple
|
|
buffers (consisting of one part) located in RAM.
|
|
|
|
config SPI_3_NRF_ORC
|
|
hex "SPI Port 3 over-read character"
|
|
depends on SPI_3_NRF_SPIM || SPI_3_NRF_SPIS
|
|
range 0x00 0xff
|
|
default 0xff
|
|
help
|
|
Over-read character. Character clocked out after an over-read
|
|
of the transmit buffer.
|
|
|
|
config SPI_3_NRF_RX_DELAY
|
|
int "SPIM3 MISO sampling delay"
|
|
depends on SPI_3_NRF_SPIM && (SOC_NRF52833 || SOC_NRF52840)
|
|
range 0 7
|
|
default 2
|
|
help
|
|
Number of 64 MHz clock cycles (15.625 ns) delay from the sampling
|
|
edge of SCK (leading or trailing, depending on the CPHA setting used)
|
|
until the input serial data on MISO is actually sampled.
|
|
|
|
config SPI_4_NRF_SPIM
|
|
def_bool $(dt_nodelabel_has_compat,spi4,$(DT_COMPAT_NORDIC_NRF_SPIM))
|
|
select NRFX_SPIM4
|
|
help
|
|
Enable nRF SPI Master with EasyDMA on port 4.
|
|
|
|
config SPI_4_NRF_ORC
|
|
hex "SPI Port 4 over-read character"
|
|
depends on SPI_4_NRF_SPIM
|
|
range 0x00 0xff
|
|
default 0xff
|
|
help
|
|
Over-read character. Character clocked out after an over-read
|
|
of the transmit buffer.
|
|
|
|
config SPI_4_NRF_RX_DELAY
|
|
int "SPIM4 MISO sampling delay"
|
|
depends on SPI_4_NRF_SPIM && SOC_NRF5340_CPUAPP
|
|
range 0 7
|
|
default 2
|
|
help
|
|
Number of 64 MHz clock cycles (15.625 ns) delay from the sampling
|
|
edge of SCK (leading or trailing, depending on the CPHA setting used)
|
|
until the input serial data on MISO is actually sampled.
|
|
|
|
config SPI_NRFX_RAM_BUFFER_SIZE
|
|
int "Size of RAM buffers for SPIM peripherals"
|
|
default 8
|
|
depends on NRFX_SPIM
|
|
help
|
|
SPIM peripherals cannot transmit data directly from flash. Therefore,
|
|
a buffer in RAM needs to be provided for each instance of SPI driver
|
|
using SPIM peripheral, so that the driver can copy there a chunk of
|
|
data from flash and transmit it.
|
|
The size is specified in bytes. A size of 0 means that this feature
|
|
should be disabled, and the application must then take care of not
|
|
supplying buffers located in flash to the driver, otherwise such
|
|
transfers will fail.
|
|
|
|
endif # SPI_NRFX
|