#include "dac8560.h"
#include "delay.h"
void dac8560_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
dac8560_SYNC=1;
dac8560_SCL=1;
}
void dac8560_Send(u8 control , u16 data)
{
int i;
dac8560_SCL=1;
dac8560_SYNC=0;
for(i=0;i<8;i++)
{
dac8560_SCL=1;
delay_us(4);
if(control&0x80)
{
dac8560_DATA=1;
}
else
{
dac8560_DATA=0;
}
delay_us(4);
dac8560_SCL=0;
delay_us(4);
control<<=1;
}
for(i=0;i<16;i++)
{
dac8560_SCL=1;
delay_us(4);
if(data&0x8000)
{
dac8560_DATA=1;
}
else
{
dac8560_DATA=0;
}
delay_us(4);
dac8560_SCL=0;
delay_us(4);
data<<=1;
}
dac8560_SYNC=1;
}
void dac8560_on(u8 control , u16 data)
{
int i;
dac8560_SCL=1;
dac8560_SYNC=0;
for(i=0;i<8;i++)
{
dac8560_SCL=1;
delay_us(2);
if(control&0x80)
{
dac8560_DATA=1;
}
else
{
dac8560_DATA=0;
}
delay_us(2);
dac8560_SCL=0;
delay_us(2);
control<<=1;
}
for(i=0;i<16;i++)
{
dac8560_SCL=1;
delay_us(2);
if(data&0x8000)
{
dac8560_DATA=1;
}
else
{
dac8560_DATA=0;
}
delay_us(2);
dac8560_SCL=0;
delay_us(2);
data<<=1;
}
dac8560_SCL=1;
delay_us(2);
dac8560_SCL=0;
delay_us(2);
dac8560_SCL=1;
delay_us(2);
dac8560_SCL=0;
delay_us(2);
dac8560_SYNC=1;
}