发布数据中断adc功能

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
巴拉吉
离线
最后看到:3个月4天前
加入:2019-12-06 06:48
发布数据中断adc功能

嗨,对话框中,

我有一个跟踪线程的后续查询

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

//我的ADC配置adc_config_t echo_pin_cfg = {.input_mode = ADC_INPUT_MODE_SINGLE_ENDED, .input = ADC_INPUT_SE_P0_6, .smpl_time_mult = 15, .continuous = true, .interval_mult = 0, .input_attenuator = ADC_INPUT_ATTN_4X, .chopping = false, .过采样= 7};adc_init (&echo_pin_cfg);//采样ISR代码void timer_0_isr() {if ((counter % 4) == 0) //大约每50微秒{adc_count = adc_get_sample();Sprintf ((char *) tempbuff," %d, %d \n",adc_count,counter);uart_send(UART2, (uint8_t *) tempbuff, strlen(tempbuff), UART_OP_BLOCKING);柜台}+ +;}

供参考:计时器0 ISR重新加载值是12.5微秒

项目使用:ble_app_peripheral

当我尝试调试我的应用程序时,我得到我的ADC通道的垃圾值,当祝福开始广告.否则我会得到所需的ADC计数。每一次重复3.中设置的BLE间隔user_peripheral.h当我关掉阿包通过设置

// Default Handler Operations static const struct default_app_operations user_default_app_operations = {.default_operation_adv = NULL, //先前它的定义为user_app_adv_start};

user_callback_config.h我从我的ADC通道得到适当的输出。

附注:检查所附文件并做必要的工作。

我需要澄清一下为什么BLE ADV定时器中断ADC通道,如何克服它?

Br,

巴拉。

设备:
PM_Dialog
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

谢谢你的帖子。

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

你有使用任何一种可用的睡眠模式吗?在user_config.h头文件中app_default_sleep_mode变量的值是多少?

请记住,设备可以在间隔(广告或连接)之间休眠。当芯片处于休眠状态时,所有外围域包括ADC、UART和timer都被关闭。

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

在user_app_adv_start()中,还可以禁用app_adv_data_update_timer_used TIMER,该TIMER计划下一次发布数据更新。

谢谢,PM_Dialog

巴拉吉
离线
最后看到:3个月4天前
加入:2019-12-06 06:48
嗨,对话框中,

嗨,对话框中,

抱歉回复晚了

我用的是DA14531模块,用于开发使用开发工具包- USB

我的睡眠配置

/****************************************** * 默认的睡眠模式。可能的值是:* * - ARCH_SLEEP_OFF * ARCH_EXT_SLEEP_ON *——ARCH_EXT_SLEEP_OTP_COPY_ON  * ****************************************** */ 静态常量sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;

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

1.什么是BLE_ADV_INTERVAL?下面是config (user_peripheral.h)

/* APP_PARAM_UPDATE_REQUEST_TO (1000) // 1000*10ms = 10sec,最大允许值为41943sec (4194300 *10ms) /*发布数据更新定时器*/ / #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(uint16_t))

我推断出它的3秒对于每一个ADV和after30 sec更新ADV参数。如果我错了请纠正我。

如果是这样的话,每隔3秒ble_adv就会中断我卡住的计时器ISR。

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

注意:BLE是我们对产品进行的主要更新,我们不能按照我们的产品规格将其设置为SLEEP模式。

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

谢谢提前

Br,

巴拉吉

PM_Dialog
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

app_adv_data_update_timer_used定时器将以每一秒的时间结束。因此,在其到期时,将触发adv_data_update_timer_cb(),以便动态地更新广告数据(特别是制造商数据)

我推断每个ADV的时间为3秒,30秒后它更新ADV参数。如果我错了请纠正我。

你能澄清一下这句话吗?老实说,我没有完全明白你的意思。

让我们一步一步来—SDK包含了一个TIMER0的外围示例。那么,如果您在非ble项目上运行它,TIMER0是否配置正确,回调是否按照预期触发?

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

谢谢,PM_Dialog

巴拉吉
离线
最后看到:3个月4天前
加入:2019-12-06 06:48
嗨,对话框中,

嗨,对话框中,

我有以下配置在user_callback_config.h

// Default Handler Operations static 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
离线
最后看到:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

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

这是负责广告的回调函数。如果你删除user_app_adv_start(),并放置NULL,设备将不会开始广告-当然,你应该把它放入睡眠模式。如果您检查user_app_adv_start()源代码,您将看到app_easy_gap_undirected_advertise_get_active*(正在创建将发送到BLE堆栈的消息,并且app_easy_gap_undirected_advertise_start()开始发布无向连接。

发布间隔在user_config.h头文件中的user_adv_conf结构中设置。我建议先检查一下BLE广告教程(HTML)教程。

谢谢,PM_Dialog