C51 COMPILER V9.53.0.0 24L01 09/20/2018 11:32:45 PAGE 1 C51 COMPILER V9.53.0.0, COMPILATION OF MODULE 24L01 OBJECT MODULE PLACED IN .\Output\24L01.obj COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\..\Code\User\Driver\24L01.c LARGE OPTIMIZE(0,SPEED) BROWSE INCDIR(../ -../Code/Include;../../Code/User;../../Code/User/Common;../../Code/User/Driver) DEFINE(FOSC_160000=1) DEBUG OBJECTEXTEND -PRINT(.\Output\LST\24L01.lst) TABS(2) OBJECT(.\Output\24L01.obj) line level source 1 /******************************************************************************/ 2 /* -- ¾Ó¼Ó¾Ó-- */ 3 /* 4 // ÎļþÃû£º 5 // ˵Ã÷£º 6 // ±àдÈËÔ±£ºkinve 7 // ±àдÈÕÆÚ£º2018-8-21 8 // ³ÌÐòά»¤£º 9 // ά»¤¼Ç¼£º 10 // 11 // 12 */ 13 // ÃâÔðÉùÃ÷£º 14 // (c) Anxinke Corporation. All rights reserved. 15 /******************************************************************************/ 16 #include "24l01.h" 17 18 19 const u8 TX_ADDRESS[TX_ADR_WIDTH]={ADDR1_VALUE,ADDR2_VALUE,ADDR3_VALUE,ADDR4_VALUE,ADDR5_VALUE}; //·¢Ë͵ØÖ -· 20 21 const u8 RX_ADDRESS[RX_ADR_WIDTH]={ADDR1_VALUE,ADDR2_VALUE,ADDR3_VALUE,ADDR4_VALUE,ADDR5_VALUE}; //·¢Ë͵ØÖ -· 22 23 //³õʼ»¯24L01µÄIO¿Ú 24 void Nrf24l01Init(void) 25 { 26 1 #if 0 GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG, ENABLE); //Ê¹Ä -ÜPB,D,G¶Ë¿ÚʱÖÓ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PB12ÉÏÀ­ ·ÀÖ¹W25XµÄ¸ÉÈÅ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); //³õʼ»¯Ö¸¶¨IO GPIO_SetBits(GPIOB,GPIO_Pin_12);//ÉÏÀ­ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PD2ÍÆÍìÊä³öÉÏÀ­ ½ûÖ¹SD¿¨µÄ¸ÉÈÅ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_SetBits(GPIOD,GPIO_Pin_2);//³õʼ»¯Ö¸¶¨IO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //PG6 7 ÍÆÍì GPIO_Init(GPIOG, &GPIO_InitStructure);//³õʼ»¯Ö¸¶¨IO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PG8 ÊäÈë GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_ResetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);//PG6,7,8ÉÏÀ­ C51 COMPILER V9.53.0.0 24L01 09/20/2018 11:32:45 PAGE 2 Spi2Init(); //³õʼ»¯SPI SPI_Cmd(SPI2, DISABLE); // SPIÍâÉ費ʹÄÜ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPIÉèÖÃΪ˫ÏßË«Ïòȫ˫¹¤ SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //SPIÖ÷»ú SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //·¢ËͽÓÊÕ8λ֡½á¹¹ SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //ʱÖÓÐü¿ÕµÍ SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //Êý¾Ý²¶»ñÓÚµÚ1¸öʱÖÓÑØ SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //NSSÐźÅÓÉÈí¼þ¿ØÖÆ SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; //¶¨Òå²¨ÌØÂÊÔ¤·ÖƵµÄÖµ:²¨ÌØÂÊÔ -¤·ÖƵֵΪ16 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //Êý¾Ý´«Êä´ÓMSBλ¿ªÊ¼ SPI_InitStructure.SPI_CRCPolynomial = 7; //CRCÖµ¼ÆËãµÄ¶àÏîʽ SPI_Init(SPI2, &SPI_InitStructure); //¸ù¾ÝSPI_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèSPIx¼Ä´æÆ÷ SPI_Cmd(SPI2, ENABLE); //ʹÄÜSPIÍâÉè #endif 69 1 NRF24L01_CE=0; //ʹÄÜ24L01,³õʼ»¯µÍµçƽ½øÈë´ý»úģʽ 70 1 NRF24L01_CSN=1; //SPIƬѡȡÏû 71 1 //Nrf24l01TxMode(); 72 1 Nrf24l01RxMode(); 73 1 } 74 75 u8 Spi2ReadWriteByte ( u8 byte ) 76 { 77 1 u8 bit_ctr; 78 1 79 1 for ( bit_ctr = 0; bit_ctr < 8; bit_ctr++ ) // Êä³ö8λ 80 1 { 81 2 NRF24L01_MOSI = ( byte & 0x80 ); // MSB TO MOSI 82 2 byte = ( byte << 1 ); // shift next bit to MSB 83 2 NRF24L01_SCK = 1; 84 2 byte |= NRF24L01_MISO; // capture current MISO bit 85 2 NRF24L01_SCK = 0; 86 2 } 87 1 88 1 return byte; 89 1 } 90 91 //SPIд¼Ä´æÆ÷ 92 //reg:Ö¸¶¨¼Ä´æÆ÷µØÖ· 93 //value:дÈëµÄÖµ 94 //ÿһ¸öÃüÁîµÄÖ´Ðж¼ÐèÒªÒ»´ÎCSNÓɵ͵½¸ßµÄ¹ý³Ì 95 u8 Nrf24l01WriteReg(u8 reg,u8 value) 96 { 97 1 u8 status; 98 1 NRF24L01_CSN=0; //ʹÄÜSPI´«Êä 99 1 NRF24L01_CE=0; //´ý»úģʽ²ÅÄܽøÐмĴæÆ÷дÈë 100 1 status =Spi2ReadWriteByte(WRITE_REG_NRF+reg);//·¢ËͼĴæÆ÷ºÅ +¶Á¼Ä´æÆ÷ÃüÁî 101 1 Spi2ReadWriteByte(value); //дÈë¼Ä´æÆ÷µÄÖµ 102 1 NRF24L01_CSN=1; //½ûÖ¹SPI´«Êä 103 1 return(status); //·µ»Ø×´Ì¬Öµ 104 1 } 105 106 107 //¶ÁÈ¡SPI¼Ä´æÆ÷Öµ 108 //reg:Òª¶ÁµÄ¼Ä´æÆ÷ 109 u8 Nrf24l01ReadReg(u8 reg) 110 { 111 1 u8 reg_val; C51 COMPILER V9.53.0.0 24L01 09/20/2018 11:32:45 PAGE 3 112 1 NRF24L01_CSN = 0; //ʹÄÜSPI´«Êä 113 1 Spi2ReadWriteByte(READ_REG_NRF+reg); //·¢ËͼĴæÆ÷ºÅ+¶Á¼Ä´æÆ÷ÃüÁî 114 1 reg_val=Spi2ReadWriteByte(0XFF);//¶ÁÈ¡¼Ä´æÆ÷ÄÚÈÝ 115 1 NRF24L01_CSN = 1; //½ûÖ¹SPI´«Êä 116 1 return(reg_val); //·µ»Ø×´Ì¬Öµ 117 1 } 118 119 120 //ÔÚÖ¸¶¨Î»ÖöÁ³öÖ¸¶¨³¤¶ÈµÄÊý¾Ý 121 //reg:¼Ä´æÆ÷(λÖÃ) 122 //*pBuf:Êý¾ÝÖ¸Õë 123 //len:Êý¾Ý³¤¶È 124 //·µ»ØÖµ,´Ë´Î¶Áµ½µÄ״̬¼Ä´æÆ÷Öµ 125 u8 Nrf24l01ReadBuf(u8 reg,u8 *pBuf,u8 len) 126 { 127 1 u8 status,u8_ctr; 128 1 NRF24L01_CSN = 0; //ʹÄÜSPI´«Êä 129 1 status=Spi2ReadWriteByte(reg);//·¢ËͼĴæÆ÷Öµ(λÖÃ),²¢¶Áȡ״ֵ̬ 130 1 for(u8_ctr=0;u8_ctr