大家好,
我们有一个需要延迟微秒的传感器,以便能够访问它。SDK或外部是否有功能,我们可以生成1微秒延迟?
我们有很多延迟功能,但一切都以毫秒为单位。您能否为Freertos提供同样的解决方案吗?
感谢致敬,乡间。
嗨Sandeep,
感谢在线问题,为您的BLE解决方案感兴趣。遗憾的是,不可能设置微秒秒,因为OS定时器具有1.98毫秒〜= 2×粒度。请在freertosconfig.h中查看以下宏
#define configssystick_clock_hz 32768 #define configtick_rate_hz((ticktype_t)512)#define tick_period((configssystick_clock_hz / configtick_rate_hz))
谢谢,PM_DIALOG.
我有一个传感器,绝对需要微秒延迟。没有此,传感器界面无法正常工作。我也在其他微控制器上测试了它。你能为我提供解决这个问题吗?
感谢致敬,
乡间。
让我在内部检查它,我很快就会回复你。
您可以使用位于HW_CLK.H中的HW_CLK_DELAY_USEC()。此函数获取当前的时钟源,并增加n usecond的延迟。由于您使用的是传感器,因此DA1469X应处于活动模式,因此系统将使用32MHz时钟运行。
你好,
文件说明了
/ *** \简要增加n usecs的延迟。** \ param [in] usec等待的USEC数量。** \返回void** \警告系统时钟滴答中的最小延迟是hw_clk_delay_overhead_cycles。*分辨率是系统时钟滴答中的HW_CLK_CYCLES_PER_DELAY_REP。*应用AHB分频器后,计算系统时钟勾号。* /
#define hw_clk_delay_overhead_cycles(72)#define hw_clk_cycles_per_delay_rep(4)
你能解释一下最低延迟的计算吗?
它可以生成1个吗?
使用XTAL32M时钟运行时,可以创建的最小延迟是3US。由于代码执行的开销比延迟更大,因此无法使用32MHz时钟创建1US。只有在使用PLL 96MHz时运行时,才能实现1US延迟。为此,您应该在调用HW_CLK_DELAY_USEC(1)之前将时钟课程更改为PLL。
嗨Sandeep,
感谢在线问题,为您的BLE解决方案感兴趣。遗憾的是,不可能设置微秒秒,因为OS定时器具有1.98毫秒〜= 2×粒度。请在freertosconfig.h中查看以下宏
谢谢,PM_DIALOG.
我有一个传感器,绝对需要微秒延迟。没有此,传感器界面无法正常工作。我也在其他微控制器上测试了它。你能为我提供解决这个问题吗?
感谢致敬,
乡间。
嗨Sandeep,
让我在内部检查它,我很快就会回复你。
谢谢,PM_DIALOG.
嗨Sandeep,
您可以使用位于HW_CLK.H中的HW_CLK_DELAY_USEC()。此函数获取当前的时钟源,并增加n usecond的延迟。由于您使用的是传感器,因此DA1469X应处于活动模式,因此系统将使用32MHz时钟运行。
谢谢,PM_DIALOG.
你好,
文件说明了
/ **
* \简要增加n usecs的延迟。
*
* \ param [in] usec等待的USEC数量。
*
* \返回void
*
* \警告系统时钟滴答中的最小延迟是hw_clk_delay_overhead_cycles。
*分辨率是系统时钟滴答中的HW_CLK_CYCLES_PER_DELAY_REP。
*应用AHB分频器后,计算系统时钟勾号。
* /
#define hw_clk_delay_overhead_cycles(72)
#define hw_clk_cycles_per_delay_rep(4)
你能解释一下最低延迟的计算吗?
它可以生成1个吗?
感谢致敬,
乡间。
嗨Sandeep,
使用XTAL32M时钟运行时,可以创建的最小延迟是3US。由于代码执行的开销比延迟更大,因此无法使用32MHz时钟创建1US。只有在使用PLL 96MHz时运行时,才能实现1US延迟。为此,您应该在调用HW_CLK_DELAY_USEC(1)之前将时钟课程更改为PLL。
谢谢,PM_DIALOG.