fm_ccjy/Board/Src/dac7311.c

106 lines
1.3 KiB
C

#include "dac7311.h"
int cnum = 0;
void delay(uint8_t us)
{
for(; us !=0; us--);
}
void dac7311_init(void)
{
AO1_SYNC_H();
AO1_SCLK_L();
AO2_SYNC_H();
AO2_SCLK_L();
}
void ao1_write(uint16_t Data)
{
uint16_t temp;
uint8_t ui;
temp=Data << 2;
temp &= 0x3FFF;//设置模式为Normal
AO1_SYNC_H();
AO1_SCLK_H();
delay(10);
AO1_SYNC_L();//使能输入移位寄存器
delay(10);
for(ui=0; ui<16; ui++)
{
AO1_SCLK_H();
if(0x8000 == (temp & 0x8000))
{
AO1_DIN_H();
}
else
{
AO1_DIN_L();
}
delay(10);
AO1_SCLK_L();
delay(10);
temp <<=1;
}
AO1_SYNC_H();
}
void ao2_write(uint16_t Data)
{
uint16_t temp;
uint8_t ui;
temp=Data << 2;
temp &= 0x3FFF;//设置模式为Normal
AO2_SYNC_H();
AO2_SCLK_H();
delay(10);
AO2_SYNC_L();//使能输入移位寄存器
delay(10);
for(ui=0; ui<16; ui++)
{
AO2_SCLK_H();
if(0x8000 == (temp & 0x8000))
{
AO2_DIN_H();
}
else
{
AO2_DIN_L();
}
delay(10);
AO2_SCLK_L();
delay(10);
temp <<=1;
}
AO2_SYNC_H();
}
void ao1_set(float current)
{
uint16_t data = 0;
current = current * 100;//电流转为电压
data = (current * 4096) / 3300;
cnum = data;
ao1_write(data);
}
void ao2_set(float current)
{
uint16_t data = 0;
current = current * 100;//电流转为电压
data = (current * 4096) / 3300;
ao2_write(data);
}