你好,
我们有一个传感器需要微秒的延迟才能访问它。在SDK或外部是否有一个函数,我们可以产生1微秒的延迟?
我们有很多延迟函数,但都是以毫秒为单位的。你能提供一个freertos的解决方案吗
感谢和问候,Sandeep。
嗨Sandeep,
感谢您的在线问题,以及您对我们的BLE解决方案感兴趣。不幸的是,设置微秒延迟是不可能的,因为OS计时器的粒度为1.98msec ~= 2msec。请检查FreeRTOSConfig.h中的以下宏
#define configSYSTICK_CLOCK_HZ 32768 #define configTICK_RATE_HZ ((TickType_t) 512) #define TICK_PERIOD ((configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ))
谢谢,PM_Dialog
我的传感器肯定需要微秒的延时。否则,传感器接口将无法工作。我也在其他微控制器上测试过。你能给我提供一个解决这个问题的方案吗?
感谢和问候,
Sandeep。
让我先内部检查一下,稍后给你答复。
您可以使用hw_clk_delay_usec(),它位于hw_clk.h。此功能获取当前时钟源,并增加N usseconds的延迟。由于您正在使用一个传感器,DA1469x应该处于活动模式,以便系统将运行在32MHz时钟。
文档声明
/*** \brief增加N个usecs的延迟。** \param[in] usec要等待的usecs的数量。** \返回空** \warning系统时钟的最小延迟是HW_CLK_DELAY_OVERHEAD_CYCLES。*在系统时钟周期中,分辨率为HW_CLK_CYCLES_PER_DELAY_REP。*应用AHB除法器后计算系统时钟滴答。*/
#定义HW_CLK_DELAY_OVERHEAD_CYCLES (72)#定义HW_CLK_CYCLES_PER_DELAY_REP (4)
你能解释一下最小延迟的计算方法吗?
它能产生我们吗??
当运行XTAL32M时钟时,可以创建的最小延迟是3us。在32MHz时钟下创建1us是不可能的,因为代码执行的开销大于延迟。1uS延迟只有在使用96MHz锁相环时才能实现。要做到这一点,您应该在调用hw_clk_delay_usec(1)之前更改时钟路线到PLL。
嗨Sandeep,
感谢您的在线问题,以及您对我们的BLE解决方案感兴趣。不幸的是,设置微秒延迟是不可能的,因为OS计时器的粒度为1.98msec ~= 2msec。请检查FreeRTOSConfig.h中的以下宏
谢谢,PM_Dialog
我的传感器肯定需要微秒的延时。否则,传感器接口将无法工作。我也在其他微控制器上测试过。你能给我提供一个解决这个问题的方案吗?
感谢和问候,
Sandeep。
嗨Sandeep,
让我先内部检查一下,稍后给你答复。
谢谢,PM_Dialog
嗨Sandeep,
您可以使用hw_clk_delay_usec(),它位于hw_clk.h。此功能获取当前时钟源,并增加N usseconds的延迟。由于您正在使用一个传感器,DA1469x应该处于活动模式,以便系统将运行在32MHz时钟。
谢谢,PM_Dialog
你好,
文档声明
/**
* \brief增加N个usecs的延迟。
*
* \param[in] usec要等待的usecs的数量。
*
* \返回空
*
* \warning系统时钟的最小延迟是HW_CLK_DELAY_OVERHEAD_CYCLES。
*在系统时钟周期中,分辨率为HW_CLK_CYCLES_PER_DELAY_REP。
*应用AHB除法器后计算系统时钟滴答。
*/
#定义HW_CLK_DELAY_OVERHEAD_CYCLES (72)
#定义HW_CLK_CYCLES_PER_DELAY_REP (4)
你能解释一下最小延迟的计算方法吗?
它能产生我们吗??
感谢和问候,
Sandeep。
嗨Sandeep,
当运行XTAL32M时钟时,可以创建的最小延迟是3us。在32MHz时钟下创建1us是不可能的,因为代码执行的开销大于延迟。1uS延迟只有在使用96MHz锁相环时才能实现。要做到这一点,您应该在调用hw_clk_delay_usec(1)之前更改时钟路线到PLL。
谢谢,PM_Dialog