打印

求助stm32 提取同步信号

[复制链接]
2641|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问大家如何才能实现在每个上升或下降沿时,极短时间内马上发生一定可按需求变化频率的方波。试过如果直接用外部中断,延时2us,比较久了,目的是要追踪一个时钟信号为100k的被曼彻斯特编码的信号,把这个编码信号的时钟提取出来,并和原时钟同步
沙发
airwill| | 2013-6-21 06:55 | 只看该作者
不知道用的是什么芯片.
比中断更快的当然是硬件手段了.
1. DMA, 要个触发信号, 可以考虑定时器的捕获. 或者外时钟.
2. 单用定时器外时钟和 PWM 应该也能实现.
3. 如果有模拟比较器的话, 可以轻松实现了.
4. 芯片外的逻辑门电路

使用特权

评论回复
板凳
杨爱林林| | 2013-6-21 08:06 | 只看该作者
学习。。

使用特权

评论回复
地板
IJK| | 2013-6-21 13:40 | 只看该作者
追踪一个时钟信号为100k的被曼彻斯特编码的信号,把这个编码信号的时钟提取出来,并和原时钟同步

感觉从原理上来说不难。
时钟信号为100k,周期为10us。假设定时器的时钟为72MHz,那么10us周期的计数值为720,定时器的计数周期就定为720。使用input capture功能,检测到信号边沿时记录下计数值,假设定时器向上计数,计数值为0~10(根据需要调整该值)和710~719可以认为相位无需调整,计数值为10~360可以认为相位超前 就应该把相位往后调,计数值为361~710可以认为相位滞后 就应该把相位往前调。

使用特权

评论回复
5
guiyiming000|  楼主 | 2013-6-21 14:03 | 只看该作者
airwill 发表于 2013-6-21 06:55
不知道用的是什么芯片.
比中断更快的当然是硬件手段了.
1. DMA, 要个触发信号, 可以考虑定时器的捕获. 或者 ...

stm32 f103v,同步时发生的方波较难跟上原时钟信号,因为曼彻斯特编码出的波形每个上升沿时间间隔有两种随机情况

使用特权

评论回复
6
guiyiming000|  楼主 | 2013-6-21 14:09 | 只看该作者
IJK 发表于 2013-6-21 13:40
追踪一个时钟信号为100k的被曼彻斯特编码的信号,把这个编码信号的时钟提取出来,并和原时钟同步

感觉从原 ...

这样还会遇到一个问题,就是不知道该如果判别何时应该发出这个提取的随机信号,如果追踪上升沿的话,相邻上升沿的间隔时间是不确定的,有两种情况,一种是00或11,当相同码挨着时就会造成一个周期,另一种的是第一种情况里出现一次01挨着时,相邻上升沿间隔为时钟周期的1.5倍

使用特权

评论回复
7
airwill| | 2013-6-21 14:26 | 只看该作者
guiyiming000 发表于 2013-6-21 14:03
stm32 f103v,同步时发生的方波较难跟上原时钟信号,因为曼彻斯特编码出的波形每个上升沿时间间隔有两种 ...

不太明白你说的情况, 可以上波形图吗

使用特权

评论回复
8
airwill| | 2013-6-21 14:26 | 只看该作者
guiyiming000 发表于 2013-6-21 14:03
stm32 f103v,同步时发生的方波较难跟上原时钟信号,因为曼彻斯特编码出的波形每个上升沿时间间隔有两种 ...

不太明白你说的情况, 可以上波形图吗

使用特权

评论回复
9
guiyiming000|  楼主 | 2013-6-21 15:37 | 只看该作者
airwill 发表于 2013-6-21 14:26
不太明白你说的情况, 可以上波形图吗



0或1的发生时随机的

使用特权

评论回复
10
guiyiming000|  楼主 | 2013-6-21 15:38 | 只看该作者
airwill 发表于 2013-6-21 14:26
不太明白你说的情况, 可以上波形图吗

每个红线内表示一个时钟周期

使用特权

评论回复
11
IJK| | 2013-6-21 15:55 | 只看该作者
guiyiming000 发表于 2013-6-21 14:09
这样还会遇到一个问题,就是不知道该如果判别何时应该发出这个提取的随机信号,如果追踪上升沿的话,相邻 ...

定时器的计数周期由720  改为360应该可以

使用特权

评论回复
12
airwill| | 2013-6-21 17:44 | 只看该作者
我看, 红线的位置上有可能没有边沿发生. 但是红线的中间位置必有信号边沿发生.
捕捉红线位置, 是有困难的.
而捕捉红线中间位置, 应该容易实现.

使用特权

评论回复
13
guiyiming000|  楼主 | 2013-6-21 18:11 | 只看该作者
airwill 发表于 2013-6-21 17:44
我看, 红线的位置上有可能没有边沿发生. 但是红线的中间位置必有信号边沿发生.
捕捉红线位置, 是有困难的.
...

红线实际上是没有的,目的就是做出一个,在红线内的时钟信号。就是因为红线上可能没有,红线上一定有,就分不清是否该紧跟这个跳变产生时钟

使用特权

评论回复
14
zeluo| | 2013-6-22 18:29 | 只看该作者
学习学习   谢谢了   楼主   很不错   需要顶一个   不错哦  

使用特权

评论回复
15
trumpxp| | 2013-6-23 10:09 | 只看该作者
不是很了解这一块   楼主  帮你顶一个   再看看别人的意见吧   顶一个  

使用特权

评论回复
16
airwill| | 2013-6-23 10:27 | 只看该作者
如果在红线位置要输出同步脉冲. 也有办法的, 可以分两步
1. 先准确测量出波特率.
2. 调整和设置定时器, 由定时器自动输出同步信号. 不过这个调整要做准还是比较麻烦的

使用特权

评论回复
17
guiyiming000|  楼主 | 2013-6-24 22:23 | 只看该作者
airwill 发表于 2013-6-23 10:27
如果在红线位置要输出同步脉冲. 也有办法的, 可以分两步
1. 先准确测量出波特率.
2. 调整和设置定时器, 由 ...

谢谢哈,的确不能做到精确。我用定时器触发中断里输入捕获,捕获完毕,同时发出一个起始为高电平的周期为捕获最短高电平时长两倍pwm波,然后这个波形发出之前要检验输出口为低才输出。 只做到基本跟上,还有的固定的相位差,在加上要跟上不同频率,不同频率相位差不同,就完全没办法了。看来以后这种问题只能考虑fpga了

使用特权

评论回复
18
guiyiming000|  楼主 | 2013-6-24 22:24 | 只看该作者
zeluo 发表于 2013-6-22 18:29
学习学习   谢谢了   楼主   很不错   需要顶一个   不错哦

谢谢大家意见,这种问题stm32可能不太擅长

使用特权

评论回复
19
guiyiming000|  楼主 | 2013-6-24 22:26 | 只看该作者
trumpxp 发表于 2013-6-23 10:09
不是很了解这一块   楼主  帮你顶一个   再看看别人的意见吧   顶一个

嗯,这种同步问题,听说还是fpga,用锁相环效果比较好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