5278|15

61

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

dsPIC30F2010的QEI接口初始化问题 [复制链接]

 
编码器AB相信号通过74HC14进入dsPIC30F2010。用频率是100kHz的AB相信号测试硬件,测量dsPIC30F2010的QEA、QEB脚,波形很好,没有衰减和失真。INDX脚用4.7k的电阻上拉,位置计数器POSCNT通过匹配MAXCNT复位。
dsPIC30F2010外部晶振是无缘晶振6MHz,内部初始化程序如下:
_FOSC(XT_PLL16 & PRI & CSW_FSCM_OFF);  //配置内部时钟  6M*16
_FWDT(WDT_ON & WDTPSB_2);
_FBORPOR(MCLR_EN & PWRT_OFF);
_FGS(CODE_PROT_OFF);


QEI初始化程序如下:
ADPCFG |= 0x0038; // 将 QEI引脚配置为数字输入
QEICONbits.QEIM = 0; // 禁止 QEI模块
QEICONbits.CNTERR = 0; // 清除任何计数错误
QEICONbits.QEISIDL = 0; // 休眠期间继续工作
QEICONbits.SWPAB = 0; // QEA 和QEB 不交换
QEICONbits.PCDOUT = 0; // 正常 I/O引脚操作
QEICONbits.POSRES = 0; // 索引脉冲不复位位置计数器
QEICONbits.TQCS = 0;
QEICONbits.TQCKPS = 0;
//QEICONbits.TQGATE = 1;
//QEICONbits.UPDN_SRC = 1;
DFLTCONbits.CEID = 1; // 禁止计数错误中断
DFLTCONbits.QEOUT = 1; // 对于 QEn引脚,使能数字滤波器输出
DFLTCONbits.QECK = 0; // 将 QEn的数字滤波器设置为 1:1 时钟分频
  //DFLTCONbits.INDOUT = 1; // 使能索引引脚的数字滤波器输出
  //DFLTCONbits.INDCK = 4; // 将索引的数字滤波器设置为 1:64 时钟分频
POSCNT = 0; // 复位位置计数器
MAXCNT=0xffff;
QEICONbits.QEIM = 5; // X2 模式,位置计数器由Max复位
IEC2|=256;


现在的问题是,测试模块发送10000个频率是10kHz的AB相信号时,位置计数器POSCNT为6668左右,而且每一次的数值不固定。模式选择是X2模式,正确的POSCNT值应该是20000,现实是只有正确值的1/3。在AB相频率非常慢的时候POSCNT值是正确的,这个频率不会超过700Hz。

这个问题感觉就是QEI里面的数字滤波器设置不对,但是禁止数字滤波器输出后,POSCNT的值还是一样的,我把所有的滤波器分频都试了一遍了还是老样子。
有没有朋友用过PIC的QEI模块啊?希望能帮我分析一下,大三感激不尽了

最新回复

测试时,是可以的, 但用在产品上,建议不这样使用,主要是TTL的74HC14的管脚将直接与编码器连接;无限流保护措施,容易击穿其输入端.  详情 回复 发表于 2017-3-17 14:01
点赞 关注
 

回复
举报

419

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
没用过,默默的帮顶
 
 
 

回复

5260

帖子

236

TA的资源

管理员

板凳
 
帮你丁丁大神,@dingzy_2002
还有@强仔00001
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 犹豫的大三 于 2017-3-3 09:27 编辑

感谢@mzb2010 @nmg
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

5
 
这个问题困扰我4天了

点评

如果是输入频率高造成计数损失,而输入频率低则能正常计数。 除了QEI的数字滤波器的未设置好之外,还可能与系统工作状态相关。 查了下数据手册,在QEI模块的13.6部分有相关说明: [attachimg]286284[/attachimg]  详情 回复 发表于 2017-3-3 11:11
nmg
他俩最近都比较忙,估计能出现,也要晚上那样了  详情 回复 发表于 2017-3-3 09:39
 
 
 

回复

5260

帖子

236

TA的资源

管理员

6
 
犹豫的大三 发表于 2017-3-3 09:30
这个问题困扰我4天了

他俩最近都比较忙,估计能出现,也要晚上那样了
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

638

帖子

2

TA的资源

版主

7
 
犹豫的大三 发表于 2017-3-3 09:30
这个问题困扰我4天了

如果是输入频率高造成计数损失,而输入频率低则能正常计数。
除了QEI的数字滤波器的未设置好之外,还可能与系统工作状态相关。
查了下数据手册,在QEI模块的13.6部分有相关说明:

指的是,如果系统休眠后,这个模块是不计数的,此时输入的频率将不会有计数响应。
我分析可能是休眠影响的计数,你可以关闭休眠状态,再测试下是否能恢复正常计数。

 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

8
 
dingzy_2002 发表于 2017-3-3 11:11
如果是输入频率高造成计数损失,而输入频率低则能正常计数。
除了QEI的数字滤波器的未设置好之外,还可 ...

