广告数据中断ADC功能

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
巴拉吉
离线
最后一次露面:1天22小时前
加入:2019-12-06 06:48
广告数据中断ADC功能

嗨对话框,

从以下线程上有一个后续查询

https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bluetooth-low-energy-%2%80%93-software/ultrasonic-interface-using-timer.

//我的ADC配置adc_config_t echo_pin_cfg = {.input_mode = adc_input_mode_single_ending,.input = adc_input_se_p0_6,.smpl_time_mult = 15,.continuoul = true,.interval_mult = 0,.input_attenuator = adcput_attn_4x,.chopping = false,.copping = false。adc_init(echo_pin_cfg);//示例ISR代码void timer_0_ISR(){if((计数器%4)== 0)//大约每50微秒{adc_count = adc_get_sample();Sprintf((char *)tempbuff,“%d,%d \ n”,ADC_COUNT,计数器);UART_SEND(UART2,(UINT8_T *)TEMPBUFF,Strlen(TEMPBUFF),UART_OP_BLOCKING);柜台++;}

FYI:定时器0 ISR重载值是12.5微秒

项目使用:ble_app_peripheral

当我试着调试我的应用程序时,我得到从我的ADC频道垃圾值,当祝福开始广告。否则我将得到所需的ADC计数。这对每一个3.为此值设置为BLE间隔的秒数user_peripheral.h当我关闭时adv数据包通过设置

//默认处理程序操作static const struct default_app_operations user_default_app_operations = {.default_operation_adv = null,//以前其定义为user_app_adv_start};

user_callback_config.h.我从我的ADC通道得到正确的输出。

P.S.检查附件并进行需要。

我需要澄清为什么ble adv timer中断ADC通道,如何克服它?

Br,

巴拉。

设备:
PM_DIALOG.
离线
最后一次露面:14小时23分钟前
职员
加入:2018-02-08 11:03
嗨巴拉吉,

嗨巴拉吉,

谢谢你的帖子。

请您指出您使用的是哪个BLE设备?是DA14580(根据您最初的帖子)还是DA14531 TINY模块(根据您之前的帖子)?

您是否使用了任何可用的睡眠模式?user_config.h标题文件中app_default_sleep_mode变量的值是什么?

请记住,设备可以休眠间隔(广告或连接)。当芯片处于休眠状态时,包括ADC、UART和TIMERS在内的所有外围域都将断电。

您可以使用app_easy_timer(),因为它正在使用BLE Timer,并且在睡眠模式下可用。

在User_App_Adv_start()中,您还可以禁用App_add_data_update_timer_ed timer,该计时器调度下一个广告数据更新。

谢谢,PM_DIALOG.

巴拉吉
离线
最后一次露面:1天22小时前
加入:2019-12-06 06:48
嗨对话框,

嗨对话框,

抱歉回复晚了/

我使用DA14531模块,用于开发使用开发套件- USB

我的睡眠配置

/ ****************************************** *默认睡眠模式。可能的值为:* *  -  arch_sleep_off *  -  ARCH_EXT_SLEEP_ON *  -  ARCH_EXT_SLEEP_OTP_COPY_ON * ****************************************** * / static const sleep_state_t app_default_sleep_mode = arch_sleep_off;

从您的回复中我有以下疑问,

1.什么是BLE_ADV_INTERVAL?和下面的配置(user_peripheral.h)

/* update timer */ #define APP_PARAM_UPDATE_REQUEST_TO (1000) // 1000*10ms = 10sec, maximum allowed value is 41943sec (4194300 *10ms) /* advertisement data update timer */ #define APP_ADV_DATA_UPDATE_TO (3000) // 3000*10ms = 30sec#define app_ad_msd_company__id (0xABCD) #define APP_AD_MSD_COMPANY_ID_LEN (2) #define APP_AD_MSD_DATA_LEN (sizeof(uin雷电竞下载appt16_t))

我推断出来3秒为每一个ADV和之后30 SE.c它更新了ADV参数。如我错了请纠正我。

因此,如果这是这种情况下,每3秒这个ble_adv中断我的定时器ISR,我卡住了。

我的要求是将计时器0配置为12.5微秒,并运行它到40 ms,(计数器值=> 3200 * 12.5),在40 ms后重置,等待12.5微秒和定时器溢出和循环重复。现在这个ble_adv中断了我的40 ms循环,我在我的ADC通道中获得垃圾值。

注意:BLE是我们在我们的产品中做的主要更新,我们不能把它放到睡眠模式按照我们的产品规格。

我可以分享我的完整代码,因为IP我不能在这里分享,所以如果提供任何邮件ID将更容易复制我的问题。

谢谢提前

Br,

巴拉吉

PM_DIALOG.
离线
最后一次露面:14小时23分钟前
职员
加入:2018-02-08 11:03
嗨巴拉吉,

嗨巴拉吉,

app_add_data_update_timer_ed timer经过每个app_add_data_update_to秒。因此,在其到期时,触发ADV_DATA_UPDATE_TIMER_CB()以便在飞行中更新广告数据(特别是制造商数据)

>>>我对每个ADV推断3秒,30秒后更新ADV参数。如我错了请纠正我。

你能澄清这句话 - 诚实我没有得到你的意思。

让我们参加部分 - SDK包括Timer0的外围示例。因此,如果您在非BLE项目上运行它,则TIMER0是否正确配置,并按预期触发回调?

如果是,请在BLE示例的调试模式下运行,并在timer_0_isr()上添加断点。是否命中了断点,从而执行adc_get_sample() ?

谢谢,PM_DIALOG.

巴拉吉
离线
最后一次露面:1天22小时前
加入:2019-12-06 06:48
嗨对话框,

嗨对话框,

我在user_callback_config中有以下配置

// Default Handler Operations静态const struct default_app_operations user_default_app_operations = {.default_operation_adv = user_app_adv_start,};

那么这个功能实际上是什么。你能解释一下吗?

来自SDK 6.0.12.1020的BLE项目中使用的BLE广告间隔是什么?

谢谢提前

Br,

巴拉。

PM_DIALOG.
离线
最后一次露面:14小时23分钟前
职员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

首先,我强烈建议您使用SDK的最新版本,即SDK6.0.14。

这是负责广告的回调函数。如果删除user_app_adv_start()并放置NULL,那么设备将无法启动广告 - 当然您应该将其放入睡眠模式。如果检查user_app_adv_start()源代码,您将看到app_easy_gap_undircated_advertise_get_active *(正在创建将发送到BLE堆栈的消息,App_easy_gap_undircted_advertise_start()开始为无向连接进行广告。

广告间隔被设置为user_config.h头文件中的user_adv_conf结构。我建议首先检查BLE广告教程(HTML)教程。

谢谢,PM_DIALOG.