📄 rf.lst
字号:
577 2 if(value & 0x80)
578 2 {
579 3 RF_SDIO_HIGH();
580 3 }
581 2 else
582 2 {
583 3 RF_SDIO_LOW();
584 3 }
585 2 RF_SCK_HIGH();
586 2 value <<= 0x01;
587 2 RF_SCK_LOW();
588 2 }
589 1 }
590
591 /***************************************************
592 name: read_register
593 input: none
594 output: ret_byte
595 Describe: 读取RF寄存器的值
596 Notice: 1.在调用该函数时一定要先将MCU与SDIO相连的pin设置为输入
597 2.在调用该函数前一定要先写入需要读的寄存器地址
598 creat date: 2008-7-20
599 creator: dengyihong
600 ***************************************************/
601 U8 read_register(void)
602 {
603 1 U8 i = 0;
604 1 U8 ret_byte = 0;
605 1
606 1 RF_SDIO_INPUT();
607 1 for(i=0; i<0x08; i++)
608 1 {
609 2 ret_byte <<= 0x01;
610 2 if(GET_RF_SDIO())
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 11
611 2 {
612 3 ret_byte |= 0x01;
613 3 }
614 2 RF_SCK_HIGH();
615 2 RF_SCK_LOW();
616 2 }
617 1 return ret_byte;
618 1 }
619
620
621
622 /***************************************************
623 name: A7105_write_command
624 input: command: 写入到RF的命令
625 output: none
626 Describe: 写命令到RF
627 Notice:
628 creat date: 2008-7-20
629 creator: dengyihong
630 ***************************************************/
631 void A7105_write_command(U8 command)
632 {
633 1 RF_SCS_LOW();
634 1 write_register(0x04, command);
635 1 RF_SCS_HIGH();
636 1 }
637
638 /***************************************************
639 name: A7105_write_register
640 input: 1. address 写寄存器的地址
641 2. value 写寄存器的值
642 output: none
643 Describe: 写数据到RF寄存器
644 Notice:
645 creat date: 2008-7-20
646 creator: dengyihong
647 ***************************************************/
648 void A7105_write_register(U8 address,U8 value)
649 {
650 1 RF_SCS_LOW();
651 1
652 1 address &= 0x7f; // write data register
653 1 write_register(0x08,address); // write address
654 1 write_register(0x08,value); // write data
655 1
656 1 RF_SCS_HIGH();
657 1 }
658
659 /***************************************************
660 name: A7105_read_register
661 input: address 写入要读寄存器的地址
662 output: temp
663 Describe: 从RF寄存器读数据
664 Notice:
665 creat date: 2008-7-20
666 creator: dengyihong
667 ***************************************************/
668 U8 A7105_read_register(U8 address)
669 {
670 1 U8 temp = 0;
671 1
672 1 RF_SCS_LOW();
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 12
673 1
674 1 address &= 0x7f;
675 1 address |= 0x40;
676 1 write_register(0x08,address);
677 1 // RF_SDIO_INPUT();
678 1 temp = read_register();
679 1
680 1 RF_SCS_HIGH();
681 1
682 1 return temp;
683 1 }
684
685
686
687
688 /***************************************************
689 name: A7105_write_ID
690 input: none
691 output: none
692 Describe: 写入ID
693 Notice:
694 creat date: 2008-7-20
695 creator: dengyihong
696 ***************************************************/
697
698 void A7105_write_ID(void)
699 {
700 1 RF_SCS_LOW();
701 1
702 1 write_register(0x08,RF_REG_ID_DATA); // write address
703 1
704 1 write_register(0x08,RF_ID_CODE0); // 写ID code
705 1 write_register(0x08,RF_ID_CODE1);
706 1 write_register(0x08,RF_ID_CODE2);
707 1 write_register(0x08,RF_ID_CODE3);
708 1
709 1 RF_SCS_HIGH();
710 1 }
711
712
713 /***************************************************
714 name: A7105_read_ID
715 input: none
716 output: none
717 Describe: 从RF中读ID
718 Notice:
719 creat date: 2008-7-20
720 creator: dengyihong
721 ***************************************************/
722
723 void A7105_read_ID(U8 *read_ptr)
724 {
725 1 U8 id_buff[4] = {0};
726 1
727 1 RF_SCS_LOW();
728 1
729 1 write_register(0x08,(RF_REG_ID_DATA | 0x40)); // 先写入要读的寄存器地址
730 1
731 1 RF_SDIO_INPUT();
732 1 *read_ptr++ = read_register();
733 1 *read_ptr++ = read_register();
734 1 *read_ptr++ = read_register();
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 13
735 1 *read_ptr++ = read_register();
736 1
737 1 RF_SCS_HIGH();
738 1 }
739
740
741
742 /***************************************************
743 name: write_data_to_fifo
744 input: send_cnt 写入的字节数
745 output: none
746 Describe: 写数据到FIFO中
747 Notice:
748 creat date: 2008-7-20
749 creator: dengyihong
750 ***************************************************/
751 void write_data_to_fifo(U8 send_cnt)
752 {
753 1 U8 i = 0;
754 1
755 1 if(send_cnt > RF_FIFO_LEN)
756 1 {
757 2 send_cnt = RF_FIFO_LEN;
758 2 }
759 1
760 1 RF_SCS_LOW();
761 1 write_register(0x08,RF_REG_FIFO_DATA); // 先写地址
762 1 for(i=0; i<send_cnt; i++) // 这里固定写RF_FIFO_LEN个字节
763 1 {
764 2 write_register(0x08,Rf_Send_Buf[i]);
765 2 }
766 1 RF_SCS_HIGH();
767 1 }
768
769 /***************************************************
770 name: read_data_from_fifo
771 input: none
772 output: none
773 Describe: 从RF的FIFO中读取数据
774 Notice:
775 creat date: 2008-7-20
776 creator: dengyihong
777 ***************************************************/
778 void read_data_from_fifo(void)
779 {
780 1 U8 i = 0;
781 1 U8 rec_cnt = 0;
782 1
783 1 RF_SCS_LOW();
784 1 write_register(0x08,RF_REG_FIFO_DATA|0x40); // 先写地址和读命令
785 1
786 1 for(i=0; i<RF_FIFO_LEN; i++) // 这里是固定读RF_FIFO_LEN个字节
787 1 {
788 2 Rf_Rec_Buf[i] = read_register();
789 2 }
790 1 RF_SCS_HIGH();
791 1 }
792
793
794
795 /***************************************************
796 name: send_data_by_RF
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 14
797 input: send_byte_cnt 发送字节数
798 output: none
799 Describe: 通过RF发送数据
800 Notice:
801 creat date: 2008-7-20
802 creator: dengyihong
803 ***************************************************/
804 void send_data_by_RF(U8 send_byte_cnt)
805 {
806 1 if(send_byte_cnt)
807 1 {
808 2 // EX1 = 0; // disable int1 interrupt (如果是设置为中断接收,在发送时应该屏蔽该中断)
809 2
810 2 A7105_entry_stby(); // RX -> STBY -> TX
811 2 A7105_setup_channel(Rf_Rec_Channel+1); // 设置发射频率
812 2 delay_2us(50);
813 2 write_data_to_fifo(send_byte_cnt); // 写数据到fifo
814 2 A7105_entry_tx(); // 进入发送状态发送数据
815 2 delay_2us(150); // 从通过软件命令让RF进入发送状态到开始发送,这中间有140us的延时
816 2 // 因此这里要经过>=140us 的延时后再读GPIO1的状态
817 2 RF_GPIO1_INPUT();
818 2 while(GET_RF_GPIO1()) // GPIO1由高变低表示发送完成。GPIO1在这里的状态取决于0x0b寄存器的设置
819 2 {
820 3
821 3 }
822 2 delay_2us(10);
823 2 A7105_setup_channel(Rf_Rec_Channel); // 设置接收频率
824 2 delay_2us(100);
825 2 A7105_entry_rx(); // 进入接收状态(发送完成后返回到接收状态)
826 2
827 2 IE1 = 0; // 这里要清除中断标志,以免影响接收
828 2 // EX1 = 1;
829 2 }
830 1 }
831
832
833 /***************************************************
834 name: rec_rf_data
835 input: none
836 output: none
837 Describe: 接收RF数据
838 Notice:
839 creat date: 2008-7-20
840 creator: dengyihong
841 ***************************************************/
842 void rec_rf_data(void)
843 {
844 1 U8 temp_buf = 0;
845 1
846 1 temp_buf = A7105_read_register(0x00);
847 1 read_data_from_fifo();
848 1 A7105_entry_rx();
849 1 delay_2us(100);
850 1 }
851
852
853
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 780 ----
CONSTANT SIZE = 62 ----
C51 COMPILER V7.06 RF 10/29/2008 11:22:42 PAGE 15
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
IDATA SIZE = ---- ----
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 + -