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(¶ms);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, ¶ms);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工程师的帮助。