DAC7811使用の概要

電子ゲームの準備では多くのモジュールが使用されましたが、次回ピットを踏まないように、後でまとめてまとめる時間があります。
今回要約したのは、デジタル-アナログコンバータDAC7811の使用です。その特定のパラメータ性能については詳しく説明しません。読者は、特定のチップを使用する前に、特定のデータシートにアクセスすると思います。

通信シーケンス図

SPIタイミング
データ定義
制御ビットの定義
タイミング図から、チップがクロックの立ち下がりエッジによってトリガーされる16ビットデータのSPI通信プロトコルを使用していることがわかります。
通信データの上位4ビットは制御ビットで、次の12ビットはデータビットです。通常の使用では、C3C2C1C0 = 0001を直接使用してください。

運転者

今回はTIのMSP432P401RLanunchPad開発ボードを使用しました。シーケンス図に従って作成されたプログラムは次のとおりです。

#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データシートには、次の2つの駆動回路が記載されています。1つ目はユニポーラ出力回路で、2つ目はバイポーラ出力回路です。
正電圧出力回路
正負電圧出力回路
このハードウェア回路のテストでは、バイポーラ出力回路を採用しています。
オペアンプは高精度オペアンプOPA2140を採用しており、他の部品のパラメータは基本的に回路図と同じです。
最終的な溶接テスト回路は次のとおりです。
テスト回路
プログラムを実行し、正弦波データをDAC7811に書き込むと、結果の正弦波出力波形が次の​​図に示されます。
出力正弦波波形
次の図は、DAC7811を使用したプログラマブルアンプの出力波形です。
プログラム可能なアンプ波形
最後に、著者チームが直面した問題は、DAC7811を駆動することによって出力される正弦波信号の周波数がそれほど高くないことです。後のステージがフィルター回路に接続された後、得られる正弦波信号の最大周波数はわずか約30kHzです。 。これは、チップの最高出力周波数に到達することにはほど遠いです。出力信号周波数を上げたい場合は、1つはより高い周波数のマイクロコントローラーを使用し、もう1つはハードウェアSPI + DMAを使用して駆動します。また、今回はアナログSPI方式を採用しており、一度に1つのデータしか書き込まれません。タイミング図から、複数のデータを連続して書き込むことができ、連続書き込み方式では一定の速度を上げることができます。

おすすめ

転載: blog.csdn.net/weixin_44625313/article/details/109518691