• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: STM32  DAC8552  

资源简介

使用STM32F103写的DAC8552的16位DA驱动,调试正常!

资源截图

代码片段和文件信息

#include “stm32f10x.h“
#include “DAC8552.h“

uint16_t Zero_Voltage_OutPut = No_Impedance;
uint16_t LOAD_Channel = Load_AB;
uint16_t Channel_A_OutPut=32767 Channel_B_OutPut=16384;//max=65535

void DAC8552_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_SetBits(GPIOE GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOE &GPIO_InitStructure);
}

void DAC8552_RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE ENABLE);
}

//------------------------------------------------------------------------------
//函数名称:输出DAC
//函数功能:输出设定的电压
//参数传递:无
//------------------------------------------------------------------------------
void DAC8552_Out_Put_Voltage(void)
{
    DAC8552_DA_convert(Channel_A_OutPut Channel_A);
    DAC8552_DA_convert(Channel_B_OutPut Channel_B);
}

//------------------------------------------------------------------------------
//函数名称:延时
//函数功能:延时
//参数传递:无
//------------------------------------------------------------------------------
void DAC8552_delay1ms (uint16_t n)   
{
  while(n--);
}

//------------------------------------------------------------------------------
//函数名称:写数据
//函数功能:送0的子程序
//参数传递:无
//------------------------------------------------------------------------------
void DAC8552_SEND_0(void)
{
DIN_0;
//DAC8552_delay1ms(20);
SCLK_1;
//DAC8552_delay1ms(20);
SCLK_0;
//DAC8552_delay1ms(20);
}

//------------------------------------------------------------------------------
//函数名称:写数据
//函数功能:送1的子程序
//参数传递:无
//------------------------------------------------------------------------------
void DAC8552_SEND_1(void)
{
DIN_1;
//DAC8552_delay1ms(20);
SCLK_1;
//DAC8552_delay1ms(20);
SCLK_0;
//DAC8552_delay1ms(20);
}

//------------------------------------------------------------------------------
//函数名称:写入DA输出寄存器的数据
//函数功能:D/A转换的子程序
//参数传递:unsigned int datasheet  输出的电压
//------------------------------------------------------------------------------
void DAC8552_DA_convert(uint16_t datasheet uint16_t channel)
{
     uint16_t i;
     uint16_t abm;

     m=((Zero_Voltage_OutPut|channel)|LOAD_Channel);  //在此处设置参考电压、输出通道以及输出阻抗大小
     b=datasheet&0x00ff;
     a=datasheet>>8; //取高8位
     SYNC_1;
     SYNC_0;
     
     for(i=0;i<8;i++)
     {
      if((m&0x80)==0)
        {DAC8552_SEND_0();}
      else
        {DAC8552_SEND_1();}
      m<<=1;
     }
     
     for(i=0;i<8;i++)
     {
      if((a&0x80)==0)
       {DAC8552_SEND_0();}
      else
       {DAC8552_SEND_1();}
      a<<=1;
     }
     
     for(i=0;i<8;i++)
     {
      if((b&0x80)==0)
       {DAC8552_SEND_0();}
      else
       {DAC8552_SEND_1();}
      b<<=1;
     }
     //DAC8552_delay1ms(100);
     SYNC_1;
}





 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3143  2013-07-25 20:02  User\DAC8552.c

     文件       1697  2013-07-25 19:15  User\DAC8552.h

     文件        238  2013-07-25 19:36  User\main.c

     文件      22693  2013-07-11 16:49  User\stm32f10x_it.c

     文件       2086  2011-04-04 19:03  User\stm32f10x_it.h

     目录          0  2013-07-25 20:02  User

----------- ---------  ---------- -----  ----

                29857                    6


评论

共有 条评论