Resumen de uso de DAC7811

Se utilizaron muchos módulos durante la preparación del juego electrónico, y habrá tiempo para resumir y resumir más adelante, para no pisar el foso la próxima vez.
Lo que resumí esta vez es el uso del convertidor de digital a analógico DAC7811. No entraré en detalles sobre el rendimiento de sus parámetros específicos. Creo que los lectores irán a la hoja de datos específica antes de elegir usar un determinado chip.

Diagrama de secuencia de comunicación

Sincronización SPI
Definición de datos
Definición de bit de control
A través del diagrama de tiempo, puede ver que el chip utiliza un protocolo de comunicación SPI de datos de 16 bits activado por el borde descendente del reloj.
Los 4 bits superiores de los datos de comunicación son los bits de control y los 12 bits siguientes son los bits de datos. Para un uso normal, tome directamente C3C2C1C0 = 0001.

conductor

Esta vez utilicé la placa de desarrollo LanunchPad MSP432P401R de TI. El programa escrito según el diagrama de secuencia es el siguiente:

#ifndef __DAC7811_H_
#define __DAC7811_H_

#include "driverlib.h"
#include "stdint.h"

#define u8  unsigned char
#define u16 unsigned short int
#define u32 unsigned int

#define SCLK_Port GPIO_PORT_P5
#define SCLK_Pin  GPIO_PIN0
#define SYNC_Port GPIO_PORT_P5
#define SYNC_Pin  GPIO_PIN2
#define SDIN_Port GPIO_PORT_P3
#define SDIN_Pin  GPIO_PIN6

#define SPI_SCLK_L    GPIO_setOutputLowOnPin(SCLK_Port,SCLK_Pin)
#define SPI_SCLK_H    GPIO_setOutputHighOnPin(SCLK_Port,SCLK_Pin)
#define SPI_SYNC_L    GPIO_setOutputLowOnPin(SYNC_Port,SYNC_Pin)
#define SPI_SYNC_H    GPIO_setOutputHighOnPin(SYNC_Port,SYNC_Pin)	
#define SPI_SDIN_L    GPIO_setOutputLowOnPin(SDIN_Port,SDIN_Pin)
#define SPI_SDIN_H    GPIO_setOutputHighOnPin(SDIN_Port,SDIN_Pin) 

void DAC7811_Init(void);
void DAC7811_Write(u16 da);

#endif
#include "DAC7811.h"

void DAC7811_Init(void)
{
    
    			     
	GPIO_setAsOutputPin(SCLK_Port,SCLK_Pin);         
    GPIO_setAsOutputPin(SYNC_Port,SYNC_Pin);      
  	GPIO_setAsOutputPin(SDIN_Port,SDIN_Pin); 
	SPI_SCLK_H;
	SPI_SYNC_H;
	SPI_SDIN_H;
}
void DAC7811_Write(u16 da) //DAC7811 12bits
{
    
    
	u8 i;
	da|=0x1000;//bit12=1
	da&=0x1FFF;//bit15、14、13=0
	SPI_SCLK_H;
	SPI_SYNC_H;
	SPI_SYNC_L;
	for(i=0; i<16; i++)
	{
    
    
		SPI_SCLK_H;
		if(da & 0x8000) SPI_SDIN_H;
		else SPI_SDIN_L;
		SPI_SCLK_L;
		da<<=1;
	}
	SPI_SCLK_H;
	SPI_SDIN_H;
	SPI_SYNC_H;
}

Cuando el DAC7811 está funcionando normalmente, el diagrama de secuencia recopilado por el analizador lógico es el siguiente: El
Temporización del analizador lógico
programa es relativamente simple, pero el autor también pisó el pozo en ese momento, es decir, el reloj inactivo se puso en un nivel bajo, hizo que la comunicación fuera imposible.

Además, use el siguiente programa para hacer que el MSP432P401R emita un voltaje de referencia de 2.5V desde el pin P5.6, que luego se puede usar como entrada de voltaje de referencia del DAC7811.

REF_A_setReferenceVoltage(REF_A_VREF2_5V);
REF_A_enableReferenceVoltage();
REF_A_enableReferenceVoltageOutput();

Verificación del circuito de hardware

Los siguientes dos circuitos de excitación se proporcionan en la hoja de datos del DAC7811. El primero es un circuito de salida unipolar y el segundo es un circuito de salida bipolar.
Circuito de salida de voltaje positivo
Circuito de salida de voltaje positivo y negativo
La prueba de este circuito de hardware adopta un circuito de salida bipolar.
El amplificador operacional adopta el amplificador operacional de precisión OPA2140, y los parámetros de otros componentes son básicamente los mismos que los del diagrama de circuito.
El circuito de prueba final soldado es el siguiente:
Circuito de prueba
Ejecute el programa, escriba los datos de la onda sinusoidal en DAC7811, y la forma de onda de salida de la onda sinusoidal resultante se muestra en la siguiente figura: La
Forma de onda de onda sinusoidal de salida
siguiente figura es la forma de onda de salida de un amplificador programable usando DAC7811.
Forma de onda del amplificador programable
Finalmente, el problema encontrado por el equipo de autores es que la frecuencia de la salida de la señal sinusoidal al conducir el DAC7811 no es muy alta. Después de que la última etapa se conecta al circuito del filtro, la frecuencia máxima de la señal sinusoidal obtenida es de solo 30 kHz. . Esto está lejos de alcanzar la frecuencia de salida más alta del chip.Si desea aumentar la frecuencia de la señal de salida, uno es usar un microcontrolador de frecuencia más alta y el otro es usar hardware SPI + DMA para conducir. Además, esta vez se usa el método SPI analógico, y solo se escribe un dato a la vez. A partir de su diagrama de tiempo, se sabe que se pueden escribir múltiples datos de forma continua, y el método de escritura continua puede aumentar una cierta velocidad.

Supongo que te gusta

Origin blog.csdn.net/weixin_44625313/article/details/109518691
Recomendado
Clasificación