Hello!
我的DA14531Mod在深度睡眠中有电流消耗的问题。
我现在有0.012 uA在深度睡眠模式,但根据数据表,它必须是~0.005 uA
我使用温度测量SPI芯片MAX6675。
I also need access to flash and for MAX6675 I use software SPI (GPIO_PIN_7, GPIO_PIN_8, GPIO_PIN_9)
在睡觉前我用我的引脚设置
GPIO_SetActive(GPIO_PORT_0, MAX6675_ENABLE);/ /这是MOSFET关掉MAX6675权力< br / > GPIO_SetInactive (GPIO_PORT_0 GPIO_PIN_7); < br / > GPIO_SetInactive (GPIO_PORT_0 GPIO_PIN_8); < br / > GPIO_SetInactive (GPIO_PORT_0 GPIO_PIN_9); < br / > syscntl_dcdc_turn_off (); < / p > < p > < / p > < p >你能帮我减少当前消费在深度睡眠模式?< / p > < p > < / p > < / div > < / div > < / div > < div class =”字段field-name-field-device field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >设备:,< / div > < div class = "字段条目" > < div class =”field-item甚至“> < a href = " / forum-post-device / da14531”“=“skos:概念”属性=“rdfs: label skos: prefLabel”数据类型= " " > DA14531 < / > < / div > < / div > < / div >
任何指导将不胜感激!
AA < / p > < / div > < / div > < / div > < div class =”字段field-name-field-device field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >设备:,< / div > < div class = "字段条目" > < div class =”field-item甚至“> < a href = " / forum-post-device / da14531”“=“skos:概念”属性=“rdfs: label skos: prefLabel” datatype="">DA14531I 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
我一直在跟踪一个相当恼人的bug,最后我成功地在Dialog示例代码上复制了它。我使用CFG_EXT_SLEEP_WAKEUP_RTC设置了prox_reporter,以便通过RTC从睡眠中唤醒它。
当我使用ARCH_SLEEP_OFF运行prox_reporter时,一切都运行正常。rtc_interrupt_hdlr每20秒触发一次(10秒的广告时间和RTC到达前10秒)。那都是鸭子。
但是,当我使用ARCH_EXT_SLEEP_ON运行prox_reporter时,在rtc_interrupt_hdlr触发后,它会在696ms后再次触发。如果你想要可靠地安排一些事情,那就不好了。
这个bug似乎也会影响Timer1处理器,因为这就是我要追踪的。我报告它在RTC上,因为它是一个*LOT*更容易和更明显的捕获这个在RTC处理程序。
这与广告间隔太接近,不可能是巧合。 What is the BLE sleep code doing to cause this? And how do I fix this?
Thanks.
因为,它是来自相同的触摸IC的相同中断,但我们需要将它与正常的触摸事件分开。
你有更多的例子教我怎么做吗?非常感谢。< / p > < / div > < / div > < / div > < div class =”字段field-name-field-device field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >设备:,< / div > < div class = "字段条目" > < div class =”field-item甚至“> < a href = " / forum-post-device / da1469x”“=“skos:概念”属性=“rdfs: label skos: prefLabel”数据类型= " " > DA1469x < / > < / div > < / div > < / div >
"handle_evt_gattc_discover_char: conn_idx=0000 uuid=11111111-0000-0000-0000-000000000001 handle=000a value_handle=000b properties=2a (-R-W-I——)"。
根据上面的value_handle 0x000b,我想在GATT服务器的属性数据库中设置一些值,然后从中央读取(如ble_gattc_read(0, 0x000b, 0))。
在建立连接后,我在“custom_service_example_code”中给出了以下内容。< / p > < p >开关(hdr→evt_code) {< br / >案例BLE_EVT_GAP_CONNECTED: < br / > handle_evt_gap_connected ((ble_evt_gap_connected_t *) hdr); < br / > < >强静态常量uint8_t数据[]= "对话框!”;< br / > ble_gatts_set_value (0 x000b, sizeof(数据)1、数据),< /强> < br / >打破;p < / p > < > .......................................
我想知道我使用的句柄是否正确,因为我无法从中央读取它。
当我尝试运行这个时,从日志中我得到了以下内容,这是我们无法读取的。
"handle_evt_gattc_read_completed: conn_idx=0000 handle=000b status=0
0000 0000 00"。相比之下,由于我不确定句柄和value_handle,我尝试使用句柄,它是0x000a,我得到如下输出。
"handle_evt_gattc_read_completed: conn_idx=0000 handle=000a status=0
2a 0b 00 01 0000 0000 0000 0000 0000 0000 11 *...............
11 11 11 ".
I request you to clarify with this issue.
Regards,
prasanna
#define NVMS_PRODUCT_HEADER_PART_START 0x000000 /* Mandatory for device booting. Fized position at 0x00000000 */
#define NVMS_PRODUCT_HEADER_PART_SIZE 0x002000
#define NVMS_FW_EXEC_PART_START 0x002000 /* Alignment to 512KB is dictated by the default FLASH_REGION_SIZE. */
#define NVMS_FW_EXEC_PART_SIZE 0x07E000
#define NVMS_FW_UPDATE_PART_START 0x080000 /* Alignment to 512KB is dictated by the default FLASH_REGION_SIZE. */
#define NVMS_FW_UPDATE_PART_SIZE 0x07E000
#define NVMS_PARAM_PART_START 0x0FE000 /* Configuration Parameters of the device. Content written in Mass Production */
#define NVMS_PARAM_PART_SIZE 0x001000
#define NVMS_GENERIC_PART_START 0x0FF000 /* Used by BLE for storing connection information e.g. for pairing */
#define NVMS_GENERIC_PART_SIZE 0x008000
#define NVMS_LOG_PART_START 0x107000 /* FAT-FS organized partition for the log files */
#define NVMS_LOG_PART_SIZE 0x278000
#define NVMS_PARTITION_TABLE_START 0x3FF000 /* Partition Table */
#define NVMS_PARTITION_TABLE_SIZE 0x001000
6. Here Firmware part and Firmware Update part size is about 504KBytes. How to increase the firmware part size.?
7. Here log part is taking about 2MB. How to reduce the log part size to 1MB, and increase the firmware and firmware update part.
8. In social distancing project custom_config_qspi.h maximum code size is limited to 503KBytes.
#define dg_configQSPI_CODE_SIZE_AA ( 503 * 1024 ) /* MAX BIN size including the CMAC firmware
* 503 is the limit with the defaults of the
* SDK and chip reset value.
* Larger BIN need to add the proper
* configuration settings in CS in OTP and apply
* different FLASH partitioning */
9. If it is possible to increase
1. How to increase the partition size of firmware and firmware update part ?
2. Will that effect the social distancing feature?
3. Will SUOTA work after increasing fimware and firmware update part?
Thank you
Jagath
I founded that in "arch_system.c" a function called conditionally_run_radio_cals(); always enable ADC to check die temperature and re-cablirate the RF if temperature difference is greater than (or equal to) 8 degrees Celsius.
This operation will call "adc_init()" and turn off the ADC Interrupt.
I want to know that can I disable RF auto calibrate manually? If I disable it, is there any serious bug happen to the BLE Connections?
Or, how should I do to use continuous mode?
My SDK verison is the newest version:"v_6.0.14.1114-with hotfix_00"
Ex.:
the function conditionally_run_radio_cals(); code belows here:
void conditionally_run_radio_cals(void)
{
#if defined (__DA14531__)
// 531 case
uint32_t current_time = lld_evt_time_get();
if (current_time < last_temp_time)
{
last_temp_time = 0;
}
if ((current_time - last_temp_time) >= 3200) //2 sec
{
last_temp_time = current_time;
// Store the current content of the following registers:
// - GP_ADC_CTRL_REG,
// - GP_ADC_CTRL2_REG,
// - GP_ADC_CTRL3_REG,
// - GP_ADC_SEL_REG.
uint16_t tmp_adc_ctrl_reg = GetWord16(GP_ADC_CTRL_REG);
uint16_t tmp_adc_ctrl2_reg = GetWord16(GP_ADC_CTRL2_REG);
uint16_t tmp_adc_ctrl3_reg = GetWord16(GP_ADC_CTRL3_REG);
uint16_t tmp_adc_sel_reg = GetWord16(GP_ADC_SEL_REG);
adc_config_t cfg =
{
.input_mode = ADC_INPUT_MODE_SINGLE_ENDED,
.input = ADC_INPUT_SE_TEMP_SENS,
.continuous = false
};
// Initialize and enable ADC
adc_init(&cfg);
int8_t current_temp = adc_get_temp();
if (last_temp == 127)
{
last_temp = current_temp;
}
else
{
int8_t temp_diff = current_temp - last_temp;
if (temp_diff < 0)
{
temp_diff = -temp_diff;
}
if (temp_diff >= 8)
{
// Calibrate the RF if the temperature difference is greater than
// (or equal to) 8 degrees Celsius
rfcal_count++;
rf_recalibration();
last_temp = current_temp;
}
}
// Restore the content of the ADC CTRL and SEL registers
SetWord16(GP_ADC_CTRL2_REG, tmp_adc_ctrl2_reg);
SetWord16(GP_ADC_CTRL3_REG, tmp_adc_ctrl3_reg);
SetWord16(GP_ADC_SEL_REG, tmp_adc_sel_reg);
SetWord16(GP_ADC_CTRL_REG, tmp_adc_ctrl_reg);
}
#else