songguoda 发表于 2013-4-26 17:12:21

请教数字电位器AD5260

本帖最后由 songguoda 于 2013-4-26 18:20 编辑

纠结了好几天,程序硬是不通!还请哪位好心的高手帮我看看呀
头文件
#ifndef _AD5260_H_
#define _AD5260_H_

//M64管脚定义
#define AD5260_CS         5      //PF5
#define AD5260_SDI          3      //PF3
#define AD5260_CLK          4      //PF4
#define AD5260_SDO          6      //PF6

//宏定义
#define CS_LPORTF&=~(1<<AD5260_CS)       //置CS为低电平,使能SPI接口,使能AD5260 SPI通讯
#define CS_HPORTF|= (1<<AD5260_CS)       //置CS为高电平,关闭SPI接口,关断AD5260 SPI通讯

#define CLK_L PORTF&=~(1<<AD5260_CLK)    //SPI总线时钟线
#define CLK_H PORTF|=(1<<AD5260_CLK)
#define SDI_L PORTF&=~(1<<AD5260_SDI)    //SPI总线数据线
#define SDI_H PORTF|=(1<<AD5260_SDI)
//#define SDO_L PORTF&=~(1<<AD5260_SDO)    //SPI总线数据线
//#define SDO_H PORTF|=(1<<AD5260_SDO)

extern void Write_Byte(uchar data);

#endif

源文件

#include "main.h"
#include "ad5260.h"

void Write_Byte(uchar data)
{
uchar i,data1;
DDRF|=(1<<AD5260_CS)|(1<<AD5260_CLK)|(1<<AD5260_SDI);
DDRF&=~(1<<AD5260_SDO);
PORTF|= (1<<AD5260_SDO);
data1=data;


CS_H;

delay_us(1);
       
CS_L;


CLK_L;


for(i=0;i<8;i++)
{
    if(data1&0x80)       
{
   SDI_H;
}
else                               
{
   SDI_L;
}
   
CLK_H;
delay_us(1);
CLK_L;               
data1=data1<<1;
delay_us(1);
}



CS_H;
delay_us(1);

}

原理图

songguoda 发表于 2013-4-26 17:19:15

本帖最后由 songguoda 于 2013-4-26 18:19 编辑

根据时序图编的程,应该是没有错的,芯片都换了三四块了,输出端硬是没有变化

songguoda 发表于 2013-4-27 10:32:50

自已顶一下

gaolf_2012 发表于 2013-4-27 12:45:16

用示波器量下单片机控制的这几根线是否控制的对,再看延时程序,刚开始调试可以延的长一些,等有反应后再减小延时程序

songguoda 发表于 2013-4-27 15:01:02

谢谢热心朋友,问题解决了,程序没问题,是芯片的VL引脚要接VCC

hyghyg1234 发表于 2013-5-13 12:00:57

楼主,这颗芯片可编程多少位的,价格多少

yuxuefly 发表于 2013-5-19 19:52:32

请问楼主,我也是按照你的电路图接的!VL也接VCC了   怎么W端还是没有信号呀!

yuxuefly 发表于 2013-5-19 19:54:16

我是用51写的驱动!

fjs 发表于 2013-5-22 16:54:16

正打算用
页: [1]
查看完整版本: 请教数字电位器AD5260