请教一下,stm32 time有何办法可以自动控制计数方向?
本帖最后由 tang_qianfeng 于 2022-9-28 13:58 编辑我有两个输入,一个是真正的计数脉冲,一个是增、减计数的控制信号,有哪种模式可以自动处理计数器的加、减?
好象编码器模式不合适。
发错版块了,麻烦坛主帮忙搬移一下,谢谢 发错分区了,批评一下
这个这个功能在我们的产品有,如果是正交输入,方向自然就有了,如果是单端脉冲加方向,就是你这个了
方向那个引脚,我设置了边沿中断,进中断,修改向上计数还是向下计数 编码器方式可以,不光计数抗干扰更强还更快
计数器的增减(方向)
STM32的计数器会根据方向(+ 或者 -)来进行计数,TI1和TI2相位相差90,4个阶段的边沿,对应TI1和TI2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个方向位(DIR),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。 tim4146 发表于 2022-9-28 14:24
发错分区了,批评一下
这个这个功能在我们的产品有,如果是正交输入,方向自然就有了,如果是单端脉冲加方 ...
(引用自2楼)
你这方法是可行,但也出于楼下的问题,用TIM的通道可以滤波 whatcanitbe 发表于 2022-9-28 14:40
编码器方式可以,不光计数抗干扰更强还更快
计数器的增减(方向)
(引用自3楼)
我那种方式应该不是编码器模式,编码器模式是通过判断一个通道的电平状态,在另一个通道的上升沿和下降沿分别加\减计数
编码器模式在某个通道的两个沿都计数 等于是读其他步进脉冲发生器出来的信号
tang_qianfeng 发表于 2022-9-28 14:52
你这方法是可行,但也出于楼下的问题,用TIM的通道可以滤波
(引用自4楼)
我上面只是说了方向的处理办法
脉冲输入,你可以选择这个信号作为TIMER的外部输入引脚,也可以放在四个通道的任意一个上面,作为计数源 本帖最后由 tang_qianfeng 于 2022-9-28 21:52 编辑
wxws 发表于 2022-9-28 19:28
等于是读其他步进脉冲发生器出来的信号
(引用自6楼)
是的,大师见多识广,厉害 tim4146 发表于 2022-9-28 21:37
我上面只是说了方向的处理办法
脉冲输入,你可以选择这个信号作为TIMER的外部输入引脚,也可以放在四个通 ...
(引用自7楼)
那dir是没法滤波的吧 tang_qianfeng 发表于 2022-9-28 21:51
那dir是没法滤波的吧
(引用自9楼)
IO中断确实不方便做滤波,如果需要做滤波,应该怎么做啊? tim4146 发表于 2022-9-28 23:13
IO中断确实不方便做滤波,如果需要做滤波,应该怎么做啊?
(引用自10楼)
我也在求教。。。 最好是能根据一个通道的电平计数器自动加/减 最近在折腾rp2040
感觉你这用pio能解决
wxws 发表于 2022-9-30 06:18
最近在折腾rp2040
感觉你这用pio能解决
(引用自12楼)
m0内核的便宜 tang_qianfeng 发表于 2022-9-30 06:58
m0内核的便宜
(引用自13楼)
最大多少速率?有空我用pio 功能试试
wxws 发表于 2022-10-1 17:39
最大多少速率?有空我用pio 功能试试
(引用自14楼)
100khz。 m0内核的有这功能吗?
这个问题我也研究过,stm32没有自带这种功能,后来采取了 2楼的办法,方向变换的时候 进入中断,修改方向寄存器 本帖最后由 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做边缘计算
...... wxws 发表于 2022-10-2 10:34
不要纠结M0
RP2040有个厉害的功能叫PIO. 绝对是不同的厉害玩意。
(引用自17楼)
老大,我那玩意一共才卖十来块钱,总不能用激光打蚊子吧。。。 {:titter:}
淘宝搜下价格 帖子移动通知:
原分论坛:☆阿莫百科
目标分论坛:STM32/8
移动时间:0小时之后 感觉用编码器就不用折腾,stm32里面自己就计数了,另外想找到方向也不算难因为有这个寄存器。我是用中断测z信号以便记录圈数。但如果自己搞闭环需要从数控系统上采集脉冲则要用fpga了,更便宜的方案没用过。其实闭环补偿要特别高的计算机速度,所以我们实现也是在电机减速快停的时候才开始动作的,真正跑起来来不及补偿
页:
[1]