📄 rf.lst
字号:
284 1
285 1 }
286
287
288 /****************************************************************
289 name: A7105_config_chip
290 input: none
291 output: none
292 describe: 配置A7105
293 notice:
294 creat date: 2008-7-20
295 creator: dengyihong
296 ****************************************************************/
297 void A7105_config_chip(void)
298 {
299 1 U8 i = 0;
300 1
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 6
301 1 // 0x00 mode register, for reset
302 1 // 0x05 fifo data register
303 1 // 0x06 id code register
304 1 // 0x23 IF calibration II, only read
305 1 // 0x32 filter test register
306 1
307 1 if(System_Mode)
308 1 {
309 2 A7105_write_register(1,0xc2); // direct mode
310 2 for(i=0x02; i<=0x04; i++)
311 2 {
312 3 A7105_write_register(i,A7105_Default_Par[i]);
313 3 }
314 2 /*
315 2 for(i=0x07; i<=0x13; i++)
316 2 {
317 2 A7105_write_register(i,A7105_Default_Par[i]);
318 2 }
319 2 */
320 2 for(i=0x07; i<0x0e; i++)
321 2 {
322 3 A7105_write_register(i,A7105_Default_Par[i]);
323 3 }
324 2
325 2 A7105_write_register(0x0e,Rf_Rate_Tab[Rf_Rate_Cnt]); // set data rate
326 2
327 2 for(i=0x0f; i<=0x13; i++)
328 2 {
329 3 A7105_write_register(i,A7105_Default_Par[i]);
330 3 }
331 2
332 2 A7105_write_register(0x14,0x06); // close TX modulation
333 2
334 2 for(i=0x15; i<=0x22; i++)
335 2 {
336 3 A7105_write_register(i,A7105_Default_Par[i]);
337 3 }
338 2 }
339 1 else
340 1 {
341 2 for(i=0x01; i<=0x04; i++)
342 2 {
343 3 A7105_write_register(i,A7105_Default_Par[i]);
344 3 }
345 2
346 2 for(i=0x07; i<0x0e; i++)
347 2 {
348 3 A7105_write_register(i,A7105_Default_Par[i]);
349 3 }
350 2
351 2 A7105_write_register(0x0e,Rf_Rate_Tab[Rf_Rate_Cnt]); // set data rate
352 2
353 2 for(i=0x0f; i<=0x22; i++)
354 2 {
355 3 A7105_write_register(i,A7105_Default_Par[i]);
356 3 }
357 2 /*
358 2 for(i=0x07; i<=0x22; i++)
359 2 {
360 2 A7105_write_register(i,A7105_Default_Par[i]);
361 2 }
362 2 */
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 7
363 2 }
364 1 for (i=0x24; i<=0x31; i++)
365 1 {
366 2 A7105_write_register(i,A7105_Default_Par[i]);
367 2 }
368 1 }
369
370 /****************************************************************
371 name: set_rf_io
372 input: none
373 output: none
374 describe: 上电时设置RF的I/O口方向及状态
375 notice:
376 creat date: 2008-7-20
377 creator: dengyihong
378 ****************************************************************/
379 void set_rf_io(void)
380 {
381 1 RF_SCK_LOW();
382 1 RF_SDIO_LOW();
383 1 RF_SCS_HIGH();
384 1 RF_TX_PA_OFF();
385 1 RF_GPIO1_INPUT();
386 1 }
387
388 /*******************************************************
389 name: A7105_calibration
390 input: none
391 output:
392 describe: 校验A7105
393 notice: 1. RF 上电后一定要调用该程序对VCO进行校验
394 2. 校验时需在 stby 状态
395 creat date: 2008-7-20
396 creator: dengyihong
397 ********************************************************/
398 void A7105_calibration(void)
399 {
400 1 U8 temp = 0;
401 1
402 1 // standby状态下校准IF
403 1 A7105_entry_stby();
404 1 A7105_write_register(RF_REG_CALIBRATION,0x01);
405 1 do
406 1 {
407 2 temp = A7105_read_register(RF_REG_CALIBRATION);
408 2 temp &= 0x01;
409 2 }while(temp);
410 1
411 1 temp = A7105_read_register(RF_REG_IF_CALIBRATION1);
412 1 temp &= 0x10;
413 1
414 1 if(temp)
415 1 {
416 2 // 校准出错
417 2 }
418 1
419 1 // anual vco current band 3,vco band 1
420 1 A7105_write_register(RF_REG_VCO_CURRENT_CAL,0x13);
421 1 A7105_write_register(RF_REG_VCO_BAND_CAL1,0x09);
422 1
423 1 A7105_entry_stby();
424 1 }
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 8
425
426 /***************************************************
427 name: A7105_entry_stby
428 input: none
429 output: none
430 Describe: RF进入等待模式
431 Notice:
432 creat date: 2008-7-20
433 creator: dengyihong
434 ***************************************************/
435 void A7105_entry_stby(void)
436 {
437 1 A7105_write_command(RF_CMD_STBY);
438 1 delay_2us(100);
439 1 }
440
441 /***************************************************
442 name: A7105_setup_wpll
443 input: none
444 output: none
445 Describe:
446 Notice:
447 creat date: 2008-7-20
448 creator: dengyihong
449 ***************************************************/
450 void A7105_setup_wpll(void)
451 {
452 1 A7105_write_command(RF_CMD_PLL);
453 1 }
454
455 /***************************************************
456 name: A7105_setup_channel
457 input: channel RF工作通道
458 output: none
459 Describe: 设置RF的工作频率
460 Notice:
461 creat date: 2008-8-7
462 creator: dengyihong
463 ***************************************************/
464 void A7105_setup_channel(U8 channel)
465 {
466 1 A7105_write_register(RF_REG_PLL1,channel);
467 1 }
468
469
470 /***************************************************
471 name: A7105_setup_data_rate
472 input: data_rate_cnt 要写入A7105的速率参数
473 output: none
474 Describe: 设置A7105的速率
475 Notice:
476 creat date: 2008-8-8
477 creator: dengyihong
478 ***************************************************/
479 void A7105_setup_data_rate(U8 data_rate_cnt)
480 {
481 1 A7105_write_register(RF_REG_DATA_RATE,data_rate_cnt);
482 1 }
483
484
485 /***************************************************
486 name: rf_entry_rx
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 9
487 input: none
488 output: none
489 Describe: RF进入RX模式
490 Notice:
491 creat date: 2008-7-20
492 creator: dengyihong
493 ***************************************************/
494 void A7105_entry_rx(void)
495 {
496 1 A7105_write_command(RF_CMD_RX);
497 1 RF_TX_PA_OFF();
498 1 }
499
500 /***************************************************
501 FileName: rf_entry_tx
502 input: none
503 output: none
504 Describe: RF进入发射模式
505 Notice: 在进入发射状态时要改变载波频率
506 creat date: 2008-7-20
507 creator: dengyihong
508 ***************************************************/
509 void A7105_entry_tx(void)
510 {
511 1 A7105_write_command(RF_CMD_TX);
512 1 RF_TX_PA_ON();
513 1 }
514
515
516 /***************************************************
517 name: A7105_reset_chip
518 input: none
519 output: none
520 Describe: 软件复位A7105
521 Notice:
522 creat date: 2008-7-20
523 creator: dengyihong
524 ***************************************************/
525 void A7105_reset_chip(void)
526 {
527 1 A7105_write_register(RF_REG_MODE,0x00); // A7105芯片Reset
528 1 }
529
530
531 /***************************************************
532 name: A7105_reset_RX_fifo
533 input: none
534 output: none
535 Describe: reset RX fifo
536 Notice:
537 creat date: 2008-7-20
538 creator: dengyihong
539 ***************************************************/
540 void A7105_reset_RX_fifo(void)
541 {
542 1 A7105_write_command(RF_CMD_RX_FIFO_RESET);
543 1 }
544
545
546 /***************************************************
547 FileName: A7105_reset_TX_fifo
548 input: none
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 10
549 output: none
550 Describe: reset TX fifo
551 Notice:
552 creat date: 2008-7-20
553 creator: dengyihong
554 ***************************************************/
555 void A7105_reset_TX_fifo(void)
556 {
557 1 A7105_write_command(RF_CMD_TX_FIFO_RESET);
558 1 }
559
560
561 /***************************************************
562 name: write_register
563 input: 1.bits 写入寄存器的bit数
564 2.value 写寄存器的值
565 output: none
566 Describe: 写数据到RF内部的寄存器
567 Notice:
568 creat date: 2008-7-20
569 creator: dengyihong
570 ***************************************************/
571 void write_register(U8 bits,U8 value)
572 {
573 1 U8 i = 0;
574 1
575 1 for(i=0; i<bits; i++)
576 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -