一,前言
之前说过我双11买了逻辑分析仪,那么很多关于多引脚波形的小项目就启动的,特别是类似输入捕获这类,我之前仅双通道示波器,若要看很多引脚,我觉得麻烦,不想用示波器,就会导致不去做某些小项目。
二,编码器(霍尔正交波形)
其实霍尔元器件也是常见的,只是我的工作主要是搞网络协议的,这类霍尔元器件用不到,所以工作中用不到,那么业余时间就想玩玩了。网上看到了一个示波器项目,我比较感兴趣,里面就用到了E11编码器,所以我也买了一个。且学习了下此霍尔正交波形。用逻辑分析仪先看了下实际波形
1.知识点如下:
霍尔正交波形,S1下降沿触发,S1和S2相同则为正向,否则为反向。
正向波形:红色为S1,蓝色为S2

反向波形:红色为S1,蓝色为S2

抖动

2.这些抖动应该怎么处理
网上搜索下了,居然有硬件电路可以防抖,而我只能用软件,那么就想到了按键的防抖,不就是多读几次,但是这个不能多读几次,所以最简单的就是用延时。当前中断中用延时,那么我优先级要设置的低些,被打断也不要紧。第一次S1的下降沿有漏帧没有触发中断也不要紧,后面还有那么多次。通过多次测试波形,我决定延时设置为50us差不多了。
3.我的设计
PE5(DCMI_D6)--S1,设置为下降沿捕获
PE6(DCMI_D7)--S2,设置为input口
PG9(DCMI_PWDN)—Button,设置为下降沿捕获
移植了开源示波器中对S1和S2及button的处理代码,测试通过。正转数值加1,翻转数值减1。
最后通过之前的st7735彩屏显示。value:数值如下,当前显示的是7

三,小结
底层我用stm32的CubeMx配置的外部触发中断,分分钟小的应用项目就完成了,我手里能用来造轮子和复用的代码越来越多了,哈哈~
网友评论