Слияние кода завершено, страница обновится автоматически
#include "spi_dac8562.h"
void delay_us(uint32_t time)
{
uint32_t i;
for(i=0;i<time*65;i++)
{
continue;
}
}
void DAC856x_Init(uint8_t DAC_Num)
{
DAC856x_Write_Data(0x28,0x0001,DAC_Num);
DAC856x_Write_Data(0x20,0x0003,DAC_Num);
DAC856x_Write_Data(0x38,0x0001,DAC_Num);
DAC856x_Write_Data(0x1F,0x1111,DAC_Num);//初始化DAC的代码,在完成HAL的初始化之后调用
}
void DAC856x_SetVoltage(uint8_t DAC_Num,uint8_t Channel,double voltage)
{
uint16_t vol_reg;
vol_reg=(uint16_t)((voltage/30.0)*65535);//变压比,需要手动根据输出幅度范围进行修改
switch (Channel)//对通道的判断,8562拥有两个输出的通道.
{
case ChannelA:
DAC856x_Write_Data(0x19,vol_reg,DAC_Num);
break;
case ChannelB:
DAC856x_Write_Data(0x18,vol_reg,DAC_Num);
break;
default:
break;
}
}
void DAC856x_Write_Data(uint8_t command,uint16_t data,uint8_t DAC_Num)
{
int i;
switch (DAC_Num)//选择DAC通道
{
case DAC1:
DAC8562_SYNC_1(1);
delay_us(1);
DAC8562_SYNC_1(0);
break;
case DAC2:
DAC8562_SYNC_2(1);
delay_us(1);
DAC8562_SYNC_2(0);
break;
case DAC3:
DAC8562_SYNC_3(1);
delay_us(1);
DAC8562_SYNC_3(0);
break;
default:
break;
}
for(i=7;i>=0;i--) //写入指令与地址
{
DAC8562_SCLK(1);
delay_us(10);
DAC8562_DIN((command>>i)&0x01);
delay_us(10);
DAC8562_SCLK(0);
delay_us(10);
}
for(i=15;i>=0;i--) //写入相应的数据
{
DAC8562_SCLK(1);
delay_us(10);
DAC8562_DIN((data>>i)&0x01);
delay_us(10);
DAC8562_SCLK(0);
delay_us(10);
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )