搜索
bottom↓
回复: 20

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

[复制链接]

出0入18汤圆

发表于 2022-9-28 13:57:24 | 显示全部楼层 |阅读模式
本帖最后由 tang_qianfeng 于 2022-9-28 13:58 编辑

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

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

出5入4汤圆

发表于 2022-9-28 14:24:16 来自手机 | 显示全部楼层
发错分区了,批评一下
这个这个功能在我们的产品有,如果是正交输入,方向自然就有了,如果是单端脉冲加方向,就是你这个了
方向那个引脚,我设置了边沿中断,进中断,修改向上计数还是向下计数

出100入85汤圆

发表于 2022-9-28 14:40:13 | 显示全部楼层
编码器方式可以,不光计数抗干扰更强还更快  

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

出0入18汤圆

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

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

出0入18汤圆

 楼主| 发表于 2022-9-28 14:54:42 | 显示全部楼层
whatcanitbe 发表于 2022-9-28 14:40
编码器方式可以,不光计数抗干扰更强还更快  

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

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

出0入228汤圆

发表于 2022-9-28 19:28:25 来自手机 | 显示全部楼层
等于是读其他步进脉冲发生器出来的信号

出5入4汤圆

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

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

出0入18汤圆

 楼主| 发表于 2022-9-28 21:51:01 来自手机 | 显示全部楼层
本帖最后由 tang_qianfeng 于 2022-9-28 21:52 编辑
wxws 发表于 2022-9-28 19:28
等于是读其他步进脉冲发生器出来的信号
(引用自6楼)


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

出0入18汤圆

 楼主| 发表于 2022-9-28 21:51:55 来自手机 | 显示全部楼层
tim4146 发表于 2022-9-28 21:37
我上面只是说了方向的处理办法
脉冲输入,你可以选择这个信号作为TIMER的外部输入引脚,也可以放在四个通 ...

(引用自7楼)

那dir是没法滤波的吧

出5入4汤圆

发表于 2022-9-28 23:13:58 | 显示全部楼层
tang_qianfeng 发表于 2022-9-28 21:51
那dir是没法滤波的吧
(引用自9楼)

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

出0入18汤圆

 楼主| 发表于 2022-9-29 06:16:52 来自手机 | 显示全部楼层
tim4146 发表于 2022-9-28 23:13
IO中断确实不方便做滤波,如果需要做滤波,应该怎么做啊?
(引用自10楼)

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

出0入228汤圆

发表于 2022-9-30 06:18:47 | 显示全部楼层
最近在折腾rp2040
感觉你这用pio能解决

出0入18汤圆

 楼主| 发表于 2022-9-30 06:58:08 来自手机 | 显示全部楼层
wxws 发表于 2022-9-30 06:18
最近在折腾rp2040
感觉你这用pio能解决

(引用自12楼)

m0内核的便宜

出0入228汤圆

发表于 2022-10-1 17:39:51 | 显示全部楼层
tang_qianfeng 发表于 2022-9-30 06:58
m0内核的便宜
(引用自13楼)

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

出0入18汤圆

 楼主| 发表于 2022-10-1 18:52:09 来自手机 | 显示全部楼层
wxws 发表于 2022-10-1 17:39
最大多少速率?  有空我用pio 功能试试
(引用自14楼)


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

出0入131汤圆

发表于 2022-10-1 19:02:50 | 显示全部楼层
这个问题我也研究过,stm32没有自带这种功能,后来采取了 2楼的办法,方向变换的时候 进入中断,修改方向寄存器

出0入228汤圆

发表于 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做边缘计算
......

出0入18汤圆

 楼主| 发表于 2022-10-2 12:34:18 来自手机 | 显示全部楼层
wxws 发表于 2022-10-2 10:34
不要纠结M0

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

(引用自17楼)

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

出0入228汤圆

发表于 2022-10-2 13:13:59 | 显示全部楼层


淘宝搜下价格

出16170入6148汤圆

发表于 2022-10-2 22:29:34 来自手机 | 显示全部楼层
帖子移动通知:
原分论坛:☆阿莫百科
目标分论坛:STM32/8
移动时间:0小时之后

出0入300汤圆

发表于 2022-10-3 00:19:38 来自手机 | 显示全部楼层
感觉用编码器就不用折腾,stm32里面自己就计数了,另外想找到方向也不算难因为有这个寄存器。我是用中断测z信号以便记录圈数。但如果自己搞闭环需要从数控系统上采集脉冲则要用fpga了,更便宜的方案没用过。其实闭环补偿要特别高的计算机速度,所以我们实现也是在电机减速快停的时候才开始动作的,真正跑起来来不及补偿
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 16:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表