?? main.c
字號:
//2008-5-16
//實驗目的:通過學習此程序可以了解DSP的SPI與DA芯片(TLV5620)的關系,這是DSP的
// 一個重要特性,大家要達到掌握的程度.
//硬件電路講解:主要硬件由DSP和TLV5620組成,DSP提供了SIMO和SCLK、C3TRIP信號給
// TLV5620,且C3TRIP信號是用來做片DAC信號的更新和鎖存的,這里大家要
// 參照下我們所提 供的TLV5602的手冊,4個信道的DAC輸出分別引了出來,
// 方便大家來檢測,這里還要說明的一點是我們用了其中的兩個信道DACA和
// DACB作為了后來程序ADC的輸入,大家看電路便知。
//實驗效果:用萬用表測試TLV5620的4個輸出電壓值,可看到他們是成比例的關系,分別
// 為0.88V,1.76V,2.64V,3.3V
#include "DSP28_Device.h"
/*這里使用了宏定義來控制更新鎖存信號的功能,重點就是在時序上*/
#define SetLOAD GpioDataRegs.GPADAT.bit.GPIOA15=1;///將LOAD置高
#define ClrLOAD GpioDataRegs.GPADAT.bit.GPIOA15=0;///將LOAD置低
void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol);
void delay(unsigned int t);
void main(void)
{
/*初始化系統(tǒng)*/
InitSysCtrl();
/* 關中斷 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/* 初始化PIE控制寄存器 */
InitPieCtrl();
/* 初始化PIE參數(shù)表 */
InitPieVectTable();
///初始化IO口
InitGpio();
///初始化SPI
InitSpi();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
SetLOAD;///把刷新鎖存控制信號拉高
while(1)
{
WriteDAC(0,1,50);//0.88V
WriteDAC(1,1,100);//1.76V
WriteDAC(2,1,150);//2.64V
WriteDAC(3,1,200);//3.3V,滿量程溢出
delay(1000);//在此設斷點,觀察變量DAC0和DAC1的值,另外加三用表直接測量四路DA的輸出電壓值
}
}
void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol)
{ unsigned short int data;
data=0x0000;
///大家要知道這里所定義的各個變量的含義,add是4個通道的地址(00,01,10,11)
/// RNG是輸出范圍的倍數(shù),可以是0或1。
/// VOL是0~256數(shù)據(jù)
data = ((add<<14) | (rng<<13) | (vol<<5));///注意這里的有效數(shù)據(jù)是11位,SPI初始化中也進行了定義
if(Spi_TxReady() == 1)////判斷SPI的發(fā)送緩沖區(qū)是否是空的,等于1可寫數(shù)據(jù)
SpiaRegs.SPITXBUF = data; ///把發(fā)送的數(shù)據(jù)寫如SPI發(fā)送緩沖區(qū)
while( Spi_TxReady()!=1);///當發(fā)送緩沖區(qū)出現(xiàn)滿標志位時,開始瑣存數(shù)據(jù)
delay(1000);///同通過一負跳變瑣存要發(fā)送的數(shù)據(jù),看TLV5620數(shù)據(jù)手冊即可得知
ClrLOAD;
delay(100);
SetLOAD;
delay(1000);
}
void delay(unsigned int t)
{
while(t>0)
t--;
}
//===========================================================================
// No more.
//===========================================================================
//===========================================================================
// No more.
//===========================================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -