2025年DAC7811使用总结

DAC7811使用总结在备战电赛期间使用了很多模块 后面有时间慢慢总结总结 以免下一次踩坑 这次总结的是数模转换器 DAC7811 的使用 它的具体参数性能 笔者就不赘述了 相信读者在选择使用某芯片之前都会去具体看它的数据手册的 通信时序图 通过时序图 可以看到该芯片使用的是数据为 16 位 时钟下降沿触发的 SPI 通信协议

大家好,我是讯享网,很高兴认识大家。

通信时序图

SPI时序
讯享网
数据定义
控制位定义
通过时序图,可以看到该芯片使用的是数据为16位,时钟下降沿触发的SPI通信协议。
其通信数据的高4位为控制位,紧跟的12位才是数据位。普通使用的话,直接取C3C2C1C0=0001。

驱动程序

本次使用的是TI的MSP432P401R LanunchPad开发板。根据时序图编写的程序如下:

#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; } 

DAC7811正常工作时,逻辑分析仪采集的时序图如下:
逻辑分析仪时序
程序比较简单,但是当时笔者也踩到了坑,就是空闲时钟给成了低电平,导致一直无法通信。

另外,使用如下程序可以使MSP432P401R从P5.6引脚输出2.5V的参考电压,进而作为DAC7811的参考电压输入。

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

硬件电路验证

DAC7811数据手册中提供了如下两种驱动电路,第一种是单极性输出电路,第二种是双极性输出电路。
正电压输出电路
正负电压输出电路
本次硬件电路的测试采用双极性输出电路。
其中运放采用的是精密运放OPA2140, 其他元器件参数基本和电路图相同。
最后焊接出来的测试电路如下:
测试电路
运行程序,向DAC7811写入正弦波数据,得到的正弦波输出波形如下图所示:
输出正弦波波形
下图是使用DAC7811构成程控放大器的输出波形。
程控放大器波形
最后笔者队伍遇到的问题是,驱动DAC7811输出的正弦信号频率不是很高,后级接入滤波电路后,得到的正弦信号频率最高只有30kHz左右。这远远没有达到该芯片的最高输出频率,要想提高其输出信号频率,一是采用更高主频的微控制器,二是采用硬件SPI+DMA的方式驱动。另外本次采用的是模拟SPI方式驱动,并且一次只写入单个数据,而从它的时序图知道,是可以连续写入多个数据的,采用连续写入方式可以提高一定的速度。

小讯
上一篇 2025-01-19 10:35
下一篇 2025-02-13 23:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17795.html