This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640:VDDR/DCOUPL 上的电压低至零

Guru**** 2555630 points
Other Parts Discussed in Thread: CC2640, CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/569563/cc2640-voltage-on-vddr-dcoupl-down-to-zero

器件型号:CC2640
Thread 中讨论的其他器件: CC2650

早上好、

我们从一年前开始将 CC2640用于我们的项目、有时会遇到问题、我找不到其来源。

几天后、广播似乎被禁用、VDDR 引脚和 DCOUP 引脚上的电压降至零。 据我所知、进入此状态的唯一方法是在系统工作时将全局电压功率降低至~1.7V。 我们在 VDDS 引脚上使用 CR1616电池和2x47uF 钽电容器、其他一切与参考设计类似。

是否还有其他可能(如软件问题)导致此状态? 是否可以防止系统或触发此电压?

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您看到的内容已记录在我们的数据表中。 您可以在我们的数据表第35页的电源管理部分注释2中找到所有信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christin:

    非常感谢您的回答、这对我非常有帮助。

    我发现、当我停止现有连接时、根据我在软件中执行的操作、应用程序会使用大量电流。 借助3倍47uF 钽电容器和 CR1616 (可能使用20%)、我捕捉了800mV 压降、接近2V。

    在下图中、我以200ms 的间隔连接、然后我退出双连接。 在压降之前、传感器控制器在间隔连接之间驱动电机。 在压降之后、我们可以看到广播电流消耗。

    我认为、当我启动一个新任务(用于在系统处于待机模式时使用传感器控制器控制电机)时、这个问题就会出现。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在尝试再次捕获此压降、但现在它不成功... 在为传感器控制器启动新任务之前、我将在每个连接事件之后添加一个 Task_sleep(200)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的电路上出现了新的压降、这个压降会使系统崩溃。 外设只被连接、无电机控制、两分钟后没有读/写、我关闭了连接。 此时电压出现,达到1.81V:  

    我花了一个下午的时间来追踪这种电流消耗、我看到了5-10次、但每20次尝试一次。 什么会导致如此大的电流消耗?

    // RF 输出配置
    while (HCI_EXT_SetTxPowerCmd (HCI_EXT_TX_POWER_0_DBM)!=成功)
    Task_sleep (10);
    while (HCI_EXT_SetMaxDtmTxPowerCmd (HCI_EXT_TX_POWER_0_DBM)!=成功)
    Task_sleep (10
    
    
    
    
    
    ~);while (HCI_0_CLT_connection_ACT_RET_RET_RET_ACT_ACT_RET_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACTION (H/ t)
    
    ~
    
    
    /(HT_RET_RET_ACT_ACT_RET_ACT_ACT_ACT_ACT_ACT_ACT_RET_ACT_ACT_ACT_RET_ACT_ACT_ACT_ACT_ACT_RET_ACT_ACT_ACT_RET_ACT_ACT_ACT_RET_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_ACT_RET_RET_ACT_ACT_
    

    欢迎提供任何帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我不确定是什么导致了这种情况、但我建议您在代码中添加 IO 切换、以确定代码在哪个点发生了中断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    IO 切换? 像断点? 连接到 PCB 的 CCS 不能出现此错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    IO 切换不是断点。

    我的意思是,例如,将代码修改为以下内容:

    while (HCI_EXT_SetTxPowerCmd (HCI_EXT_TX_POWER_0_DBM)!=成功)
    --> ioggleOnce
    while (HCI_EXT_SetMaxDtmTxPowerCmd (HCI_EXT_TX_POWER_0_DBM)!=成功)
    --> ioggleTwice
    while (HCI_EXT_SetFastTxResponse TimeCmd (HCI_EXT_DISABLE_FAST_TX_RESP_TIME)!=成功)
    --> ioggleThreeTimes

    (笑声) 等等

    使用示波器跟踪电压电平和 IO 引脚、以查看压降如何映射到 IOTOGGLE。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我让我的系统在整个周末工作,并使用当前的监控来触发事件,以查看是否发生任何情况:

    在两个广播事件(30秒)之间、电机启动、并突然使用12mA 电流。 我不认为 CC2640能够使用该电流事件的数量是代码中的错误吗? 它必须是一个外部元件(作为电机) ? 电压为35mS、电机步长为10ms 或更短、因此现在我不确定。 因为这些 Pikes 很难重现。

    深入了解:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以在不使用电机的情况下仅运行 CC2640? 那么、检查额外的电流是否来自该电流会更容易。
    您是如何实现运行电机的代码的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的应用分为两个任务:第一个任务是管理 BLE 事件和配置文件的读取/写入,第二个任务是管理传感器控制器。 第二个任务是在传感器控制器工作时处于待机模式、并在传感器控制器完成任务时每10ms 计时一次唤醒。 然后、它再次启动、直到传感器控制器执行所有步骤。

    在第一个任务中,在广播事件之间,每200ms 启动一个时钟,创建一个“Starting_Steps_Events”:

    if (event & peri_end_ADV_START_EVT)
    {
    event &=~peri_end_ADV_START_EVT;//重置 event
    Util_stopClock (&Clock_StartSteps);// Stop clk
    
    // Start Steps
    if (gapProfileState == GAPROLE_WAITING_STUFFT = sensor_stock_stocks);//停止时钟/停止步骤 if (gapProfileState = gap_steping =
    
    16);//开始步骤= t SENSOR_st_steps;不等待时间和暂停状态= tor_steps;// 200ms
    volatile uint16_t scheduled_start = 0;
    peri_fw21_StartStop_Sensor (steps、0);//启动传感器控制器
    
    //安排下一次启动
    if (Flow_adace_cnt_u16_gl < Flow_adt_cnt_max_u16_gl)
    scheduled time_start_time_pert_sensor_time_for_time_/vert_up_time_vert_gl
    
    
    
    
    = pert_time_time_for_time_/vert_time_for_time_time_for_try_v_time_time_for_try_vert_trade_time_/vert_det_gl
    if (waiting_adv_time_counter_U16_gl <(default_advertising_TIMEOFF - PERIOD_SENSOR_MARGIN))
    {
    Util_restartClock (&Clock_StartSteps、(uint32_t) scheduled_start);//广播管理的起始时钟
    Flow_ADAP_cnt_U16_peri = Flow_ADAP_SENSOR_STATUS_U16;
    
    
    
    }
    
    = volatile Ut_OPT_STATUS =
    1 (U16)= Ut_OPT_CLUS_CLUS_CLUS_CLUS_CLUS_CLUS_CLUS_CLUS_CLUS_QUESHOD= 1 = 1 = 1 = 1 (volatile 1 = 1) 1 = 1 = 1 = 1 = 1 (volatile 1 = 1 = 1
    
    
    

    StartStop_Sensor 函数将计算我必须执行的步骤、然后创建一个任务来管理传感器控制器。 此任务每10ms 启动一次传感器控制器以执行新步骤。

    静态空 Peri_fw21_Sensor_taskFxn (UARg a0、UARg A1)
    {
    SensorController_init ();//初始化应用
    
    程序//重置结构 cfg 和状态
    scifResetstruct (BV (SCIF_ASSERVISSETENT_ID);BV (SCIF_STRUCTOR_STEFFT
    
    
    )
    
    ;task.STRUCTOR.STEFFT = STEFFT
    = STEFFT = STEFFT;task.STRUCTOR.STEFFT = STEFFT = STEFFT = STEFFT = STEFFT = STEFFT;task.STRUCTORT.STEFFT = STEFFT = STEFFT = STEFFT = STEFFT = STACT.STACT.STEFFT;task.STEFFT = STACT.STEFFT = STACT.STEFFT = STACT.STACT.STUISTEST.STUCTORT.STUART.STUCTORT.ST//重置步骤
    scifTaskData.asservissection.cfg 错误步长= 0;//重置错过的步骤
    scifTaskData.asservissection.cfg Periodstep = 0;//重置步骤的周期
    scifTaskData.asservissection.state.HallDetected = 0;//重置霍尔检测标志 scifTaskAlert.cfg.Periodstep = 0;//从
    sciftaskOutrate.state.state.state.state.state=
    
    
    
    
    0;//从 sciftaskAlert.state.state.state.state.state.state.s/semf (s/semiftaskdata.state.state.state.state.state.state.state= 0)// Resetc.alf = 1开始 scifore= 1;//重复
    
    
    //停止传感器控制
    器 scifAckAlertEvents ();
    while (SensorController_stop ()!= SCIF_SUCCESS){Task_sleep (100);}
    
    
    * Sensor_state = sensor_pause;//通知传感器已执行任务
    }
    //开始一次 init-execute-terminate 会话*/
    scif_result_T SensorStartController (
    
    0xtc00024)// RTC Ch2、bit 15:0 -> 1/65536秒的开始节拍
    
    //打开 AUX I/O 锁存器,在加电后该锁存器的值未定义。 默认
    情况下、AUX_AIODIO 将//在所有 I/O 引脚上驱动"0"、因此必须在 IOC
    HWREG (AUX_WuC_BASE + AUX_WuC_O_AUXIOLATCH)= AUX_WuC_AUXIOLATCH_EN_Transp;
    
    scifTaskResourceInit();/ AUX_WuC_AUXIOLATCH = AUXIF/ AUXIFT/TASKERI 终止
    
    任务0x000/ SYSCBIT_TASKIT
    (AUXIF/ AUXIF/ AUXIF_START)和 SYSCBIST/任务0xBIST/ AUXIF/ AUXIF/任务0xBIST/ AUXIF/ AUXIF/ AUXIF/任务0xBIN) 

    因此、基本而言、每200毫秒就会创建一个任务来管理传感器控制器。 每次都能正常工作、我不得不等待一天以上才能触发这种电流。 它发生在 Start_Steps 事件发生时、并使用25ms 达到12mA。 然后下降、我的时间再次得到尊重。 但我的应用程序没有使用这些25ms、这是错误的、因为它会在我的全局计时表中创建一个移位。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    25ms 可能是由于电池充电/放电的滞后造成的。 我认为这不是因为实际的任务处理时间。 您必须了解您自己的应用中突然出现12mA 使用(峰值)的原因。 还要确保您使用的电池的内部电阻不会过高。 (对于电池的内部电阻、您应该能够在数据表中找到它)

    如需了解 CC2640/CC2650的正常通告/连接和电流消耗,请访问此处( www.ti.com/.../swra478 ),但这是不使用任何外设的数字。 我想您看到的是在无线电同时运行时外设处于打开状态、您可以尝试通过确保在广播结束时运行传感器控制器执行代码来避免这种情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、在电流峰值期间没有连接/广播。 它可能来自:
    -系统脱离待机状态
    -创建新任务时出现问题
    -电机驱动期间的 I/O 问题、但自电阻的内部电阻约为900欧姆、因此对于3V 电池、最大电流约为1mA
    -通过等效250欧姆电阻(可提供12mA)对自电压放电。
    -电池引起的其它问题?

    我使用的是 CR1616锂电池、但未指定内部电阻。 该公司说、我可以在电池之间做出很大的改变。 根据能量器数据表、该值应约为80-100欧姆。 对于当前应用、它们的功能不够强大、但这是我们发现的最小电池、可以驱动应用数周。

    为了帮助 CR1616、我们使用了三个分别为47uF 的钽电容器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否尝试将传感器控制器代码与正在运行的电机一起运行? 因此、我们可以将电流与 BLE 堆栈和传感器控制器分离。

    看看您是否可以找到发生这种情况的频率模式、可能还会尝试增加任务间隔、以便让电池有更多时间从之前的下降中恢复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    昨天我还尝试了其他东西:我没有使用电池,而是使用了电源。 同时、我更改了软件、以便在每次启动前下拉驱动电机的两个输出。  

    它整夜都在转动、屏幕上没有显示任何内容。

    今天上午、我使用智能手机来停止电机、并开始一个包含更多步骤的新测试。 当我停止 BLE 时、我发现了一些非常有趣的东西。 第一张图片是一切正常时的断开连接:大约需要20ms,我选择在连接结束和广播开始之间等待一些时间(以便在这两个事件之间让电池恢复)。

    最大电流7.4mA  

     

    以下是我今天上午停止 BLE 时的当前图片(配置、软件、电源以及所有内容与上一张图片相同):  

    使用的最大电流为12.5mA、两个事件所用的时间为43ms。 在前面的测试中、我们在我的传感器控制器任务开始时看到电流峰值为12mA、持续25ms。 在这里、传感器控制器任务被阻止、等待广播结束、然后再再次使用电机。  

    在以下情况下检测到电流峰值:  

    -断开 BLE 连接并开始广播(多次)

    -在 Gaprole 等待时启动电机和传感器控制器。  

    如果传感器控制器、任务创建或电机控制是问题所在、我应该在夜间看到它。 我再次以全速启动系统。 无 BLE 连接、仅在该配置中存在峰值时等待。 但我的 CC2640似乎有一个奇怪的行为...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通过查看先前的测试,我看到了其他一些东西:  

    当在运行传感器控制器时检测到电流峰值时、它不能来自电机。 因为已针对电流峰值移位计时! 在断开连接期间与前一个相同:  

    传感器控制器的每次启动都必须每200ms 发生一次。 由时钟生成的事件正在管理此操作。 但是、从电流峰值的开始和电流峰值的最大值开始、传感器控制器在25ms 的时间内无法工作。 从待机和步态等待状态中出来、这种峰值已将一切都转移到了一起。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    锁定问题仅在待机模式下发生。 所有 BLE 活动不会在待机模式下发生。
    如果活动状态下的压降过大、则器件将重新启动。

    我唯一能为您提供的建议是在待机状态下监控电流消耗、如果电流消耗过高、您需要从 SW 禁用 POWER_SAVY。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这种情况应该是这样的,但系统处于待机状态如何会产生这样的峰值? 它是否来自直流/直流转换器或 RAM 保持?

    硬件问题是否会对 RTOS 产生影响? 由于此电流峰值增加了 BLE 断开连接的时间、并且电流在增加到12mA 之前不会下降、因此 CC2640似乎处于工作模式。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC26xx 不会产生这样的峰值、但从 CC26xx 获取电流的任何外部组件都可能在器件处于待机状态时产生压降。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果峰值来自外部组件、则断开事件需要相同的时间。 在这里、由于峰值、它花费的时间要多25ms。 这是我无法理解的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将需要使用监听器来查看无线传输的实际情况、以确保前两个图中正在发生的情况。 或者、您需要实现 IO 切换以识别正在运行的代码的哪个部分、从而更好地了解正在发生的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我还没有解决这个问题、但今天我将构建一个小型触发系统、以便使用引脚中断来停止 CC2640并查看 RTOS 对象查看器内部。 最近几天发生的事情:  

    -我尝试更改一些配置参数,如优化或堆栈大小。 没有改变。

    我看一下 VDDR 电压,看看它是否在电流峰值之前下降,但没有下降。 它们同时下降。

    -我在创建传感器任务之前简化了软件,并且每2分钟(而不是6小时)就会出现更容易捕捉的峰。

    -然后我决定不是创建传感器任务,而是让它休眠并使用信标唤醒任务。

    -同样,高峰每隔6-10小时出现一次。 因此问题不是创建或唤醒任务造成的。 它与 CC2640或 RTOS 相关。

    -当系统唤醒传感器任务时,LED 闪烁;当峰值达到最大值时,LED 闪烁。  

    现在、我可以得出结论、随着我的应用的全局时序发生变化、该峰值会在使用电机或 I/O 之前出现 系统唤醒时会发生什么情况。 我当前正在运行系统、指示灯在 IcallWait 函数之后闪烁。 我们将看到 LED 是否再次在电流峰值的顶部闪烁。

    关于其他问题:

    我在连接的 Android 系统中读取 btssnoop_HCI 文件以查看发生了什么。 Android 似乎要求断开连接、收到通知、然后接受断开连接。 它可能来自我的 Android 软件、也许我应该在断开连接之前禁用通知。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找到了问题。 它来自使用 osal_SNV_WRITE 的闪存存储器写入。  

    #include 
    #include 
    #include 
    
    #define two_byte 2
    #define four_byte 4
    #define 7e_byte 7
    
    #define HI_UINT16 (A)>> 8)& 0xFF
    )#define LO_UINT16 (A)(((A)& 0xFF)
    
    #define State_missed_Steps_Current9//当前剂量中错过的步骤数,配置文件值
    #define LOG_CODE_LOADD_CUR4. //日志代码编号,用于未完成的步骤
    #define LAST_LOG_VALUE0x88 //最后一个日志值的闪存地址
    
    typedef unsigned char uint8_t;
    typedef unsigned short uint16_t;
    typedef unsigned int uint32_t;
    
    typedef enum
    {
    profile_action = 0、profile_State //配置文件类型、操作或状态
    
    }Profile_type;
    
    void UpdateStepsProfiles (const uint32_t current、const uint16_t missed、const uint8_t flag);
    void WriteInProfile (const uint8_t 参数、const uint8_t size、void * ptr_param、const uint8_t flag);cont notification
    void WriteLog (void *ptR_param);
    
    int main()
    {
    //系统从待机状态唤醒,从 scifTaskData 读取值
    
    uint32_t CURRENT_STEPS u32 = 2500; //电机执行一些步骤
    uint16_t missed_Steps_u16 = 16; //错过了16个步骤
    uint8_t 标志= 0; //通知标志
    
    if (missed_Steps_U16)//所有错过的步骤都写入日志配置文件中
    FLAG = 1; //设置标志
    
    UpdateStepsProfiles (Current_Steps_u32、missed_Steps_U16、FLAG);//更新配置文件和日志
    
    返回0;
    }
    
    void UpdateStepsProfiles (const uint32_t current、const uint16_t missing、const uint8_t flag)
    {
    uint8_t missed_steps [two_byte]={0};
    
    if (flag)
    {
    missed_steps [0]=(uint8_t) HI_UINT16 ((((uint16_t) missed));//((missed>8)& 0xFF);
    missing_steps[1]=(uint8_t) LO_UINT16 ((((((uint16_t) misseded)& 0xFF) misseded);missed_steps[1])=(missed_station_state_missed_steps[Uint8_Write_stepse_state_state])))))、
    1);
    }
    
    }void WriteInProfile (const uint8_t 参数、const uint8_t 大小、void * ptr_param、const Profile_type Profile、const uint8_t Notification_FLAG)
    {
    uint8_t time[f4_byte]={0};//自开始以来的总时间(数组)
    
    //. 从系统配置
    
    开关(参数)获取时间值的函数
    {
    案例 State_Missed_Steps_Current: //如果错过了步骤
    {
    uint8_t missed[two_byte]={0};
    memcpy (missed、ptr_param、two_byte);//复制 ptr_param
    
    uint8_t Log_info[7_byte]={time[0]、time[1]、time[2]、time[3]、time_cuded、cual_log_code missed[0]、missed[1]};
    WriteLog (Log_info); //在日志配置文件中写入
    }
    中断;
    }
    
    空 WriteLog (空*PTR_param)
    {
    volatile uint8_t log_index = 0;//要写入日志配置文件的索引
    
    //... 在配置文件中移动日志以插入最后一个日志
    
    log_index = 0;
    
    //... 在配置文件中写入最后一个日志事件、且 LOG_INDEX = 0
    
    //在 OSAL 中写入以在发生复位时保存最后一个事件
    osal_SNV_write (last_log_value、7_Byte、ptR_param); // 12mA 峰值电流来自该线
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很高兴您发现大电流来自何处。 如果您注释掉该行、问题是否会消失? 您何时调用 osal_SNV_write (广播结束? 连接?)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、通过删除该行、问题将消失。 此写入在广播事件之间每200ms (基于时钟)进行一次(它们每30秒进行一次1秒)、并且在每次连接事件之后(如果连接间隔为200ms)立即进行一次。 传感器控制器在此写入后启动电机、并在下一个事件(由时钟或连接事件触发)之前停止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在尝试通过将地址(LAST_LOG_VALUE)从0x88更改为0x80来使其正常工作、但当前峰值仍在此处、我还在软件中调用了 osal_SNV_WRITE、我删除了它们、但没有更改。  

    我像官方的例子一样改变了这条线,但没有变化。

    //地址
    #define LAST_LOG_VALUE 0x80
    #define LAST_LOG_VALUE 0x88 //未更改任何内容
    
    //行更改
    osal_SNV_write (LAST_LOG_VALUE、7_BYTE、PTR_param);
    osal_SNV_write (LAST_LOG_VALUE、7_BYTE、 (uint8 *) ptR_param);//未更改任何内容 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更改 ItemID 不会影响电流消耗。 为什么您需要经常写入闪存? 您使用的电池对电流尖峰非常敏感(闪存写入操作肯定会导致更高的电流)。 如果您不打算在 RAM 中更换电池、则可以将数据保存在 RAM 中并在稍后使用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果电池发生故障、读取最后的日志值或系统工作的时间可能会很有趣。 我可以在单个地址(如0x80)写入4个字节或1个字节的字节数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它之所以失败、是因为闪存写入、当您的电池电量如此低时、您应该再次尝试避免这样做。 如果您只需要调试信息、那么为什么不只使用 UART 日志记录?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使使用电源、电流峰值也可见。 CC2640如何能够使用大量能源? 是否有办法避免这种情况? 如果我卸下电源并将其放回,如何在不进行闪存读取/写入的情况下读取以前的值?

    提前感谢