UART interrupt in ble_app_peripheral

⚠️
Hi there.. thanks for coming to the forums. Exciting news! we’re now in the process of moving to our new forum platform that will offer better functionality and is contained within the main Dialog website. All posts and accounts have been migrated. We’re now accepting traffic on the new forum only - please POST any new threads at https://www.dialog-semiconductor.com/support . We’ll be fixing bugs / optimising the searching and tagging over the coming days.
4 posts / 0 new
Last post
julienr
Offline
Last seen: 8 months 2 weeks ago
Joined: 2020-10-09 12:32
UART interrupt in ble_app_peripheral

Hi,

I am trying to implement communication via UART and a characteristics with read/write/notify properties (no DSPS or Codeless)

I tested the uart example from sdk without problem

 

I am now trying to add uart to the ble_peripheral example :

- I can write bytes to the characteristics wich are transmitted to UART without problem

- Now I have a problem with UART receive interrupt which is never triggered when I send bytes, but using blocking mode works without problem

 

I used the same settings as the uart example, should I do anything else to import a non-ble example to the ble_app_peripheral project ?

 

I am working with Keil in debug mode

 

 

PM_Dialog
Offline
Last seen: 2 months 2 weeks ago
Staff
Joined: 2018-02-08 11:03
Hi julienr,

Hi julienr,

Thanks for your question online and for your interest in our TINY module solution. You mentioned that you are working on the ble_app_peripheral example of the SDK. Can I ask if you are using any of the available sleep modes?

If yes, when the device is in sleep mode, all the peripheral domains (including UART) are powered down, So this meant that is not possible to have any UART transaction when the ship is sleeping.

For example, when app_default_sleep_mode is set to ARCH_EXT_SLEEP_ON in user_config.h, the default sleep mode is the extended sleep. The chip will start adverting but it will go to extended sleep mode between adverting or connection intervals. Between the connection intervals, it’s not possible to have any UART activity.

If you are using any of the sleep modes, you could try to :

  • Define your own function in .app_on_system_powered in user_callback_config.h and place the UART code.
  • Disable the sleep mode ( but the power consumption will be higher)
  • Use the arch_console.h library. Please see the below docs:

http://lpccs-docs.dialog-semiconductor.com/Tutorial_SDK6/serial_port.html

http://lpccs-docs.dialog-semiconductor.com/DA14531_FAQs/Software.html#how-to-enable-the-debug-uart-mechanism-and-how-to-test-it-in-da145xx-pro-development-kit

Thanks, PM_Dialog

julienr
Offline
Last seen: 8 months 2 weeks ago
Joined: 2020-10-09 12:32
Hi,

Hi,

 

Thanks for the feedback

- I defined my own function in .app_on_system_powered with UART code

- disabled sleep mode with app_default_sleep_mode = ARCH_SLEEP_OFF

- I didn't use arch_console.h library as described in the doc, I changed "#undef CFG_UART1_SDK" to "#define CFG_UART1_SDK" in da1458x_config_basic.h

 

Now the UART1 receive interrupt is triggered

 

Thanks

 

 

 

 

 

 

 

 

PM_Dialog
Offline
Last seen: 2 months 2 weeks ago
Staff
Joined: 2018-02-08 11:03
Hi julienr,

Hi julienr,

Glad that you are able to configure the UART1 and receive an interrupt.

Thanks, PM_Dialog