通信时序图

讯享网


通过时序图,可以看到该芯片使用的是数据为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方式驱动,并且一次只写入单个数据,而从它的时序图知道,是可以连续写入多个数据的,采用连续写入方式可以提高一定的速度。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17795.html