📄 main.lst
字号:
266 1
267 1 _nop_();
268 1 SDIO = 1;
269 1
270 1 //read data
271 1 for(i = 0; i < 8; i++)
272 1 {
273 2 if(SDIO)
274 2 tmp = (tmp << 1) | 0x01;
275 2 else
276 2 tmp = tmp << 1;
277 2
278 2 SCK = 1;
279 2 _nop_();
280 2 SCK = 0;
281 2 }
282 1 SCS = 1;
283 1 return tmp;
284 1 }
285
286
287 /*********************************************************************
288 ** Strobe Command
289 *********************************************************************/
290 void StrobeCmd(Uint8 src)
291 {
292 1 Uint8 i;
293 1
294 1 SCS = 0;
295 1 for(i = 0; i < 8; i++)
296 1 {
297 2 if(src & 0x80)
298 2 SDIO = 1;
299 2 else
300 2 SDIO = 0;
301 2
302 2 _nop_();
303 2 SCK = 1;
C51 COMPILER V9.01 MAIN 01/07/2011 01:47:00 PAGE 6
304 2 _nop_();
305 2 SCK = 0;
306 2 src = src << 1;
307 2 }
308 1 SCS = 1;
309 1 }
310
311 /************************************************************************
312 ** ByteSend
313 ************************************************************************/
314 void ByteSend(Uint8 src)
315 {
316 1 Uint8 i;
317 1
318 1 for(i = 0; i < 8; i++)
319 1 {
320 2 if(src & 0x80)
321 2 SDIO = 1;
322 2 else
323 2 SDIO = 0;
324 2
325 2 _nop_();
326 2 SCK = 1;
327 2 _nop_();
328 2 SCK = 0;
329 2 src = src << 1;
330 2 }
331 1 }
332
333 /************************************************************************
334 ** WriteID
335 ************************************************************************/
336 void A7125_WriteID(void)
337 {
338 1 Uint8 i;
339 1 Uint8 addr;
340 1
341 1 addr = IDCODE_REG; //send address 0x06, bit cmd=0, r/w=0
342 1 SCS = 0;
343 1 ByteSend(addr);
344 1 for (i=0; i < 4; i++)
345 1 ByteSend(ID_Tab[i]);
346 1 SCS = 1;
347 1 }
348
349 /************************************************************************
350 ** Reset_RF
351 ************************************************************************/
352 void A7125_Reset(void)
353 {
354 1 A7125_WriteReg(MODE_REG, 0x00); //reset RF chip
355 1 }
356 /*********************************************************************
357 ** CHGroupCal
358 *********************************************************************/
359 void CHGroupCal(Uint8 ch)
360 {
361 1 Uint8 tmp;
362 1 Uint8 vb,vbcf;
363 1 Uint8 vcb,vccf;
364 1
365 1 A7125_WriteReg(PLL1_REG, ch);
C51 COMPILER V9.01 MAIN 01/07/2011 01:47:00 PAGE 7
366 1 A7125_WriteReg(CALIBRATION_REG, 0x1C);
367 1 do
368 1 {
369 2 tmp = A7125_ReadReg(CALIBRATION_REG);
370 2 tmp &= 0x1C;
371 2 }
372 1 while (tmp);
373 1
374 1 //for check
375 1 tmp = A7125_ReadReg(VCOCAL1_REG);
376 1 vb = tmp & 0x07;
377 1 vbcf = (tmp >>3) & 0x01;
378 1
379 1 tmp = A7125_ReadReg(VCOCCAL_REG);
380 1 vcb = tmp & 0x0F;
381 1 vccf= (tmp >> 4) & 0x01;
382 1
383 1 if (vbcf || vccf)
384 1 Err_State();//error
385 1 }
386
387 /*********************************************************************
388 ** calibration
389 *********************************************************************/
390 void A7125_Cal(void)
391 {
392 1 Uint8 tmp;
393 1 Uint8 fb,fbcf,fcd;
394 1 Uint8 dvt;
395 1
396 1 //calibration RSSI,IF procedure
397 1 StrobeCmd(CMD_PLL);
398 1 A7125_WriteReg(CALIBRATION_REG, 0x03);
399 1 do
400 1 {
401 2 tmp = A7125_ReadReg(CALIBRATION_REG);
402 2 tmp &= 0x03;
403 2 }
404 1 while (tmp);
405 1
406 1 //calibration VCO dev,VBC,VCC procedure
407 1
408 1 CHGroupCal(30); //calibrate channel group Bank I
409 1 CHGroupCal(90); //calibrate channel group Bank II
410 1 CHGroupCal(150); //calibrate channel group Bank III
411 1 StrobeCmd(CMD_STBY); //return to STBY state
412 1
413 1 //for check
414 1 tmp = A7125_ReadReg(IFCAL1_REG);
415 1 fb = tmp & 0x0F;
416 1 fbcf = (tmp >>4) & 0x01;
417 1
418 1 tmp = A7125_ReadReg(IFCAL2_REG);
419 1 fcd = tmp & 0x1F;
420 1
421 1 tmp = A7125_ReadReg(VCOCAL2_REG);
422 1 dvt = tmp;
423 1
424 1 if (fbcf)
425 1 Err_State(); //error
426 1 }
427
C51 COMPILER V9.01 MAIN 01/07/2011 01:47:00 PAGE 8
428 /*********************************************************************
429 ** A7125_Config
430 *********************************************************************/
431 void A7125_Config(void)
432 {
433 1 Uint8 i;
434 1
435 1 //0x00 mode register, for reset
436 1 //0x05 fifo data register
437 1 //0x06 id code register
438 1 //0x24 IF calibration II, only read
439 1
440 1 for ( i=0x01; i<=0x38; i++ )
441 1 {
442 2 if ( (i==0x05) || (i==0x06) || (i==0x24) )
443 2 continue;
444 2
445 2 A7125_WriteReg( i, A7125Config[i] );
446 2 }
447 1 }
448
449 /*********************************************************************
450 ** initRF
451 *********************************************************************/
452 void initRF(void)
453 {
454 1 //init io pin
455 1 SCS = 1;
456 1 SCK = 0;
457 1 SDIO = 1;
458 1 GIO1 = 1;
459 1 GIO2 = 1;
460 1
461 1 A7125_Reset(); //reset A7125 RF chip
462 1 A7125_WriteID(); //write ID code
463 1 A7125_Config(); //config A7125 chip
464 1 A7125_Cal(); //calibration IF,vco, vcoc
465 1 }
466
467 //**********************************************************************
468 // ByteRead
469 //**********************************************************************
470 Uint8 ByteRead(void)
471 {
472 1 Uint8 i,tmp;
473 1
474 1 SDIO = 1; //sdio pull high
475 1 for(i = 0; i < 8; i++)
476 1 {
477 2 if(SDIO)
478 2 tmp = (tmp << 1) | 0x01;
479 2 else
480 2 tmp = tmp << 1;
481 2 SCK = 1;
482 2 _nop_();
483 2 SCK = 0;
484 2 }
485 1 return tmp;
486 1 }
487
488 //**********************************************************************
489 // ReadFIFO
C51 COMPILER V9.01 MAIN 01/07/2011 01:47:00 PAGE 9
490 //**********************************************************************
491 void ReadFIFO(Uint8 length)
492 {
493 1 Uint8 i;
494 1
495 1 SCS = 0;
496 1 ByteSend(FIFO_REG | 0x40);
497 1 for(i = 0; i <length; i++)
498 1 RfBuf[i] = ByteRead();
499 1 SCS=1;
500 1 }
501
502 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
503 // DELAY 1MS FUNCTION //
504 // USER NEED CHANGE THIS FUNCTION TO FIT SYSTEM. //
505 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
506 void Delay1ms(Uint8 n)
507 {
508 1 Uint8 i, j;
509 1 while(n--)
510 1 {
511 2 for(j = 0; j < 6; j ++)
512 2 {
513 3 for(i = 0; i < 235; i ++)
514 3 {
515 4 _nop_();
516 4 _nop_();
517 4 _nop_();
518 4 _nop_();
519 4 }
520 3 }
521 2 }
522 1 }
523
524
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 617 ----
CONSTANT SIZE = 182 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = 65 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -