DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1339|回复: 0
打印 上一主题 下一主题

[待整理] DSPIC33FJ256MC710的疑难问题及解决方法

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 08:10:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
引言
      美国微芯公司推出的DSPIC33FJ256MC710高性能16位数字信号控制器,采用了改进型的哈佛架构、C编译器优化的指令集、流水线取指令方式,具有实用、低价、指令集小、功耗低、速度高、体积小、功能强、抗干扰能力强等特点。dsPIC33FJ256MC710高性能16位数字信号控制器内含有 12位的A/D转换器(500 ksps)、直接存储器访问(DMA)、比较输出、捕捉输入、I2C接口、SPI接口、CAN接口、USART接口、Flash程序存储器自读写等强大的控制功能,内核又具有强大的数字信号处理能力,具有广阔的应用前景,主要应用于电机控制等领域。
      我们在芯片的实际应用中遇到了一些预想不到的问题,有的是由于硬件设计造成,有的是由于外部干扰造成,还有的是软件初始化造成的。这些问题的解决方法在微芯公司的应用文档中未提供,我们花了较多的时间进行分析、测试,最后解决了问题。本文将这些解决方法介绍给大家,以避免大家在这个问题上花费太多的时间或因一些无法解决的问题而造成损失。
1 正交编码器接口模块的问题
     dsPIC33FJ256MC710的正交编码器接口模块(以下简称QEI模块),在调试(Debug)模式下,能够正常工作,可以得到光电编码器的转动信号,但是在程序下载(Pro-gram)后模块不工作,不能得到光电编码器的转动信号。这个问题有些隐蔽,不易发现,在我们过去使用微芯公司芯片的过程中还从未遇到过。
       本文选用的光电编码器为1024线,差分信号输出。这种输出方式在工业现场使用具备较高的抗干扰能力,可以连接的导线较长。由于光电编码器的输出为差分信号,而芯片接口要求为TTL电平信号,因此增加一片AM26LS32完成电平转换,把差分信号转换为TTL电平信号。光电编码器输出的A和/A、B和/B、z和/Z三组差分信号接入AM26LS32芯片,转化为A、B、Z三路TTL电平信号与dsPIC33FJ256MC710的正交编码器接口模块 (QEI)连接。A、B为正交编码信号,z为光电编码器零位置信号。
    dsPIC33FJ系列芯片,具有智能化的QEI模块。它由QEA、QEB和INDX三个输入通道组成。QEA和QEB这两个通道具有智能的正交解码功能。把光电编码器输出的A、B两相正交编码信号接入这两个通道,芯片通过解码算法,自动判断出光电编码器的旋转方向和旋转相对位置。INDX通道称为索引脉冲。该通道通过接入Z信号,根据绝对零位置和相对位置,就可以确定光电编码器旋转的绝对位置。硬件接口原理框图如图1所示。

按照微芯公司的应用笔记,QEI初始化程序如下:
  

       在使用调试(Debug)模式运行程序时,用示波器可观察到芯片53号引脚RF8上电平在每次编码器位置过零时产生了翻转。QEI模块工作正常。而使用下载(Pro-gram)模式下载程序后,用示波器察到芯片53号引脚RF8上电平在每次编码器位置过零时不发生变化,QEI模块工作不正常。
      修改初始化程序,初始化复用引脚时增加对模数转化模块AD2PCFGL的配置,就解决了这个问题。程序修改如下:
  

修改后的程序在下载(Program)模式的情况下,用示波器可以观察到芯片53号引脚RF8上电平在每次编码器位置过零时产生翻转,QEI模块正常工作。
实际应用QEI模块时,直接读取POSCNT寄存器的值,就可知道所测量旋转轴的绝对位置。本文选用1024线的光电编码器,通过配置寄存器选择X4模式,POSCNT寄存器的计数范围为0~4 096。根据索引脉冲中断和POSCNT寄存器的值,便可精确地知道旋转轴的旋转方向、旋转速度、当前旋转轴位置等,精度可以达到1/4 096。
2 RD15作为I/O输出的问题
      通用I/O端口是最基本最常用的接口,单片机、数字信号处理器通过它实现最基本的高低电平逻辑控制。应用时,dsPIC33FJ256MC710的第48号引脚作为I/O输出时,对应为RD15。RD15作为开关量输出时,软件设置为高电平,但引脚上不能建立高电平。通过大量的试验检测,发现芯片第48号引脚RD15作为I/O端口时不能正常工作。为了更清楚地说明该问题,引入47、53、54号引脚 RD14、RF7、RF8与RD15作对比。相关验证程序如下:

运行上述程序,用示波器观察dsPIC33FJ256MC710芯片的RD14、RF7、RF8对应的第47、53、54引脚上的电平均为规律的方波信号,而48引脚RD15上高电平不能正常建立,只有极小的尖峰脉冲,波形如图2所示。

      图2中上部波形为用作对比的RD14对应的第47号引脚上的电平信号,下部波形为RD15对应的第48号引脚上的电平信号。下部波形与上部波形的控制方式是一样的(见上述程序),但是不能得到高电平信号。
修改程序的方法是在改变寄存器PORTDbits.RD15之后添加一个空操作指令asm("nop")。修改后程序如下:
  

运行修改后的程序,RD15对应的第48号引脚上也出现规律的方波信号,解决了上述问题。这个问题在应用中也是不易发现的,查了微芯公司的应用笔记也无相关说明,因此详细写出来以馈读者。
结语
       本文介绍了Microchip公司的高性能16位数字信号控制器dsPIC33FJ系列芯片的内部资源,在应用 dsPIC33FJ256MC710芯片时遇到的两个疑难问题。这些问题可能是由于硬件设计造成,也可能是外部干扰或软件初始化造成的,往往是预想不到的问题。本文利用相关程序和波形具体阐述了这两个问题的现象和解决方法,并附上了相应的程序,希望对读者能有所帮助。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-1 00:56 , 耗时 0.088769 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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