感谢版主回复,我把QEI配置成标准定时器,定时器时钟源选择的是内部时钟,通过IO翻转的时间发现定时的时间和预期一样,这说明定时器是正常工作了。CPU不应该在休眠模式下。

然后我把QEI定时器的时钟源配置成QEA引脚脉冲的上升沿。然后在QEA脚输入10000个频率10kHz的脉冲,这时QEI的POSCNT寄存器的计数值是3334,也是正确值的1/3

点评

那么就是说,你丢失了2/3的计数数据 在你的楼主贴里来看,是丢失了1/3的计数数据 建议: 1.调节输入频率,看到哪个频率点时,开始丢失数据,丢失多少?找出规律。 2.关闭所有可影响QEI的选项(如其它中断模块,  详情 回复 发表于 2017-3-3 15:09
 
 
 

回复

638

帖子

2

TA的资源

版主

9
 
犹豫的大三 发表于 2017-3-3 14:01
感谢版主回复,我把QEI配置成标准定时器,定时器时钟源选择的是内部时钟,通过IO翻转的时间发现定时的时 ...

那么就是说,你丢失了2/3的计数数据
在你的楼主贴里来看,是丢失了1/3的计数数据
建议:
1.调节输入频率,看到哪个频率点时,开始丢失数据,丢失多少?找出规律。
2.关闭所有可影响QEI的选项(如其它中断模块,休眠等),看是否能正常计数、

 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

10
 
感谢@dingzy_2002 的热情帮助,在上周终于把这个问题解决了。解决办法我没有弄明白,特来再向大家请教。
由于新买的示波器到货,能存储的数据很多了,我可以把发送的10000个脉冲全部采集下来了。我在不接AB相单端信号采集板的时候,发现发送的脉冲是10000个,在接AB相单端信号采集板后,发送的脉冲竟然只有3300多个了顿时我就方了。
查看电路图后,我感觉会是R1和R4两个压敏电阻的影响。果然去掉压敏电阻之后,一切都正常了。
之前我测试QEA和QEB的波形可是正常的啊,下面两张是有R1和R4的波形:

然后我又把拿了一块带R1和R4的板子测试QEA和QEB的波形:

这个问题我没法理解了,难道是R1和R4这两个压敏电阻影响了单端信号发生器?我那实际的编码器也试过,在编码器转的稍微快点,也就是600Hz左右后,脉冲计数也会丢的一塌糊涂。但是在去掉R1和R4之后就正常了。
由于急着发货,所以就把R1和R4去掉后发货了。后期我感觉把R1和R4换成TVS管再试一下。
但是这个压敏电阻为什么会有这个影响呢?一直想不明白了。。。。有朋友知道这个的原因吗?

点评

R4与R5接成上拉模式后,与R2/R3形成的输入信号的分压电路(1/2电压),且C3与C4又参与了信号滤波 造成了输入信号失真与幅度减半. 正确的接法是: 将R4/R5接在R2/R3的左端(这才是正确的上拉!).  详情 回复 发表于 2017-3-16 11:36
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(中级)

11
 

AN957--使用dsPIC30F2010控制带传感器的BLDC电机.pdf

758.74 KB, 下载次数: 13

 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

12
 


你的意思是A,B和INDEX都要直接下拉就行了?
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(中级)

13
 
没有什么意思这个是我电脑里的资料看见你用这芯片就找出来给你参考,这个是官方的,应该是没有问题的,你可以参考
 
 
 

回复

638

帖子

2

TA的资源

版主

14
 
犹豫的大三 发表于 2017-3-14 11:08
感谢@dingzy_2002 的热情帮助,在上周终于把这个问题解决了。解决办法我没有弄明白,特来再向大家请教。
...

R4与R5接成上拉模式后,与R2/R3形成的输入信号的分压电路(1/2电压),且C3与C4又参与了信号滤波
造成了输入信号失真与幅度减半.
正确的接法是:
将R4/R5接在R2/R3的左端(这才是正确的上拉!).

点评

如果是这个问题,我把R2和R3换成0Ω的电阻应该可以避免这个问题  详情 回复 发表于 2017-3-16 13:49
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

15
 
dingzy_2002 发表于 2017-3-16 11:36
R4与R5接成上拉模式后,与R2/R3形成的输入信号的分压电路(1/2电压),且C3与C4又参与了信号滤波
造成了输入 ...

如果是这个问题,我把R2和R3换成0Ω的电阻应该可以避免这个问题

点评

测试时,是可以的, 但用在产品上,建议不这样使用,主要是TTL的74HC14的管脚将直接与编码器连接;无限流保护措施,容易击穿其输入端.  详情 回复 发表于 2017-3-17 14:01
 
 
 

回复

638

帖子

2

TA的资源

版主

16
 
犹豫的大三 发表于 2017-3-16 13:49
如果是这个问题,我把R2和R3换成0Ω的电阻应该可以避免这个问题

测试时,是可以的,
但用在产品上,建议不这样使用,主要是TTL的74HC14的管脚将直接与编码器连接;无限流保护措施,容易击穿其输入端.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表