//DAC通道1输出初始化
void Dac1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitType;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟
GPIO_InitStructureGPIO_Pin = GPIO_Pin_4; // 端口配置
GPIO_InitStructureGPIO_Mode = GPIO_Mode_AIN; //模拟输入
GPIO_InitStructureGPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA4 输出高
DAC_InitTypeDAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0
DAC_InitTypeDAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生
DAC_InitTypeDAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置
DAC_InitTypeDAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1
DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1
DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1
DAC_SetChannel1Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值
}
//设置通道1输出电压
//vol:0~3300,代表0~33V
void Dac1_Set_Vol(u16 vol)
{
float temp=vol;
temp/=1000;
temp=temp4096/33;
DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值
}
用电阻分压是可行的,计算时要考虑基准电压端要吸入30~45微安的电流。因此电阻要取小些,比如上分压电阻取1K,下分压电阻取约52欧(我只是估算,你自己精确算下)。但分压不是最好的方法,最好还是用可调精密电压基准,如TL431等。DAC8551/8552上电时默认输出为0,如果为了保险,可在控制端加上拉或下拉电阻的方法确保单片机不输出时DAC输出 为0。
如果您想将乐之邦DAC05解码器连接到电脑上使用,那么您需要安装相应的驱动程序。这是因为DAC05解码器需要与电脑进行通信,并且电脑需要知道如何处理来自解码器的信号。
为了安装驱动程序,您需要首先从乐之邦官网或其他可靠的网站下载最新的驱动程序。然后,将解码器连接到电脑上,并按照驱动程序的安装指南进行 *** 作。在安装过程中,您需要注意一些特定的设置,例如选择正确的 *** 作系统版本和设置音频输出选项。
完成安装后,您可以通过音频设置或其他相应的软件来配置解码器,并开始使用它来提高音频质量。请注意,在使用过程中,您需要定期检查驱动程序是否需要更新,以确保解码器正常运行。
DAC832是一个数模转换芯片,要用它产生三角波,只需要将AD转换的值从低到高,再从高到低传送给它就可以实现了,以下是具体例程:
ORG 0000H
JMP START
ORG 0030H
START:
CLR A
LOOP: ;该循环产生上升波形
MOV P1, A ;输出,D/A 转换
INC A
CALL DELAY ;延时
CJNE A,#250,LOOP
LOOP1: ;该循环产生下降波形
DEC A
MOV P1,A
JNZ LOOP1
SJMP START
DELAY: ;延时子程序
MOV R6, #2
DEL1:
MOV R7, #250
DEL2:
DJNZ R7, DEL2 ;内循环250遍
DJNZ R6, DEL1 ;外循环2遍
RET
END
/ 在P14上可用示波器看到三角波 /
#include <msp430x42x0h>
void main(void)
{
unsigned char i,j;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
SD16CTL = SD16REFON; // 12V ref
DAC12_0CTL = DAC12OPS + DAC12SREF_2 + DAC12IR + DAC12AMP_5 + DAC12ENC;
// DAC o/p external, Ref Voltage = internal (SD16),
// O/p Voltage range = 1x ref, Enable conversion
while(1){
for(i=0;i<100;i++)
{
DAC12_0DAT = 20i; // 步进输出三角上升阶梯
for(j=0;j<10;j++); // 软延时
}
for(i=100;i>0;i--);
{
DAC12_0DAT = 20i; // 步进输出三角下降阶梯
for(j=0;j<10;j++); // 软延时
}}
} // main
这个程序是ST官方自带的,是双DAC模式,产生两个通道的正弦波,进行那个运算是为使双DAC的12位右对齐数据保持寄存器(DAC_DHR12RD) 中的DAC通道1和通道2都能得取到值
以上就是关于STM32单片机DA程序全部的内容,包括:STM32单片机DA程序、dac芯片输出电路设计请教、乐之邦dac05解码器连电脑用安装驱动吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)