|
在应用ADF4360-7时找到的学习应用资料,用的是MSP430F149单片机。
资料包括
官方资料:芯片数据手册、应用手册、开发板资料等
原理图:ADF4360-7及控制部分原理图(Altium Designer Winter 09 格式和PDF格式),所需元件封装库等
控制程序:基于MSP430F149的控制程序及其他参考程序
单片机源程序如下:
- /***********************************************************************************************
- 文件:ADF4370.H
- 作者:沨
- 用途:集成锁相环ADF4360-7控制程序
- MCU: MSP430F149 晶振:8MHz
- 编译器:IAR Ror MSP430 5.10
- 硬 件:2011_10_06
- 说明:
- 日期:下午 02:56 2011-12-5
- ***********************************************************************************************/
- #define uchar unsigned char
- #define uint unsigned int
- #define PLL_SET_CE() P5OUT |= BIT0 //P5.0->CE
- #define PLL_CLR_CE() P5OUT &=~BIT0
- #define PLL_SET_DATA() P5OUT |= BIT1 //P5.1->DATA
- #define PLL_CLR_DATA() P5OUT &=~BIT1
- #define PLL_SET_DATA_OUT() P5DIR |= BIT1
- #define PLL_SET_DATA_IN() P5DIR &=~BIT1
- #define PLL_DATA_IN (P5IN & BIT1)
- #define PLL_SET_SCL() P5OUT |= BIT3 //P5.3->SCL
- #define PLL_CLR_SCL() P5OUT &=~BIT3
- #define PLL_SET_LE() P5OUT |= BIT4 //P5.4->LE
- #define PLL_CLR_LE() P5OUT &=~BIT4
- #define PLL_LD_IN (P5IN & BIT5)
- #define PLL_IO_SET P5DIR = 0xDB; //PLL端口配置
- //===========================变量定义=======================================
- /*-------------------------------------400MHz---------------------------------------------
- ----------------------------------------------------------------------------------------*/
- unsigned char CONTROL_LATCH[3] ={0x0F,0xF1,0x20};
- unsigned char N_COUNTER_LATCH[3] ={0x00,0x0A,0X02};
- unsigned char R_COUNTER_LATCH[3] ={0x30,0x00,0x09};
- void delay (unsigned int length)
- {
- while (length >0)
- length--;
- }
- //--------------------------------------------------------------------------------
- void DelaymS(uint ms)
- {
- uint i;
- while(ms--)
- {
- for(i=1;i<(uint)(8*143-2);i++)
- ;
- }
- }
- //---------------------------------
- //void WriteToADF4350(unsigned char count,unsigned char *buf);
- //---------------------------------
- //Function that writes to the ADF4350 via the SPI port. 函数,该函数通过SPI端口写入ADF4350。
- //--------------------------------------------------------------------------------
- void WriteToADF4360(unsigned char count, unsigned char *buf)
- {
- unsigned char ValueToWrite = 0;
- unsigned char i = 0;
- unsigned char j = 0;
-
- PLL_SET_DATA_OUT();
-
- delay(10);
- PLL_CLR_SCL();
- PLL_CLR_LE();
- delay(10);
- for(i=0;i<count;i++)
- {
- ValueToWrite = *(buf + i);
- for(j=0; j<8; j++)
- {
- if(0x80 == (ValueToWrite & 0x80))
- {
- PLL_SET_DATA(); //Send one to SDO pin
- }
- else
- {
- PLL_CLR_DATA(); //Send zero to SDO pin
- }
- delay(10);
- PLL_SET_SCL();
- delay(10);
- ValueToWrite <<= 1; //Rotate data
- PLL_CLR_SCL();
- }
- }
- PLL_CLR_DATA();
- delay(10);
- PLL_SET_LE();
- delay(10);
- PLL_CLR_LE();
- }
- //---------------------------------
- //void ReadFromADF4350(unsigned char count,unsigned char *buf)从ADF4350读取
- //---------------------------------
- //Function that reads from the ADF4350 via the SPI port. 该函数通过SPI端口从ADF4350中读取数据。
- //--------------------------------------------------------------------------------
- void ReadFromADF4360(unsigned char count, unsigned char *buf)
- {
- unsigned char i = 0;
- unsigned char j = 0;
- unsigned int iTemp = 0;
- unsigned char RotateData = 0;
- PLL_SET_DATA_IN();
-
- delay(1);
- PLL_CLR_SCL();
- PLL_CLR_LE();
- delay(1);
- for(j=0; j<count; j++)
- {
- for(i=0; i<8; i++)
- {
- RotateData <<= 1; //Rotate data
- delay(1);
- iTemp = PLL_DATA_IN; //Read DATA of ADF4350
- PLL_SET_SCL();
- if(iTemp)
- {
- RotateData |= 1;
- }
- delay(1);
- PLL_CLR_SCL();
- }
- *(buf + j)= RotateData;
- }
- delay(1);
- PLL_SET_LE();
- delay(1);
- PLL_CLR_LE();
- }
- void PLL_set_frq (void)
- { DelaymS(20);
- PLL_SET_CE();
- WriteToADF4360(3,R_COUNTER_LATCH);
- WriteToADF4360(3,CONTROL_LATCH); //
- DelaymS(50); //需大于10mS
- WriteToADF4360(3,N_COUNTER_LATCH); //
- }
复制代码 |
评分
-
查看全部评分
|