TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F: cc2640r2f定时器不准问题。

Part Number:CC2640R2FOther Parts Discussed in Thread:CC2642R, SIMPLELINK-CC13XX-CC26XX-SDK, SYSCONFIG, SIMPLELINK-CC2640R2-SDK

在2640r2f使用定时器设置100us,在回调函数中进行电平翻转。测得时间不是100us。cc2642r测试准确。(黄色为2642r,蓝色2640)

相同的翻转函数。黄色ch1 主机,蓝色ch2从机,主机100us

 

1ms也不是很准

1)2640r2f定时器最小能精确产生多少?还是我的代码有问题。

2)在那可以找到2640r2f 使用的是24M倍频的48M?

void timerCallback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask)
{
//syn_t_count++;
//GPIO_toggle(IOID_0);GPIO_toggleDio(EEG_BOARD_UART_TX);// interrupt callback code goes here. Minimize processing in interrupt.
}
void Timer_Init(void)
{GPTimerCC26XX_Params params;GPTimerCC26XX_Params_init(&params);params.width= GPT_CONFIG_16BIT;params.mode= GPT_MODE_PERIODIC;params.direction= GPTimerCC26XX_DIRECTION_UP;params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;hTimer = GPTimerCC26XX_open(EEG_BOARD_GPTIMER1B, &params);if(hTimer == NULL) {

//Task_exit();}Types_FreqHz  freq;BIOS_getCpuFreq(&freq);//48000 000GPTimerCC26XX_Value loadVal = freq.lo / 10000 - 1; //100usGPTimerCC26XX_setLoadValue(hTimer, loadVal);GPTimerCC26XX_registerInterrupt(hTimer, timerCallback, GPT_INT_TIMEOUT);GPTimerCC26XX_start(hTimer);

}

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

您好,您可以先参考下相似的问题:

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

GPTimer 时钟取决于 MCU 系统时钟。 如果需要非常高精度的输出,应用程序应请求使用外部 HF 晶体。 SIMPLELINK-CC13XX-CC26XX-SDK example在 SysConfig 中默认使用 48MHz XOSC_HF 作为 HF 时钟源。 相比之下, SIMPLELINK-CC2640R2-SDK 默认使用 source/ti/devices/cc26x0r2/startup_files/ccfg.c 中的 24MHz XOSC_HF。

因此如果两者都不使用 RCOSC ,那应该是准确的。 如果 timerCallback 的唯一目的是切换 GPIO ,那么您可以选择使用 PWM TI 驱动程序。 如果偏移是一致的 (总是不正确的 "X" 微秒) ,那么可以进行一些小的更改 loadVal 进行补偿。

,

caiyu:

Cherry Zhou 说: timerCallback 的唯一目的是切换 GPIO

timercallback目的是为了计时,想通过GPIO翻转验证定时器是否准确。

,

Cherry Zhou:

您好,可能需要注意一点,硬件中断有时会被其他中断 (例如来自另一个外设或无线电堆栈的中断) 触发的 HWI 问题抢占。虽然这不是导致始终不准确的原因,不过您可以参考下TI-RTOS Kernel (SYS/BIOS) User's Guide 了解更多信息。

,

caiyu:

链接错误吧。链接是这个,Measuring CC13xx and CC26xx current consumption,我应该看那个,哪一章节?您那边通过gpio翻转定时器(100us)是否准确?

,

Cherry Zhou:

您好,谢谢您的提醒,正确的链接是您发的这个。

dev.ti.com/…/node

caiyu 说:您那边通过gpio翻转定时器(100us)是否准确?

工程师这边因为权限原因,并没有进行相关测试。请问您是在评估 LaunchPad吗?

,

caiyu:

您好,我现在用1ms定时器进行计时。主从机同时开定时器,每隔2分钟读取一次主从机时间,发现主从机时间相差(M-S)越来越大。理论应该一直差一个连接间隔(23ms)。这与 连接间隔相矛盾。想请问下:主从机是如何保持稳定的连接间隔?使用的是什么时钟?

说明:S相同连接事件上从机时间;M相同连接事件上主机时间;M_U:主机接收串口读取时间指令时间。Δ:后一次时间-前一次时间

S(ms)

M(ms)

M_U(ms)

M-S(ms)

ΔM(ms)

ΔS(ms)

ΔM_U(ms)

61836

61860

61818

24

181828

181857

181828

29

119997

119992

120010

301841

301874

301839

33

120017

120013

120011

421854

421891

421853

37

120017

120013

120014

541866

541908

541865

42

120017

120012

120012

661859

661904

661875

45

119996

119993

120010

781872

781922

781886

50

120018

120013

120011

901884

901938

901897

54

120016

120012

120011

1021877

1021955

1021907

78

120017

119993

120010

1141890

1141952

1141918

62

119997

120013

120011

Cherry Zhou 说:请问您是在评估 LaunchPad吗?

我没有在launchpad测试,但是测试几个模块都是这样。100us不准确。1ms勉强准确。2640的性能不能这么差吧。

,

Cherry Zhou:

您好,应该使用 LAUNCHXL-CC2640R2F 评估您的代码,并且使用其测试设置来确认您的硬件不会导致任何问题。

请问您是专门指 BLE 连接事件吗? 如果是的话,您可以先参考下BLE-Stack User's Guide和 SLA。这个问题我们会再寻求BLE工程师的帮助。

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F: cc2640r2f定时器不准问题。
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1