📄 a7102.lst
字号:
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE A7102
OBJECT MODULE PLACED IN A7102.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\A7102.c BROWSE DEBUG OBJECTEXTEND PRINT(.\A7102.lst) OBJECT(A7102.ob
-j)
line level source
1 /***********************************************
2 * copyrite (c) 2007
3 *文件名: A7102.c
4 *作者: larry
5 *当前版本: v1.0
6 *建立时间: 2007-6-11 09:45
7 *完成日期:
8
9 *描述: A7102驱动抽象程序,与MCU和IO
10 * 接口无关,由外部.h文件宏定义
11 ************************************************/
12 #include "../header/A7102.h"
13 /***********************************************
14 函 数: Byte_Write()
15 功 能: 写8bit数据到sck和sdio
16 输 入: byte
17 输 出: /
18 描 述: 左移位,bit7在先,sck负边缘触发
19 ***********************************************/
20 void Byte_Write(unsigned char byte)
21 {
22 1 unsigned char i;
23 1
24 1 for(i = 0x00; i < 0x08; i++)
25 1 {
26 2 if(byte&0x80)
27 2 iSPI_Sdi = positive;
28 2 else
29 2 iSPI_Sdi = negative;
30 2
31 2 delay_A7102_us();
32 2
33 2 iSPI_Sck = positive;
34 2
35 2 delay_A7102_us();
36 2
37 2 iSPI_Sck = negative;
38 2
39 2 delay_A7102_us();
40 2
41 2 byte <<= 0x01;
42 2 }
43 1 }
44 /***********************************************
45 函 数: Byte_Read()
46 功 能: 读8bit数据从sck和sdio
47 输 入: /
48 输 出: byte
49 描 述: 左移位,bit7在先,sck负边缘触发
50 ***********************************************/
51 unsigned char Byte_Read(void)
52 {
53 1 unsigned char i;
54 1 unsigned char byte;
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 2
55 1
56 1 for(i = 0x00; i < 0x08; i++)
57 1 {
58 2 byte <<= 0x01;
59 2
60 2 delay_A7102_us();
61 2
62 2 if(iSPI_Sdo)
63 2 byte |= 0x01;
64 2 else
65 2 byte &= 0xfe;
66 2
67 2 iSPI_Sck = positive;
68 2
69 2 delay_A7102_us();
70 2
71 2 iSPI_Sck = negative;
72 2 }
73 1
74 1 /* 返回读取数值 */
75 1 return (byte);
76 1 }
77 /***********************************************
78 函 数: Word_Write()
79 功 能: 写16bit数据到sck和sdio
80 输 入: word
81 输 出: /
82 描 述: 左移位,bit15在先,sck负边缘触发
83 ***********************************************/
84 void Word_Write(unsigned int word)
85 {
86 1 unsigned char i;
87 1
88 1 for(i = 0x00; i < 0x10; i++)
89 1 {
90 2 if(word&0x8000)
91 2 iSPI_Sdi = positive;
92 2 else
93 2 iSPI_Sdi = negative;
94 2
95 2 delay_A7102_us();
96 2
97 2 iSPI_Sck = positive;
98 2
99 2 delay_A7102_us();
100 2
101 2 iSPI_Sck = negative;
102 2
103 2 delay_A7102_us();
104 2
105 2 word <<= 0x01;
106 2 }
107 1 }
108 /***********************************************
109 函 数: Word_Read()
110 功 能: 读16bit数据从sck和sdio
111 输 入: /
112 输 出: word
113 描 述: 左移位,bit16在先,sck负边缘触发
114 ***********************************************/
115 unsigned int Word_Read(void)
116 {
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 3
117 1 unsigned char i;
118 1 unsigned int word;
119 1
120 1 for(i = 0x00; i < 0x10; i++)
121 1 {
122 2 word <<= 0x01;
123 2
124 2 delay_A7102_us();
125 2
126 2 if(iSPI_Sdo)
127 2 word |= 0x0001;
128 2 else
129 2 word &= 0xfffe;
130 2
131 2 iSPI_Sck = positive;
132 2
133 2 delay_A7102_us();
134 2
135 2 iSPI_Sck = negative;
136 2 }
137 1
138 1 /* 返回读取数值 */
139 1 return (word);
140 1 }
141 /***********************************************
142 函 数: A7102_Reset_Chip()
143 功 能: 复位A7102芯片
144 输 入: /
145 输 出: /
146 描 述: /
147 ***********************************************/
148 void A7102_Reset_Chip(void)
149 {
150 1 iSPI_Scs = negative;
151 1
152 1 /* 写A7102-Reset命令 */
153 1 Byte_Write(0x7a);
154 1
155 1 iSPI_Scs = positive;
156 1 }
157 /***********************************************
158 函 数: A7102_Reset_FifoTX()
159 功 能: 复位A7102发送FIFO指针
160 输 入: /
161 输 出: /
162 描 述: /
163 ***********************************************/
164 void A7102_Reset_FifoTX(void)
165 {
166 1 iSPI_Sck = negative;
167 1 iSPI_Scs = negative;
168 1
169 1 /* 写A7102-FifoTX命令 */
170 1 Byte_Write(0x6a);
171 1
172 1 iSPI_Scs = positive;
173 1 }
174 /***********************************************
175 函 数: A7102_Reset_FifoRX()
176 功 能: 复位A7102接收FIFO指针
177 输 入: /
178 输 出: /
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 4
179 描 述: /
180 ***********************************************/
181 void A7102_Reset_FifoRX(void)
182 {
183 1 iSPI_Sck = negative;
184 1 iSPI_Scs = negative;
185 1
186 1 /* 写A7102-FifoRX命令 */
187 1 Byte_Write(0xea);
188 1
189 1 iSPI_Scs = positive;
190 1 }
191 /***********************************************
192 函 数: A7102_Fifo_Read()
193 功 能: 读FIFO数据
194 输 入: read_buff
195 输 出: /
196 描 述: /
197 ***********************************************/
198 void A7102_Fifo_Read(unsigned char *read_buff)
199 {
200 1 unsigned char i;
201 1
202 1 iSPI_Sck = negative;
203 1 iSPI_Scs = negative;
204 1
205 1 /* 读A7102-FIFO命令 */
206 1 Byte_Write(0xca);
207 1
208 1 declare_sdo_input();
209 1
210 1 /* 读A7102-FIFO数据 */
211 1 for(i = 0x00;i < C_FIFO_Byte;i++)
212 1 {
213 2 *read_buff = Byte_Read();
214 2
215 2 read_buff ++;
216 2 }
217 1
218 1 declare_sdo_output();
219 1
220 1 iSPI_Scs = positive;
221 1 }
222 /***********************************************
223 函 数: A7102_Fifo_Write()
224 功 能: 写FIFO数据
225 输 入: write_buff
226 输 出: /
227 描 述: /
228 ***********************************************/
229 void A7102_Fifo_Write(unsigned char *write_buff)
230 {
231 1 unsigned char i;
232 1
233 1 iSPI_Sck = negative;
234 1 iSPI_Scs = negative;
235 1
236 1 /* 写A7102-FIFO命令 */
237 1 Byte_Write(0x5a);
238 1
239 1 /* 写A7102-FIFO数据 */
240 1 for(i = 0x00;i < C_FIFO_Byte;i++)
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 5
241 1 {
242 2 Byte_Write(*write_buff);
243 2
244 2 write_buff ++;
245 2 }
246 1
247 1 iSPI_Scs = positive;
248 1 }
249 /***********************************************
250 函 数: A7102_Id_Write()
251 功 能: 写ID到A7102内部寄存器
252 输 入: buff_id[]
253 输 出: /
254 描 述: 写ID必须一次性写入
255 ***********************************************/
256 void A7102_Id_Write(unsigned char *id_buff)
257 {
258 1 unsigned char i;
259 1
260 1 iSPI_Sck = negative;
261 1 iSPI_Scs = negative;
262 1
263 1 /* 写A7102-ID命令 */
264 1 Byte_Write(0x2a);
265 1
266 1 /* 写A7102-ID数据 */
267 1 for(i = 0x00;i < 0x04;i++)
268 1 {
269 2 Byte_Write(*id_buff);
270 2
271 2 id_buff ++;
272 2 }
273 1
274 1 iSPI_Scs = positive;
275 1 }
276 /***********************************************
277 函 数: A7102_Id_Read()
278 功 能: 读ID从A7102内部寄存器
279 输 入: /
280 输 出: buff_id[]
281 描 述: 读ID必须一次性读出
282 ***********************************************/
283 void A7102_Id_Read(unsigned char *id_buff)
284 {
285 1 unsigned char i;
286 1
287 1 iSPI_Sck = negative;
288 1 iSPI_Scs = negative;
289 1
290 1 /* 读A7102-ID命令 */
291 1 Byte_Write(0xaa);
292 1
293 1 declare_sdo_input();
294 1
295 1 /* 读A7102-ID数据 */
296 1 for(i = 0x00;i < 0x04;i++)
297 1 {
298 2 *id_buff = Byte_Read();
299 2
300 2 id_buff ++;
301 2 }
302 1
C51 COMPILER V8.18 A7102 03/20/2010 16:53:38 PAGE 6
303 1 declare_sdo_output();
304 1
305 1 iSPI_Scs = positive;
306 1 }
307 /***********************************************
308 函 数: A7102_Register_Write()
309 功 能: 写控制数据到A7102内部寄存器
310 输 入: addr,parameter
311 输 出: /
312 描 述: /
313 ***********************************************/
314 void A7102_Register_Write(unsigned char addr,unsigned int parameter)
315 {
316 1 iSPI_Sck = negative;
317 1 delay_A7102_us();
318 1 iSPI_Scs = negative;
319 1
320 1 addr &= 0x0f;
321 1
322 1 /* 写A7102-参数配置命令 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -