?? da8303.c
字號:
//********DA8303**************************************************
//CS-->P5.4
//LDB-->P5.3
//LDA-->P5.2
//RS-->P5.1
//MSB-->P5.0
//p1.5-8303MSB; P1.6-8303LDB; P1.7-8303RS; P2.0-8303LDA; P2.1-8303CS; P2.2-7734CS
//********DA8303**************************************************
#include "msp430x14x.h"
#include "math.h"
#include "sys.h"
void Write8303Data(void);
DWORD data8303;
BYTE high8303,low8303;
BYTE high,low;
unsigned char XT2_clock_high(void);
void Delayms(WORD ms)
{
WORD i, j;
for(i=0; i<ms; i++)
{
for(j=0; j<2000; j++);
}
}
unsigned char LFXT1_clock_high(void)
{
unsigned char i;
unsigned char Count;
BCSCTL1 |= XTS; // LFXT1=HF XTAL.
//BCSCTL1 |= XTS + DIVA0 + DIVA1; // LFXT1=HF XTAL.
for(Count=0;Count<10;Count++)
{
IFG1 &= ~OFIFG; // 清除振蕩器失效標志.
for (i = 0xFF; i > 0; i--); // 延時等待.
if((IFG1 & OFIFG) == 0)
break; // 等待LFXT1振蕩器工作正常.
}
if((IFG1 & OFIFG) != 0)
return 0;
BCSCTL2 |= SELM1+SELM0; // 主時鐘=輔助時鐘=LFXT1=HF XTAL.
return 1;
}
unsigned char XT2_clock_high(void)
{
unsigned char i;
unsigned char Count;
BCSCTL1 &= ~(XTOFF);
//BCSCTL1 |= XTS + DIVA0 + DIVA1; // LFXT1=HF XTAL.
for(Count=0;Count<10;Count++)
{
IFG1 &= ~OFIFG; // 清除振蕩器失效標志.
for (i = 0xFF; i > 0; i--); // 延時等待.
if((IFG1 & OFIFG) == 0)
break; // 等待LFXT1振蕩器工作正常.
}
if((IFG1 & OFIFG) != 0)
return 0;
BCSCTL2 |= 0x88; // 主時鐘=輔助時鐘=LFXT1=HF XTAL.
return 1;
}
BYTE UWriteSpi(BYTE Data)
{
IFG1 &= (~URXIFG0);
U0TXBUF = Data;
WAIT_SPI_OVER;
return U0RXBUF;
}
void Write8303Data(void) //寫8303
{
low8303 = (WORD)data8303 & 0xff;
high8303 = (WORD)data8303 >> 8;
high8303 = high8303 & 0xff;
UWriteSpi(high8303);
UWriteSpi(low8303);
}
void DA8303_init(void)
{
_DINT();
P1DIR|=0XC0;
P2DIR|=0X07;
P1OUT |= 0xc0;
P2OUT |= 0x01;
_EINT();
}
void DA8303_cs(void)
{
P1OUT |= 0x40;
P2OUT |= 0x01;
P2OUT |= 0x04;
Delayms(1);
P2OUT &= 0xfd;
}
void Release_DA8303_cs(void)
{
P1OUT &= 0xbf;
P2OUT &= 0xfe;
P2OUT |= 0x02;
Delayms(1);
P2OUT &= 0xfb;
}
void spi_init (void)
{
//********SPI初始化**************************************************
P3SEL |= 0x0E; // P3.1-3 SPI option select
P3DIR |= 0x01; // P3.0 output direction
//物理初始化
ME1 |= (USPIE0);
//復位UART0,選擇主機方式,SPI模式,8位數據
U0CTL = MM + SYNC + CHAR + SWRST;
//初始化為模式3
U0TCTL = TXEPT + STC + SSEL0 + SSEL1 + CKPL;
//波特率設置,MCLK 4分頻,大約在900K左右
U0BR0 = 4;
U0BR1 = 0x00;
//撥特率調整寄存器
U0MCTL = 0;
U0CTL &= ~(SWRST);
//清狀態寄存器
IFG1 &= ~(URXIFG0+UTXIFG0);
}
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//LFXT1_clock_high();
XT2_clock_high();
//***********SPI初始化***********************************************
spi_init();
DA8303_init();
DA8303_cs();
data8303 = 0Xffff;
Write8303Data();
Delayms(10);
Release_DA8303_cs();
while(1)
{
for(;;)
{
for(i=0;i<10;i++)
{
data8303 = 0Xfff;
DA8303_cs();
//Delayms(10);
Write8303Data();
Delayms(10);
Release_DA8303_cs();
}
_NOP();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -