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