⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_nrf_l01.lst

📁 非常全的nrf2401设计资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HAL_NRF_L01
OBJECT MODULE PLACED IN .\build\hal_nrf_l01.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\..\..\arch\hal\nrf24l01\hal_nrf_l01.c LARGE OMF2 OPTIMIZE(9,SPEED) BR
                    -OWSE INCDIR(..\common;..\..\..\..\comp\protocol\wdp\common\;..\..\..\..\comp\protocol\wdp\host\;..\..\..\..\arch\hal\inc
                    -lude;..\..\..\..\arch\hal\nrf24lu1;..\..\..\..\arch\nrf24lu1;..\common;..\..\..\..\comp\protocol\fap) DEBUG PRINT(.\lst\
                    -hal_nrf_l01.lst) OBJECT(.\build\hal_nrf_l01.obj)

line level    source

   1          /* Copyright (c) 2007 Nordic Semiconductor. All Rights Reserved.
   2           *
   3           * The information contained herein is property of Nordic Semiconductor ASA.
   4           * Terms and conditions of usage are described in detail in NORDIC
   5           * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. 
   6           *
   7           * Licensees are granted free, non-transferable use of the information. NO
   8           * WARRENTY of ANY KIND is provided. This heading must NOT be removed from
   9           * the file.
  10           *
  11           * $LastChangedRevision: 2290 $
  12           */ 
  13          
  14           /** @file
  15           * Hardware abstraction layer for the nRF24L01 radio.
  16           * 
  17           * @author Runar Kjellhaug
  18           *
  19           */
  20          
  21          #include <stdint.h>
  22          #include <stdbool.h>
  23          
  24          #include "nordic_common.h"
  25          #include "hal_nrf.h"
  26          
  27          #define SET_BIT(pos) ((uint8_t) (1<<( (uint8_t) (pos) )))
  28          #define UINT8(t) ((uint8_t) (t))
  29          
  30          void hal_nrf_set_irq_mode(hal_nrf_irq_source_t int_source, bool irq_state)
  31          {
  32   1        if(irq_state)
  33   1        {
  34   2          hal_nrf_write_reg(CONFIG, hal_nrf_read_reg(CONFIG) & ~SET_BIT(int_source));
  35   2        }
  36   1        else
  37   1        {
  38   2          hal_nrf_write_reg(CONFIG, hal_nrf_read_reg(CONFIG) | SET_BIT(int_source));
  39   2        }
  40   1      }
  41          
  42          uint8_t hal_nrf_get_clear_irq_flags(void)
  43          {
  44   1        return hal_nrf_write_reg(STATUS, (BIT_6|BIT_5|BIT_4)) & (BIT_6|BIT_5|BIT_4);
  45   1      }
  46          
  47          void hal_nrf_clear_irq_flag(hal_nrf_irq_source_t int_source)
  48          {
  49   1        hal_nrf_write_reg(STATUS, SET_BIT(int_source));
  50   1      }
  51           
  52          bool hal_nrf_get_irq_mode(uint8_t int_type)
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 2   

  53          {
  54   1        if(hal_nrf_read_reg(CONFIG) & SET_BIT(int_type))
  55   1          return false;
  56   1        else
  57   1          return true;
  58   1      }
  59          
  60          uint8_t hal_nrf_get_irq_flags(void)
  61          {
  62   1        return hal_nrf_nop() & (BIT_6|BIT_5|BIT_4);
  63   1      }
  64          
  65          void hal_nrf_set_crc_mode(hal_nrf_crc_mode_t crc_mode)
  66          {
  67   1        hal_nrf_write_reg(CONFIG, (hal_nrf_read_reg(CONFIG) & ~(BIT_3|BIT_2)) | (UINT8(crc_mode)<<2));
  68   1      }
  69          
  70          void hal_nrf_open_pipe(hal_nrf_address_t pipe_num, bool auto_ack)
  71          {
  72   1        switch(pipe_num)
  73   1        {
  74   2          case HAL_NRF_PIPE0:
  75   2          case HAL_NRF_PIPE1:
  76   2          case HAL_NRF_PIPE2:
  77   2          case HAL_NRF_PIPE3:
  78   2          case HAL_NRF_PIPE4:
  79   2          case HAL_NRF_PIPE5:
  80   2            hal_nrf_write_reg(EN_RXADDR, hal_nrf_read_reg(EN_RXADDR) | SET_BIT(pipe_num));
  81   2      
  82   2            if(auto_ack)
  83   2              hal_nrf_write_reg(EN_AA, hal_nrf_read_reg(EN_AA) | SET_BIT(pipe_num));
  84   2            else
  85   2              hal_nrf_write_reg(EN_AA, hal_nrf_read_reg(EN_AA) & ~SET_BIT(pipe_num));
  86   2            break;
  87   2      
  88   2          case HAL_NRF_ALL:
  89   2            hal_nrf_write_reg(EN_RXADDR, ~(BIT_7|BIT_6));
  90   2      
  91   2            if(auto_ack)
  92   2              hal_nrf_write_reg(EN_AA, ~(BIT_7|BIT_6));
  93   2            else
  94   2              hal_nrf_write_reg(EN_AA, 0);
  95   2            break;
  96   2            
  97   2          default:
  98   2            break;
  99   2        }
 100   1      }
 101          
 102          void hal_nrf_close_pipe(hal_nrf_address_t pipe_num)
 103          {
 104   1        switch(pipe_num)
 105   1        {
 106   2          case HAL_NRF_PIPE0:
 107   2          case HAL_NRF_PIPE1:
 108   2          case HAL_NRF_PIPE2:
 109   2          case HAL_NRF_PIPE3:
 110   2          case HAL_NRF_PIPE4:
 111   2          case HAL_NRF_PIPE5:
 112   2            hal_nrf_write_reg(EN_RXADDR, hal_nrf_read_reg(EN_RXADDR) & ~SET_BIT(pipe_num));
 113   2            hal_nrf_write_reg(EN_AA, hal_nrf_read_reg(EN_AA) & ~SET_BIT(pipe_num));
 114   2            break;
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 3   

 115   2          
 116   2          case HAL_NRF_ALL:
 117   2            hal_nrf_write_reg(EN_RXADDR, 0);
 118   2            hal_nrf_write_reg(EN_AA, 0);
 119   2            break;
 120   2            
 121   2          default:
 122   2            break;
 123   2        }
 124   1      }
 125          
 126          void hal_nrf_set_address(hal_nrf_address_t address, uint8_t *addr)
 127          {
 128   1        switch(address)
 129   1        {
 130   2          case HAL_NRF_TX:
 131   2          case HAL_NRF_PIPE0:
 132   2          case HAL_NRF_PIPE1:
 133   2            hal_nrf_write_multibyte_reg((uint8_t) address, addr, 0);
 134   2            break;
 135   2      
 136   2          case HAL_NRF_PIPE2:
 137   2          case HAL_NRF_PIPE3:
 138   2          case HAL_NRF_PIPE4:
 139   2          case HAL_NRF_PIPE5:
 140   2            hal_nrf_write_reg(RX_ADDR_P0 + (uint8_t) address, *addr);
 141   2            break;
 142   2      
 143   2          default:
 144   2            break;
 145   2        }
 146   1      }
 147          
 148          void hal_nrf_set_auto_retr(uint8_t retr, uint16_t delay)
 149          {
 150   1        hal_nrf_write_reg(SETUP_RETR, (((delay/250)-1)<<4) | retr);
 151   1      }
 152          
 153          void hal_nrf_set_address_width(hal_nrf_address_width_t address_width)
 154          {
 155   1        hal_nrf_write_reg(SETUP_AW, (UINT8(address_width) - 2));
 156   1      }
 157          
 158          void hal_nrf_set_rx_pload_width(uint8_t pipe_num, uint8_t pload_width)
 159          {
 160   1        hal_nrf_write_reg(RX_PW_P0 + pipe_num, pload_width);
 161   1      }
 162          
 163          uint8_t hal_nrf_get_crc_mode(void)
 164          {
 165   1        return (hal_nrf_read_reg(CONFIG) & (BIT_3|BIT_2)) >> CRCO;
 166   1      }
 167          
 168          uint8_t hal_nrf_get_pipe_status(uint8_t pipe_num)
 169          {
 170   1        uint8_t en_rx, en_aa;
 171   1      
 172   1        en_rx = hal_nrf_read_reg(EN_RXADDR) & (1<<pipe_num);
 173   1        en_aa = hal_nrf_read_reg(EN_AA) & (1<<pipe_num);
 174   1      
 175   1        en_rx >>= pipe_num;
 176   1        en_aa >>= pipe_num;
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 4   

 177   1      
 178   1        return (en_aa << 1) + en_rx;
 179   1      }
 180          
 181          uint8_t hal_nrf_get_address(uint8_t address, uint8_t *addr)
 182          {
 183   1        switch(address)
 184   1        {
 185   2          case HAL_NRF_PIPE0:
 186   2          case HAL_NRF_PIPE1:
 187   2          case HAL_NRF_TX:
 188   2            return hal_nrf_read_multibyte_reg(address, addr);
 189   2      
 190   2          default:
 191   2            *addr = hal_nrf_read_reg(RX_ADDR_P0 + address);
 192   2            return hal_nrf_get_address_width();
 193   2        }
 194   1      }
 195          
 196          uint8_t hal_nrf_get_auto_retr_status(void)
 197          {
 198   1        return hal_nrf_read_reg(OBSERVE_TX);
 199   1      }
 200          
 201          uint8_t hal_nrf_get_packet_lost_ctr(void)
 202          {
 203   1        return (hal_nrf_read_reg(OBSERVE_TX) & (BIT_7|BIT_6|BIT_5|BIT_4)) >> 4;
 204   1      }
 205          
 206          uint8_t hal_nrf_get_address_width(void)
 207          {
 208   1        return (hal_nrf_read_reg(SETUP_AW) + 2);
 209   1      }
 210          
 211          uint8_t hal_nrf_get_rx_pload_width(uint8_t pipe_num)
 212          {
 213   1        return hal_nrf_read_reg(RX_PW_P0 + pipe_num);
 214   1      }
 215          
 216          void hal_nrf_set_operation_mode(hal_nrf_operation_mode_t op_mode)
 217          {
 218   1        if(op_mode == HAL_NRF_PRX)
 219   1        {
 220   2          hal_nrf_write_reg(CONFIG, (hal_nrf_read_reg(CONFIG) | (1<<PRIM_RX)));
 221   2        }
 222   1        else
 223   1        {
 224   2          hal_nrf_write_reg(CONFIG, (hal_nrf_read_reg(CONFIG) & ~(1<<PRIM_RX)));
 225   2        }
 226   1      }
 227          
 228          void hal_nrf_set_power_mode(hal_nrf_pwr_mode_t pwr_mode)
 229          {
 230   1        if(pwr_mode == HAL_NRF_PWR_UP)
 231   1        {
 232   2          hal_nrf_write_reg(CONFIG, (hal_nrf_read_reg(CONFIG) | (1<<PWR_UP)));
 233   2        }
 234   1        else
 235   1        {
 236   2          hal_nrf_write_reg(CONFIG, (hal_nrf_read_reg(CONFIG) & ~(1<<PWR_UP)));
 237   2        }
 238   1      }
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 5   

 239          
 240          void hal_nrf_set_rf_channel(uint8_t channel)
 241          {
 242   1        hal_nrf_write_reg(RF_CH, channel);
 243   1      }
 244          
 245          void hal_nrf_set_output_power(hal_nrf_output_power_t power)
 246          {
 247   1        hal_nrf_write_reg(RF_SETUP, (hal_nrf_read_reg(RF_SETUP) & ~((1<<RF_PWR1)|(1<<RF_PWR0))) | (UINT8(power)<
             -<1));
 248   1      }
 249          
 250          void hal_nrf_set_datarate(hal_nrf_datarate_t datarate)
 251          {
 252   1        if(datarate == HAL_NRF_1MBPS)
 253   1        {
 254   2          hal_nrf_write_reg(RF_SETUP, (hal_nrf_read_reg(RF_SETUP) & ~(1<<RF_DR)));
 255   2        }
 256   1        else
 257   1        {
 258   2          hal_nrf_write_reg(RF_SETUP, (hal_nrf_read_reg(RF_SETUP) | (1<<RF_DR)));
 259   2        }
 260   1      }
 261          
 262          uint8_t hal_nrf_get_operation_mode(void)
 263          {
 264   1        return (hal_nrf_read_reg(CONFIG) & (1<<PRIM_RX)) >> PRIM_RX;
 265   1      }
 266          
 267          uint8_t hal_nrf_get_power_mode(void)
 268          {
 269   1        return (hal_nrf_read_reg(CONFIG) & (1<<PWR_UP)) >> PWR_UP;
 270   1      }
 271          
 272          uint8_t hal_nrf_get_rf_channel(void)
 273          {
 274   1        return hal_nrf_read_reg(RF_CH);
 275   1      }
 276          
 277          uint8_t hal_nrf_get_output_power(void)
 278          {
 279   1        return (hal_nrf_read_reg(RF_SETUP) & ((1<<RF_PWR1)|(1<<RF_PWR0))) >> RF_PWR0;
 280   1      }
 281          
 282          uint8_t hal_nrf_get_datarate(void)
 283          {
 284   1        return (hal_nrf_read_reg(RF_SETUP) & (1<<RF_DR)) >> RF_DR;
 285   1      }
 286          
 287          bool hal_nrf_rx_fifo_empty(void)
 288          {
 289   1       if(hal_nrf_get_rx_data_source()==7)
 290   1        {
 291   2          return true;
 292   2        }
 293   1        else
 294   1        {
 295   2          return false;
 296   2        }
 297   1      }
 298          
 299          bool hal_nrf_rx_fifo_full(void)
C51 COMPILER V7.50   HAL_NRF_L01                                                           04/09/2009 10:12:51 PAGE 6   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -