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.

[参考译文] CC2652RSIP:无法复制复制例程

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1060837/cc2652rsip-the-copy-routine-cannot-be-replicated

器件型号:CC2652RSIP

大家好、

环境:Sensor Controller Studio。 硬件:购买的开发板。 修改了例程:LaunchPad 的 LED PWM。

客户希望验证 timer2事件触发器部分中的模块、该部分中复制的代码如下:

1ms 后、定时器通道1打开传感器电源、然后通道2触发1ms 以上的中断、检测中断中的传感器数据并关闭传感器电源、然后进入下一个周期。

按如下方式更改代码: 将上电引脚更改为红色指示灯、然后翻转中断内部的绿色指示灯。

问题:现在是一个稳定的红色灯、绿色灯不会亮起、客户怀疑它没有进入计时器中断。 接下来该怎么办? 此协处理器是否支持 imer2事件触发器?

该例程被清晰标记、完全复制、是否存在配置缺失或代码丢失? 使用索引自动添加中断函数、并且例程为0。

您可以帮助检查此案例吗? 谢谢!

此致、

樱桃

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

    您好、Cherry、

    根据 Sensor Controller Studio 用户指南、代码看起来正常、 在"任务测试"下、请确保从"任务迭代操作序列"中删除"运行执行代码"、并从"可用任务迭代操作"中添加"运行事件处理程序 A 代码(触发0)"。  您还需要在"事件处理程序 A 代码"内使用与"执行代码"中原内容相同的有效逻辑、以便事件完成一些任务、例如闪烁的 LED。

    此致、
    Ryan

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

    您好、Ryan、

    感谢您的帮助、客户按照您给出的步骤操作。 它确实可以运行到中断、 但速度可达10ms。 客户打算在我们层面实施触发事件。

    谢谢、此致、

    樱桃

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

    为了获得更高的定时器分辨率、将时钟源(使用  timer2SetClockSource)从 TIMER2_CLOCKSRC_LF (32kHz)更改为  TIMER2_CLOCKSRC_MF (低功耗模式为2MHz)或 TIMER2_CLOCKSRC_HFDIV2 (工作模式为24MHz)。  请参阅 Sensor Controller Studio 用户指南的计时器2模块。

    此致、
    Ryan

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

    您好、Ryan、

    感谢您的支持。

    客户已按照您在上一个帖子中提到的内容进行配置。  用于捕获代码的函数为 timer2SetClockSource (TIMER2_CLOCK SRC_HFDIV2);设置为24M。

    目前、在 SCS 调试环境中、相同的代码不会在设置的100us 时序进入中断函数、而是在下载到 cc2652rsip 后将生成的文件集成到 CCS 环境中。 中断功能可以在客户设置的时间进入。

    那么、这是什么原因、或者如何解释这一点呢?

    那么、这里有一个相关的问题:

    在同一定时器2上、不同通道设置了多个比较值、通常进入中断的时间间隔应是比较值与节拍时间之间差异的乘积。

    但是、发现无论比较值设置为多少、不同通道进入中断的时间间隔为4us。

    这是否正常? 同一计时器的不同通道使用的时间轴是否唯一?

    谢谢、此致、

    樱桃

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

    您好、Cherry、

    我并不完全理解所提供的描述。  evhSetupTimer2Trigger 将只连接到四个事件信号输出中的一个(TIMER2_EV_ID[0至3])。  例如、 Sensor Controller Studio 用户指南 参考代码将 TIMER2_EV_ID1与  TIMER2_EV_ID0进行了比较、 TIMER2_EV_ID0 将其 GPIO 设置为高电平1ms 后触发、因为 其 timer2SetInitCmpValue 设置为64而不是事件零的32 (使用32kHz 基准)、这基本上会在 timer2SetInitCounterTarget 设置为100ms 时形成 PWM。  您能否提供他们尝试实施的代码、具体而言、他们希望实现的目标是什么?  如果 尚未完成、请让他们参阅 Sensor Controller Studio SimpleLink Academy Labs。

    此致、
    Ryan

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

    您好、Ryan、

    使用的时钟为24M、定时器2周期设置为100us、两个通道进入中断事件的时间为30us 和60us。

    间隔进入中断的预期时间大约为60-30)us、但测量的间隔不是30us。

    然后、它们使所有时间值都大10倍、间隔值就可以了。 代码如下:

    // Set the clock of Timer 2 to 24Mhz
    
    timer2SetClockSource(TIMER2_CLOCKSRC_HFDIV2);
    
    // wait for the clock to settle
    
    timer2WaitForClockSource();
    
    // Set the timer count period
    
    timer2SetInitCounterTarget(2400); //2400 - 100US
    
    /////Reset Timer Channel 0
    
    timer2ResetCcChannel(TIMER_CHANNEL_0);
    
    /////Reset Timer Channel 1
    
    timer2ResetCcChannel(TIMER_CHANNEL_1);
    
    // Generate TIMER2_CCMODE_PULSE_ON_CMP for channel configuration operating modes and events
    
    timer2CfgCcChannel(TIMER_CHANNEL_0, TIMER2_CCMODE_TGL_ON_CMP, 1 << TIMER2_EV_ID0);
    
    // Generate TIMER2_CCMODE_PULSE_ON_CMP for channel configuration operating modes and events
    
    timer2CfgCcChannel(TIMER_CHANNEL_1, TIMER2_CCMODE_TGL_ON_CMP, 1 << TIMER2_EV_ID1);
    
    // Configure the event0 event
    
    evhSetupTimer2Trigger(TIMER_CHANNEL_0, TIMER2_EV_ID0, 1, EVH_TIMER2_TRIG_ON_EDGE);
    
    // configure the event1 event
    
    evhSetupTimer2Trigger(TIMER_CHANNEL_1, TIMER2_EV_ID1, 1, EVH_TIMER2_TRIG_ON_EDGE);
    
    // Set the initial comparison value for Timer 2 capture/compare channels.
    
    timer2SetInitCmpValue(TIMER_CHANNEL_0, 720);//30us
    
    // Set the initial comparison value for Timer 2 capture/compare channels.
    
    timer2SetInitCmpValue(TIMER_CHANNEL_1, 1440);//60us
    
    // Start the timer
    
    timer2StartWithTarget(TIMER2_CNTRMODE_UP_REP);
    
    fwScheduleTask(1);

    请参阅下图:

    谢谢、此致、

    樱桃

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

    感谢您提供详细信息。  由于事件 ID 未与 GPIO 关联、它们如何测量中断间隔之间的4us?  请注意从计时器2事件触发器到事件处理程序代码执行所涉及的启动延迟。

    此致、
    Ryan

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

    您好、Ryan、

    [引用 userid="114053" URL"~/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum 1060837/CC2652rsip-copy-routine-cannot -be replice/3933348#3933348"]由于事件 ID 与 GPIO 无关、因此它们如何测量中断间隔之间的4us?  [/报价]

    通过测量两个 LED 反转的时间来测量间隔。  LED 显示在事件处理程序中显示与事件 ID 相对应的代码。

    最新测试结果:100ms 的间隔是准确的、但如果100us 的时间很短、一个事件为10us、另一个事件为20us、则中断事件不准确。

    谢谢、此致、

    樱桃

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

    我最近说过、在使用传感器控制器触发事件处理程序中断代码时会有启动延迟。  客户可以将 每个计时器通道事件连接到 GPIO (timer2ConnectEventToGpio)、以确定 计时器2执行的准确性。  也许客户应该考虑 使用驱动程序库TI 驱动 程序代码来获得更准确的中断时序。

    此致、
    Ryan