tang_qianfeng 发表于 2022-9-28 13:57:24

请教一下,stm32 time有何办法可以自动控制计数方向?

本帖最后由 tang_qianfeng 于 2022-9-28 13:58 编辑

我有两个输入,一个是真正的计数脉冲,一个是增、减计数的控制信号,有哪种模式可以自动处理计数器的加、减?
好象编码器模式不合适。

发错版块了,麻烦坛主帮忙搬移一下,谢谢

tim4146 发表于 2022-9-28 14:24:16

发错分区了,批评一下
这个这个功能在我们的产品有,如果是正交输入,方向自然就有了,如果是单端脉冲加方向,就是你这个了
方向那个引脚,我设置了边沿中断,进中断,修改向上计数还是向下计数

whatcanitbe 发表于 2022-9-28 14:40:13

编码器方式可以,不光计数抗干扰更强还更快

计数器的增减(方向)
STM32的计数器会根据方向(+ 或者 -)来进行计数,TI1和TI2相位相差90,4个阶段的边沿,对应TI1和TI2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个方向位(DIR),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。

tang_qianfeng 发表于 2022-9-28 14:52:09

tim4146 发表于 2022-9-28 14:24
发错分区了,批评一下
这个这个功能在我们的产品有,如果是正交输入,方向自然就有了,如果是单端脉冲加方 ...
(引用自2楼)

你这方法是可行,但也出于楼下的问题,用TIM的通道可以滤波

tang_qianfeng 发表于 2022-9-28 14:54:42

whatcanitbe 发表于 2022-9-28 14:40
编码器方式可以,不光计数抗干扰更强还更快

计数器的增减(方向)
(引用自3楼)

我那种方式应该不是编码器模式,编码器模式是通过判断一个通道的电平状态,在另一个通道的上升沿和下降沿分别加\减计数
编码器模式在某个通道的两个沿都计数

wxws 发表于 2022-9-28 19:28:25

等于是读其他步进脉冲发生器出来的信号

tim4146 发表于 2022-9-28 21:37:08

tang_qianfeng 发表于 2022-9-28 14:52
你这方法是可行,但也出于楼下的问题,用TIM的通道可以滤波
(引用自4楼)

我上面只是说了方向的处理办法
脉冲输入,你可以选择这个信号作为TIMER的外部输入引脚,也可以放在四个通道的任意一个上面,作为计数源

tang_qianfeng 发表于 2022-9-28 21:51:01

本帖最后由 tang_qianfeng 于 2022-9-28 21:52 编辑

wxws 发表于 2022-9-28 19:28
等于是读其他步进脉冲发生器出来的信号
(引用自6楼)

是的,大师见多识广,厉害

tang_qianfeng 发表于 2022-9-28 21:51:55

tim4146 发表于 2022-9-28 21:37
我上面只是说了方向的处理办法
脉冲输入,你可以选择这个信号作为TIMER的外部输入引脚,也可以放在四个通 ...
(引用自7楼)

那dir是没法滤波的吧

tim4146 发表于 2022-9-28 23:13:58

tang_qianfeng 发表于 2022-9-28 21:51
那dir是没法滤波的吧
(引用自9楼)

IO中断确实不方便做滤波,如果需要做滤波,应该怎么做啊?

tang_qianfeng 发表于 2022-9-29 06:16:52

tim4146 发表于 2022-9-28 23:13
IO中断确实不方便做滤波,如果需要做滤波,应该怎么做啊?
(引用自10楼)

我也在求教。。。 最好是能根据一个通道的电平计数器自动加/减

wxws 发表于 2022-9-30 06:18:47

最近在折腾rp2040
感觉你这用pio能解决

tang_qianfeng 发表于 2022-9-30 06:58:08

wxws 发表于 2022-9-30 06:18
最近在折腾rp2040
感觉你这用pio能解决
(引用自12楼)

m0内核的便宜

wxws 发表于 2022-10-1 17:39:51

tang_qianfeng 发表于 2022-9-30 06:58
m0内核的便宜
(引用自13楼)

最大多少速率?有空我用pio 功能试试

tang_qianfeng 发表于 2022-10-1 18:52:09

wxws 发表于 2022-10-1 17:39
最大多少速率?有空我用pio 功能试试
(引用自14楼)

100khz。   m0内核的有这功能吗?

asj1989 发表于 2022-10-1 19:02:50

这个问题我也研究过,stm32没有自带这种功能,后来采取了 2楼的办法,方向变换的时候 进入中断,修改方向寄存器

wxws 发表于 2022-10-2 10:34:06

本帖最后由 wxws 于 2022-10-2 10:36 编辑

tang_qianfeng 发表于 2022-10-1 18:52
100khz。   m0内核的有这功能吗?
(引用自15楼)

不要纠结M0

RP2040有个厉害的功能叫PIO.   绝对是不同的厉害玩意。

能做100M逻辑分析仪,这功能不能采你的100K信号吗?

输出也能驱动dvi 显示器信号。

附带下人家的广告词

这个模块实现并已经得到验证:

生成分频到不同频率的时钟信号
可调频率和占空比的PWM信号
灵活访问SPI、I2C外设 - 通过杜邦线连接LCD显示屏、传感器等
驱动LED矩阵灯板 - 8*8单色LED,可以多块板级联使用
驱动雪花灯板 - 使用WS2812B,多个雪花灯板级联使用
连接R-2R电阻网络做DAC,通过DDS机制生成高达20MHz的任意波形
通过PWM + LPF做DAC,通过DDS机制生成高达50KHz任意波形
逻辑分析仪 - 使用开源的PulseView工具,实现9位的逻辑分析仪功能,时钟频率运行在120MHz
DAPLink调试器 - 硬禾网友”2022寒假在家一起练“完成的项目
最多3个通道ADC/数据采集 - 500Ksps的采样率,这个模块上保留有了3个模拟/数字共用的管脚
除了上述我们已经尝试的功能外,这个模块还可以做的事情,而且已经有网友实现并分享了项目的:

生成VGA视频信号
生成HDMI信号
制作一个USB Host或Slave
CAN总线调试器
FPGA下载器/调试器 - 支持Lattice、Xilinx的FPGA
连接摄像头,通过TinyML做边缘计算
......

tang_qianfeng 发表于 2022-10-2 12:34:18

wxws 发表于 2022-10-2 10:34
不要纠结M0

RP2040有个厉害的功能叫PIO.   绝对是不同的厉害玩意。

(引用自17楼)

老大,我那玩意一共才卖十来块钱,总不能用激光打蚊子吧。。。

wxws 发表于 2022-10-2 13:13:59

{:titter:}

淘宝搜下价格

armok. 发表于 2022-10-2 22:29:34

帖子移动通知:
原分论坛:☆阿莫百科
目标分论坛:STM32/8
移动时间:0小时之后

ibmx311 发表于 2022-10-3 00:19:38

感觉用编码器就不用折腾,stm32里面自己就计数了,另外想找到方向也不算难因为有这个寄存器。我是用中断测z信号以便记录圈数。但如果自己搞闭环需要从数控系统上采集脉冲则要用fpga了,更便宜的方案没用过。其实闭环补偿要特别高的计算机速度,所以我们实现也是在电机减速快停的时候才开始动作的,真正跑起来来不及补偿
页: [1]
查看完整版本: 请教一下,stm32 time有何办法可以自动控制计数方向?