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

CC2640R2F如何做nS纳秒级别的延时

产品使用CC2640R2F,需要300nS和900nS的延时,如图。要求蓝牙链接不能断开,请问有什么方法?延时函数?

da qin zheng sheng:

用nop指令试试

YiKai Chen:

基本上ti-rtos好像沒辦法作到這麼小的延时

Viki Shi:

TI RTOS的延时分两种CPUdelay Task_sleep(),CPUdelay使用delay loop来实现延时,其延时单位为指令周期。

//*****************************************************************************
//
//! \brief Provide a small delay.
//!
//! This function provides means for generating a constant length delay. It
//! is written in assembly to keep the delay consistent across tool chains,
//! avoiding the need to tune the delay based on the tool chain in use.
//!
//! The loop takes 3 cycles/loop.
//!
//! \param ui32Count is the number of delay loop iterations to perform.
//!
//! \return None
//
//*****************************************************************************
extern void CPUdelay(uint32_t ui32Count);

Task_sleep是让出对MCU的占用,可以让其他task得到执行或者执行idle task从而进入低功耗状态。它的计时单位是systick,默认为10us。

具体可以看下SDK中的Clock.html文档

Tristan Tsai:

回复 Viki Shi:

你好,非常感谢,CPUdelay会占用CPU,使用时会占用约25mS的时间,这个会影响蓝牙的保持链接吗?

Tristan Tsai:

回复 Viki Shi:

另外,我看到这个函数的注释,不同的code运行方式有不同的值,我是用的时simple_peripheral例程,请问圆圈里面的是哪一个值?谢谢

Tristan Tsai:

回复 Viki Shi:

不好意思,计算有些出入,CPU占用的时间可能会更长,达到120mS级别

user3948615:

回复 Tristan Tsai:

我建议你用spi去做驱动这个led

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F如何做nS纳秒级别的延时
分享到: 更多 (0)