本帖最后由 z1g0q0 于 2018-4-26 16:04 编辑
最近需要用数字电位器AD5293BRUZ-20改一些电路。用单片机STC90C516RD+进行驱动,死活通信不上,用资料上给的例子也不行,晶振用12M和22M时同样的效果。资料上说只要通信上RDY脚就会变为高电平,而我用数据记录仪全程没看到过高电平,电位器滑动端也一直处于中间10k的位置,不知问题出在了哪里,请各位大神解惑,以下附上原理图、资料、程序、还有逻辑分析仪抓到的数据图片。
#include<reg52.h>
#include<intrins.h>
sbit RDY=P3^3;
sbit SCLK=P3^4;
sbit DIN=P3^5;
sbit RESET=P3^6;
sbit SYNC=P3^7;
void SPISendByte(unsigned int ch);
void delaynop(unsigned int t);
void main()
{
SYNC=0;
RESET=1;
SCLK=0;
DIN=0;
SPISendByte(0x1802);
SPISendByte(0x0500);
SPISendByte(0x0800);
SPISendByte(0x0000);
while(1){};
}
void SPISendByte(unsigned int ch)
{
unsigned char i;
SCLK=1;
delaynop(5);
SYNC=1;
delaynop(5);
SCLK=0;
delaynop(5);
SYNC=0;
delaynop(5);
for(i=0; i<16; i++)
{
if(ch&0x8000)
DIN=1;
else
DIN=0;
delaynop(5);
SCLK=1;
delaynop(5);
SCLK=0;
delaynop(5);
ch<<=1;
}
SYNC=1;
delaynop(50);
}
void delaynop(unsigned int t)
{
do
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
while(--t);
}
|