单片机/MCU论坛
直播中

王英

7年用户 1348经验值
私信 关注

计数器的位如何与SRC字段的42-32位对齐?

我想为我的 UVC 设备实现 PTS 和 SRC 值,但在知道如何获取这些值时遇到了一些困难。 我遇到了一个讨论这些值的 话题 ,但我对 pts 和 SRC 的 STC 值如何使用 cyu3pgettime 和 0.1us 时间戳( 在本KBA中解释) 感到困惑。 根据规范,PTS 和 STC 都依赖 dwclockFrequency 作为单位,所以这让我觉得 PTS 和 STC 的值使用相同的源时钟。 这是正确的吗? 如果不是,如果我的时钟设置为 403.2MHz 和 100MHz GPIF,PTS 和 STC 应该使用哪个时钟? 我是否将 dwclockFrequency 设置为 403.2MHz?
我的理解是,当收到 CY_U3P_DMA_CB_PROD_EVENT 事件时,PTS 和 STC 都是在新帧开始时拍摄的。 由于它们都具有相同的单元,因此它们都来自同一个时钟源。 它们也是恒定的。 这是正确的吗?
我知道 SRC 在一些重要性更高的位中包含帧计数器,但这似乎相当简单,因为它只计算通过 FX3 的完整帧数。 关于计数器,我唯一的问题是我的计数器的位如何与 SRC 字段的 42-32 位对齐?

回帖(1)

张桂英

2024-2-27 10:18:55
对于 SOF 计数器,你不需要变量。 USB ITP 数据包具有需要在 SRC 的 SOF 计数器字段中发送该值的帧计数。 因此,每当收到 ITP 数据包事件时, CAN 读取寄存器 SS_MICROFRAME,寄存器中的值除以 8 将是帧号 CAN 映射到 11 位并发送到主机。
由于 SS_MICROFRAME 是 13 位,因此除以 8 的值将是 11 位值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分