| .. _module-pw_spi_mcuxpresso: |
| |
| ================= |
| pw_spi_mcuxpresso |
| ================= |
| ``pw_spi_mcuxpresso`` implements the :ref:`module-pw_spi` interface using the |
| NXP MCUXpresso SDK. |
| |
| There are two implementations corresponding to the SPI and FLEXIO_SPI drivers in the |
| SDK. SPI transfer can be configured to use a blocking (by polling) method or |
| non-blocking under the covers. The API is synchronous regardless. |
| |
| ----- |
| Setup |
| ----- |
| Use of this module requires setting up the MCUXpresso SDK for use with Pigweed. Follow |
| the steps in :ref:`module-pw_build_mcuxpresso` to create a ``pw_source_set`` for an |
| MCUXpresso SDK. Include the GPIO and PINT driver components in this SDK definition. |
| |
| This example shows what your SDK setup would look like if using an RT595 EVK. |
| |
| .. code-block:: text |
| |
| import("$dir_pw_third_party/mcuxpresso/mcuxpresso.gni") |
| |
| pw_mcuxpresso_sdk("sample_project_sdk") { |
| manifest = "$dir_pw_third_party/mcuxpresso/evkmimxrt595/EVK-MIMXRT595_manifest_v3_8.xml" |
| include = [ |
| "component.serial_manager_uart.MIMXRT595S", |
| "platform.drivers.flexio_spi.MIMXRT595S", |
| "platform.drivers.flexspi.MIMXRT595S", |
| "project_template.evkmimxrt595.MIMXRT595S", |
| "utility.debug_console.MIMXRT595S", |
| ] |
| } |
| |
| Next, specify the ``pw_third_party_mcuxpresso_SDK`` GN global variable to specify |
| the name of this source set. Edit your GN args with ``gn args out``. |
| |
| .. code-block:: text |
| |
| pw_third_party_mcuxpresso_SDK = "//targets/mimxrt595_evk:sample_project_sdk" |
| |
| Then, depend on this module in your BUILD.gn to use. |
| |
| .. code-block:: text |
| |
| deps = [ dir_pw_spi_mcuxpresso ] |
| |
| ------- |
| Example |
| ------- |
| Example write using the FLEXIO_SPI initiator: |
| |
| .. code-block:: text |
| |
| McuxpressoFlexIoInitiator spi( |
| flexio_spi_config, CLOCK_GetFlexioClkFreq(), baud_rate_bps, blocking); |
| spi.Configure(configuration); |
| |
| spi.WriteRead(source, destination); |