val-off-little/board/dac7311.c

112 lines
1.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "dac7311.h"
int cnum = 0;
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_tick(10);
AO1_SYNC_L();//使能输入移位寄存器
delay_tick(10);
for(ui=0; ui<16; ui++)
{
AO1_SCLK_H();
if(0x8000 == (temp & 0x8000))
{
AO1_DIN_H();
}
else
{
AO1_DIN_L();
}
delay_tick(10);
AO1_SCLK_L();
delay_tick(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_tick(10);
AO2_SYNC_L();//使能输入移位寄存器
delay_tick(10);
for(ui=0; ui<16; ui++)
{
AO2_SCLK_H();
if(0x8000 == (temp & 0x8000))
{
AO2_DIN_H();
}
else
{
AO2_DIN_L();
}
delay_tick(10);
AO2_SCLK_L();
delay_tick(10);
temp <<=1;
}
AO2_SYNC_H();
}
/*******************************************************************************
函数名称 ao1_set
功 能 AO1电流输出
参 数 current--电流值
返 回 值
*******************************************************************************/
void ao1_set(float current)
{
uint16_t data = 0;
current = current * 100;//电流转为电压
data = (current * 4096) / 3300;
cnum = data;
ao1_write(data);
}
/*******************************************************************************
函数名称 ao2_set
功 能 AO2电流输出
参 数 current--电流值
返 回 值
*******************************************************************************/
void ao2_set(float current)
{
uint16_t data = 0;
current = current * 100;//电流转为电压
data = (current * 4096) / 3300;
ao2_write(data);
}