?? ad9958.lst
字號:
ARM COMPILER V2.53, AD9958 23/07/06 16:59:03 PAGE 1
ARM COMPILER V2.53, COMPILATION OF MODULE AD9958
OBJECT MODULE PLACED IN AD9958.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe driver\AD9958.C THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\AD9958
-.LST) TABS(4) OBJECT(AD9958.obj)
stmt level source
1 /*------------------------------------------------------
2 FILE NAME : AD9958.C
3 DESCRIPTION : AD9958 driver.
4 VERSION : 0.0.0 (C)aureole
6 CREATE DATE : 4.1.2006
7 MODIFY DATE : ---
8 LOGS :-\
9 1. First create for hardware test. 4.1.2006
10
11
12 --------------------------------------------------------*/
13
14 //-----------------Include files-------------------------//
15 #include "..\include\ad9958.h"
16 #include "..\include\spi.h"
17 #include "..\include\common.h"
18 #include "..\include\config.h"
19
20
21
22 //-----------------Function-------------------------------//
23
24
25 /*---------------------------------------------------------------
26 NAME : set_ad9958_sync
27 ENTRY TYPE: void
28 RETURN TYPE: void
29 PURPOSE : ---
30 VERSION : 0.5
31 DESCRIPTION:
32 CREATE DATE: 4.6.2006
33 LOGS : 1.first create;
34 -----------------------------------------------------------------*/
35 void set_ad9958_synchronization(void)
36 {
37 1 //Enable both channel clear phase accumulator
38 1 AD9958_CS_OFF
39 1 AD9958_UPDATE_OFF
40 1 send_data_to_spi(0x02);
41 1 send_data_to_spi(0x10);
42 1 send_data_to_spi(0x00);
43 1 AD9958_UPDATE_ON
44 1 AD9958_CS_ON
45 1
46 1 //Disable both channel clear phase accumulator
47 1 AD9958_CS_OFF
48 1 AD9958_UPDATE_OFF
49 1 send_data_to_spi(0x02);
50 1 send_data_to_spi(0x00);
51 1 send_data_to_spi(0x00);
52 1 AD9958_UPDATE_ON
53 1 AD9958_CS_ON
54 1 }
55
56 /*---------------------------------------------------------------
57 NAME : set_ad9958_pll
58 ENTRY TYPE: int
ARM COMPILER V2.53, AD9958 23/07/06 16:59:03 PAGE 2
59 RETURN TYPE: unsigned int(pll multilpe sucess return 1,otherwise return 0)
60 PURPOSE : ---
61 VERSION : 0.1
62 DESCRIPTION:
63 CREATE DATE: 4.5.2006
64 LOGS : 1.first create;
65 -----------------------------------------------------------------*/
66 int set_ad9958_pll(unsigned int mult)
67 {
68 1
69 1 if(mult<3 || mult>21)return 0;
70 1
71 1 if(mult>(160/AD9958_CLOCK)){ //Set PLL VCO gain;
72 2 mult<<=2;
73 2 mult|=0x80;
74 2 }else {
75 2 mult<<=2;
76 2 }
77 1
78 1
79 1 AD9958_CS_OFF
80 1 AD9958_UPDATE_OFF
81 1
82 1 send_data_to_spi(0x01);
83 1 send_data_to_spi((unsigned char)mult);
84 1 send_data_to_spi(0x00);
85 1 send_data_to_spi(0x00);
86 1
87 1 AD9958_UPDATE_ON
88 1 AD9958_CS_ON
89 1
90 1 return 1;
91 1 }
92
93 /*---------------------------------------------------------------
94 NAME : initialize_ad9958
95 ENTRY TYPE: int
96 RETURN TYPE: void
97 PURPOSE : ---
98 VERSION : 0.1
99 DESCRIPTION:
100 CREATE DATE: 4.5.2006
101 LOGS : 1.first create;
102 -----------------------------------------------------------------*/
103 void initialize_ad9958(void)
104 {
105 1 INITIALIZE_AD9958_PORT
106 1
107 1 AD9958_DDSCR_ON
108 1 AD9958_DDSCR_OFF
109 1 set_ad9958_pll(AD9958_PLL_MULTIPLE);
110 1 }
111
112 /*---------------------------------------------------------------
113 NAME : set_frequency
114 ENTRY TYPE: int channel,double frequency;
115 RETURN TYPE: int(set frequency success return 1,else return 0);
116 PURPOSE : ---
117 VERSION : 0.1
118 DESCRIPTION: chan=0 channel a ;chan=1 channel b; chan=2 channel a&b;
119
120 CREATE DATE: 4.5.2006
121 LOGS : 1.first create;
122 -----------------------------------------------------------------*/
123 int set_frequency(int chan,double freq)
124 {
ARM COMPILER V2.53, AD9958 23/07/06 16:59:03 PAGE 3
125 1 unsigned char chan_temp=0;
126 1 UN_INT freq_temp;
127 1 int i=0;
128 1
129 1
130 1 if(chan<0 || chan>2)return 0;
131 1 if(freq>MAX_OUTPUT_FREQUENCY || freq<0)return 0;
132 1
133 1 //select channel;
134 1 if(chan==0)chan_temp=0x40;
135 1 else if(chan==1)chan_temp=0x80;
136 1 else if(chan==2)chan_temp=0xf0;
137 1
138 1 freq*=(double)17.179869184;
139 1
140 1 freq_temp.int_value=(unsigned int)freq;
141 1
142 1 //Hardware operation
143 1 AD9958_CS_OFF
144 1 AD9958_UPDATE_OFF
145 1
146 1
147 1 send_data_to_spi(INSTRUCTION_CSR);
148 1 send_data_to_spi(chan_temp);
149 1
150 1
151 1 send_data_to_spi(INSTRUCTION_CTW0);
152 1 send_data_to_spi(freq_temp.char_value._4);
153 1 send_data_to_spi(freq_temp.char_value._3);
154 1 send_data_to_spi(freq_temp.char_value._2);
155 1 send_data_to_spi(freq_temp.char_value._1);
156 1
157 1 AD9958_UPDATE_ON
158 1 AD9958_CS_ON
159 1
160 1 set_ad9958_synchronization();
161 1 return 1;
162 1 }
163
164 /*---------------------------------------------------------------
165 NAME : set_phase
166 ENTRY TYPE: int chan,float pha;
167 RETURN TYPE: int(set phase success return 1,else return 0);
168 PURPOSE : ---
169 VERSION : 0.1
170 DESCRIPTION: chan=0 channel a ;chan=1 channel b; chan=2 channel a&b;
171
172 CREATE DATE: 4.6.2006
173 LOGS : 1.first create;
174 -----------------------------------------------------------------*/
175 int set_phase(int chan,double pha)
176 {
177 1 unsigned char chan_temp=0;
178 1 unsigned short pha_temp;
179 1
180 1 if(chan<0 || chan>2)return 0;
181 1 if(pha>359.9 || pha<0)return 0;
182 1
183 1 //select channel;
184 1 if(chan==0)chan_temp=0x40;
185 1 else if(chan==1)chan_temp=0x80;
186 1 else if(chan==2)chan_temp=0xf0;
187 1
188 1 pha*=45.511111111111111111111111111111;
189 1
190 1 pha_temp=(unsigned short)pha;
ARM COMPILER V2.53, AD9958 23/07/06 16:59:03 PAGE 4
191 1
192 1 //Hardware operation
193 1 AD9958_CS_OFF
194 1 AD9958_UPDATE_OFF
195 1
196 1
197 1 send_data_to_spi(INSTRUCTION_CSR);
198 1 send_data_to_spi(chan_temp);
199 1
200 1
201 1 send_data_to_spi(INSTRUCTION_CPW0);
202 1 send_data_to_spi((unsigned char)((pha_temp&0xff00)>>8));
203 1 send_data_to_spi((unsigned char)(pha_temp&0x00ff));
204 1
205 1
206 1 AD9958_UPDATE_ON
207 1 AD9958_CS_ON
208 1 set_ad9958_synchronization();
209 1 return 1;
210 1 }
211
212
ARM COMPILER V2.53, AD9958 23/07/06 16:59:03 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (send_data_to_spi?T)
EXTERN CODE16 (?C?FPCMP?T)
EXTERN CODE16 (?C?FPMUL?T)
EXTERN CODE16 (?C?CASTF?T)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -