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芯片时遇到的两个疑难问题。这些问题可能是由于硬件设计造成,也可能是外部干扰或软件初始化造成的,往往是预想不到的问题。本文利用相关程序和波形具体阐述了这两个问题的现象和解决方法,并附上了相应的程序,希望对读者能有所帮助。