LPUART using interrupt (not async) not working

Hi,

I'm trying to use LPUART in interrupt mode (not async), but I can't get it to work.

I'm using the sample in NCS, which works when using async.

When I uncomment the line in prj.conf to activate the interrupt mode, the power consumption goes way up (around +1 mA).

What am I doing wrong to work with LPUART in interrupt mode ?

Regards

Giuliano

Parents Reply Children
  • Sorry for the delay. I got hold of a PPK now and will look into it today.

  • Hello, I tested the LPUART sample with interrupt NCS 2.0.0, nrf5340dk_nrf5340_cpuapp and CONFIG_NRF_SW_LPUART_INT_DRIVEN=y. I measured a current of 94.3 uA, not as low as I expected, but definitely lower than 1 mA. When using the lpuart in async mode, I measured a current of around 94 uA as well. 

    You can see that the communication happen as expected with 600ms between each transfer.

    Here is the sample I used, with build folder attached, so you can compare. I used NCS v2.0.0 and the nRF5340DK v0.11.0. I disabled uart logging and enabled the interrupt driven Kconfig.

    lpuart_test.zip

    Let me know if you get the same result (94uA) or 1mA

    Best regards,

    Simon

  • Hi Simon,

    I've checked the zephyr/include/generated/autoconf.h, and the LP UART seems to remain in async mode, not in INT mode.

    I've tried the config you used, and I have a lot of CMake waning:

    warning: UART_1_ASYNC (defined at drivers/serial/Kconfig.nrfx:132) was assigned the value 'y' but
    got the value 'n'. Check these unsatisfied dependencies: (!UART_1_INTERRUPT_DRIVEN) (=n). See
    docs.zephyrproject.org/.../kconfig.html and/or look up UART_1_ASYNC in
    the menuconfig/guiconfig interface. The Application Development Primer, Setting Configuration
    Values, and Kconfig - Tips and Best Practices sections of the manual might be helpful too.


    warning: UART_1_NRF_HW_ASYNC (defined at drivers/serial/Kconfig.nrfx:161) was assigned the value 'y'
    but got the value 'n'. Check these unsatisfied dependencies: UART_1_ASYNC (=n). See
    docs.zephyrproject.org/.../kconfig.html and/or look up
    UART_1_NRF_HW_ASYNC in the menuconfig/guiconfig interface. The Application Development Primer,
    Setting Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be
    helpful too.

    If I try the same config with nRF9160, it does not compile:

    xxx/nordic/nrfx/drivers/include/nrfx_timer.h:66:5: error: field name not in record or union initializer
       66 |     .cc_channel_count = NRF_TIMER_CC_CHANNEL_COUNT(id),  

    Are you sure you are indeed using INT mode and not ASYNC mode here ?

    Regards

    Giuliano

  • GiulianoFranchetto said:
    Are you sure you are indeed using INT mode and not ASYNC mode here ?

    Yes, I'm pretty sure. I also modified main.c to look like this:

    void main(void)
    {
    	const struct device *lpuart = DEVICE_DT_GET(DT_NODELABEL(lpuart));
    	printk("LPUART sample started\n");
    	__ASSERT(device_is_ready(lpuart), "LPUART device not ready");
    
    	//if (IS_ENABLED(CONFIG_NRF_SW_LPUART_INT_DRIVEN)) {
    		interrupt_driven(lpuart);
    	//} else {
    	//	async(lpuart);
    	//}
    }

    Then I modified the delay between each transfer to 2.1 seconds

    static void interrupt_driven(const struct device *dev)
    {
    	uint8_t c = 0xff;
    
    	uart_irq_callback_set(dev, uart_irq_handler);
    	uart_irq_rx_enable(dev);
    	while (1) {
    		uart_irq_tx_enable(dev);
    		k_sleep(K_MSEC(2000));
    
    		uart_poll_out(dev, c);
    		k_sleep(K_MSEC(100));
    	}
    }

    When looking at the result in the Power Profiler, I saw a delay of 2.1 second between each transfer and a current of 83uA.

    I used the nRF5340 DK v0.11, the board nrf5340dk_nrf5340_cpuapp and NCS v2.0.0. I also connected together req (P1.14) to rdy (P1.15) and RX (P1.12) to TX (P1.13).

    I did not get any warnings when building the project with NCS v2.0.0. Here is the build output:

     *  Executing task: nRF Connect: Build: lpuart_test/build_5340 (active) 
    
    Building lpuart_test
    west build --build-dir c:\nordic\ncs_samples_local\lpuart_test\build_5340 c:\nordic\ncs_samples_local\lpuart_test --pristine --board nrf5340dk_nrf5340_cpuapp -- -DNCS_TOOLCHAIN_VERSION:STRING="NONE" -DBOARD_ROOT:STRING="c:/nordic/ncs_samples_local/ibeacon_master_sample;c:/Users/siiv/Downloads/central_usb_amc/central_usb_amc;c:/nordic/ncs_samples_local/hci_spi_slave_sample;c:/nordic/ncs_samples_local/ibeacon_master_sample_initial;c:/nordic/ncs_samples_local/hci_spi_slave_sample_initial;c:/nordic/ncs_samples_local/lpuart_test;c:/Users/siiv/Downloads/can_driver/can_driver" -DDTC_OVERLAY_FILE:STRING="c:/nordic/ncs_samples_local/lpuart_test/boards/nrf5340dk_nrf5340_cpuapp.overlay" -DCONF_FILE:STRING="c:/nordic/ncs_samples_local/lpuart_test/prj.conf;c:/nordic/ncs_samples_local/lpuart_test/boards/nrf5340dk_nrf5340_cpuapp.conf"
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/nordic/ncs_samples_local/lpuart_test
    -- Found Python3: C:/toolchains/v2.0.0/opt/bin/python.exe (found suitable exact version "3.8.2") found components: Interpreter 
    -- Cache files will be written to: C:/v2.0.0/zephyr/.cache
    -- Zephyr version: 3.0.99 (C:/v2.0.0/zephyr)
    -- Found west (found suitable version "0.13.1", minimum required is "0.7.1")
    -- Board: nrf5340dk_nrf5340_cpuapp
    -- Found host-tools: zephyr 0.14.1 (C:/toolchains/v2.0.0/opt/zephyr-sdk)
    -- Found dtc: C:/toolchains/v2.0.0/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: zephyr 0.14.1 (C:/toolchains/v2.0.0/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/v2.0.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp.dts
    -- Found devicetree overlay: c:/nordic/ncs_samples_local/lpuart_test/boards/nrf5340dk_nrf5340_cpuapp.overlay
    -- Generated zephyr.dts: C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/dts.cmake
    Parsing C:/v2.0.0/zephyr/Kconfig
    Loaded configuration 'C:/v2.0.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp_defconfig'
    Merged configuration 'c:/nordic/ncs_samples_local/lpuart_test/prj.conf'
    Merged configuration 'c:/nordic/ncs_samples_local/lpuart_test/boards/nrf5340dk_nrf5340_cpuapp.conf'
    Configuration saved to 'C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/.config'
    Kconfig header saved to 'C:/nordic/ncs_samples_local/lpuart_test/build_5340/zephyr/include/generated/autoconf.h'
    -- The C compiler identification is GNU 10.3.0
    -- The CXX compiler identification is GNU 10.3.0
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/toolchains/v2.0.0/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/nordic/ncs_samples_local/lpuart_test/build_5340
    -- west build: building application
    [1/166] Generating include/generated/version.h
    -- Zephyr version: 3.0.99 (C:/v2.0.0/zephyr), build: v3.0.99-ncs1
    [2/166] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [3/166] Generating include/generated/kobj-types-enum.h, include/generated/otype-to-str.h, include/generated/otype-to-size.h
    [4/166] Generating include/generated/driver-validation.h
    [5/166] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
    [6/166] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
    [7/166] Generating include/generated/offsets.h
    [8/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi_on_reset.S.obj
    [9/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/cpu_idle.S.obj
    [10/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
    [11/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
    [12/166] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
    [13/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
    [14/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault_s.S.obj
    [15/166] Generating linker_zephyr_pre0.cmd
    [16/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
    [17/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
    [18/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/vector_table.S.obj
    [19/166] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
    [20/166] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
    [21/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
    [22/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
    [23/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fpu.c.obj
    [24/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
    [25/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
    [26/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strspn.c.obj
    [27/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strstr.c.obj
    [28/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strncasecmp.c.obj
    [29/166] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
    [30/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/cmse/CMakeFiles/arch__arm__core__aarch32__cortex_m__cmse.dir/arm_core_cmse.c.obj
    [31/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
    [32/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/atoi.c.obj
    [33/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/bsearch.c.obj
    [34/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/string.c.obj
    [35/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtol.c.obj
    [36/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
    [37/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtoull.c.obj
    [38/166] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_core_mpu.c.obj
    [39/166] Linking C static library zephyr\arch\common\libisr_tables.a
    [40/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/qsort.c.obj
    [41/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/fprintf.c.obj
    [42/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/sprintf.c.obj
    [43/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/abort.c.obj
    [44/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtoll.c.obj
    [45/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtoul.c.obj
    [46/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/stdout_console.c.obj
    [47/166] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
    [48/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/time/gmtime.c.obj
    [49/166] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\cmse\libarch__arm__core__aarch32__cortex_m__cmse.a
    [50/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/exit.c.obj
    [51/166] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/malloc.c.obj
    [52/166] Linking C static library zephyr\arch\common\libarch__common.a
    [53/166] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
    [54/166] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
    [55/166] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
    [56/166] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
    [57/166] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_mpu.c.obj
    [58/166] Building C object modules/nrf/lib/fatal_error/CMakeFiles/..__nrf__lib__fatal_error.dir/fatal_error.c.obj
    [59/166] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
    [60/166] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [61/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/mdk/system_nrf5340_application.c.obj
    [62/166] Linking C static library zephyr\lib\libc\minimal\liblib__libc__minimal.a
    [63/166] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [64/166] Linking C static library zephyr\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
    [65/166] Building C object modules/nrf/drivers/hw_cc310/CMakeFiles/..__nrf__drivers__hw_cc310.dir/hw_cc310.c.obj
    [66/166] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
    [67/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
    [68/166] Linking C static library zephyr\arch\arch\arm\core\aarch32\mpu\libarch__arm__core__aarch32__mpu.a
    [69/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [70/166] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
    [71/166] Linking C static library modules\nrf\lib\fatal_error\lib..__nrf__lib__fatal_error.a
    [72/166] Linking C static library zephyr\lib\posix\liblib__posix.a
    [73/166] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
    [74/166] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
    [75/166] Linking C static library modules\nrf\drivers\hw_cc310\lib..__nrf__drivers__hw_cc310.a
    [76/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
    [77/166] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
    [78/166] Linking C static library zephyr\drivers\pinctrl\libdrivers__pinctrl.a
    [79/166] Linking C static library zephyr\drivers\clock_control\libdrivers__clock_control.a
    [80/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_timer.c.obj
    [81/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf.c.obj
    [82/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_dppi.c.obj
    [83/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [84/166] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
    [85/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
    [86/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc16_sw.c.obj
    [87/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [88/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32c_sw.c.obj
    [89/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32_sw.c.obj
    [90/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [91/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
    [92/166] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [93/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc7_sw.c.obj
    [94/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [95/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [96/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [97/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc8_sw.c.obj
    [98/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
    [99/166] Building C object CMakeFiles/app.dir/src/main.c.obj
    c:\nordic\ncs_samples_local\lpuart_test\src\main.c:96:13: warning: 'async' defined but not used [-Wunused-function]
       96 | static void async(const struct device *lpuart)
          |             ^~~~~
    [100/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
    [101/166] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/C_/v2.0.0/nrf/drivers/serial/uart_nrf_sw_lpuart.c.obj
    [102/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
    [103/166] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/v2.0.0/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
    [104/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
    [105/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
    [106/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
    [107/166] Building ASM object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/common/soc_nrf_common.S.obj
    [108/166] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
    [109/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
    [110/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
    [111/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/reboot.c.obj
    [112/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
    [113/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
    [114/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
    [115/166] Linking C static library app\libapp.a
    [116/166] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
    [117/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
    [118/166] Linking C static library modules\hal_nordic\nrfx\libmodules__hal_nordic__nrfx.a
    [119/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
    [120/166] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/soc.c.obj
    [121/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
    [122/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
    [123/166] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
    [124/166] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
    [125/166] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/state.c.obj
    [126/166] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
    [127/166] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
    [128/166] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/power.c.obj
    [129/166] Building C object zephyr/CMakeFiles/zephyr.dir/C_/v2.0.0/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
    [130/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
    [131/166] Building C object zephyr/CMakeFiles/zephyr.dir/C_/v2.0.0/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
    [132/166] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/policy.c.obj
    [133/166] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
    [134/166] Generating linker_zephyr_pre1.cmd
    [135/166] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/pm.c.obj
    [136/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [137/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [138/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [139/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [140/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [141/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
    [142/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [143/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [144/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [145/166] Linking C static library zephyr\libzephyr.a
    [146/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [147/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [148/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [149/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [150/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
    [151/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [152/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [153/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [154/166] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [155/166] Linking C static library zephyr\kernel\libkernel.a
    [156/166] Linking C executable zephyr\zephyr_pre0.elf
    
    [157/166] Generating dev_handles.c
    [158/166] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/misc/empty_file.c.obj
    [159/166] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/dev_handles.c.obj
    [160/166] Linking C executable zephyr\zephyr_pre1.elf
    
    [161/166] Generating linker.cmd
    [162/166] Generating isr_tables.c, isrList.bin
    [163/166] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj
    [164/166] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
    [165/166] Building C object zephyr/CMakeFiles/zephyr_final.dir/dev_handles.c.obj
    [166/166] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       29352 B         1 MB      2.80%
                SRAM:        6904 B       448 KB      1.50%
            IDT_LIST:          0 GB         2 KB      0.00%
     *  Terminal will be reused by tasks, press any key to close it. 

    Here is the latest version of the project:

    0777.lpuart_test_v2.zip

    GiulianoFranchetto said:
    I've checked the zephyr/include/generated/autoconf.h, and the LP UART seems to remain in async mode, not in INT mode.

    I checked \lpuart_test\build_5340\zephyr\.config and I saw that CONFIG_UART_ASYNC_API=y. However, I also saw CONFIG_UART_INTERRUPT_DRIVEN=y and CONFIG_NRF_SW_LPUART_INT_DRIVEN=y in the .config file. But, as you see in the reply above I was using the interrupt driven approach in main.c.

    Best regards,

    Simon

Related