完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试使用 tiM5 测量两个不同 GPIO 的上升沿之间的时间量。我做出的一个假设是其中一个 GPIO 将首先发生。
实际上,应用程序涉及 3 个 gpios,PA0、PA1 和 PA2,PA2 配置为输出,PA0 和 PA1 处于交替模式以用作 TIM 的捕获触发器。PA0 和 PA1 都连接到其他一些系统,这是我要测量“响应时间”的系统。PA2 连接到 PA0。 Tim 配置为对 PA1 上的事件触发中断。发生这种情况时,ISR 会向邮箱发送一条消息,其中包含 CCR[0] 和 CCR[1] 的内容。 所以方法是这样的:
收到ISR的消息后,ticks的个数本质上可以通过减去stop_ticks - start_ticks来计算。并且可以通过将该值除以 84000 来获得以毫秒为单位的时间。(我在 STM32f407 上) 这似乎可以很好地测量 1、2、3、4、5... 及以上毫秒的时间段。但是当测量示波器上显示为大约 1.5us 的时间段时,该系统测量的时间约为 3us。(在小时间段内有如此大的百分比误差)。 这些周期 (1.5 - 3us) 是 84MHz 的数百个时钟周期,因此我假设可以比这快得多检测到上升沿。一个 84MHz 定时器的周期应该略高于 10ns,所以我希望在测量中获得大约那个精度。 所以我想知道,什么可能导致这个错误偏移? 检测定时器时钟周期的上升沿需要多长时间? 对这种方法有什么想法吗?有一些常见的陷阱吗? 非常感谢大家。 |
|
相关推荐
1个回答
|
|
我目前正在使用 STM32 计时器,所以对我来说,您似乎设置一切正常。
两个通道的 CCMR 设置(过滤器)是否相同? 也许这是在 ms 中工作时的浮点精度问题? 检查“纯”滴答差异,也许这是正确的? 我最近不得不使用 64 位变量在 PTP 硬件上使用纳秒来获得一些精确的结果。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2742 浏览 1 评论
3244 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1813 浏览 1 评论
3655 浏览 6 评论
6044 浏览 21 评论
1342浏览 4评论
203浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
356浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
446浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
275浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 21:52 , Processed in 1.042998 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号