软件开发NRF24LE1做主控控制SI4463无线代码
软件开发单片机源程序如下:
- #include <reg24le1.h>
- #include <stdint.h>
- #include <stdio.h>
- #include <stdbool.h>
- #include <intrins.h>
- #include "hal_clk.h"
- #include "compiler_defs.h"
- #include "hardware_defs.h"
- #include "spi.h"
- #include "Si446x_B1_defs.h"
- #include "ezrp_next_api.h"
- #include "modem_params.h"
- // Set up modem parameters database; data is retrieved from modem_params.h header file which is
- // automatically generated by the WDS (Wireless Development Suite)
- SEG_CODE U8 ModemTrx1[] = {7, MODEM_MOD_TYPE_7};
- SEG_CODE U8 ModemTrx2[] = {5, MODEM_CLKGEN_BAND_5};
- SEG_CODE U8 ModemTrx3[] = {11, SYNTH_PFDCP_CPFF_11};
- SEG_CODE U8 ModemTrx4[] = {12, FREQ_CONTROL_INTE_12};
- SEG_CODE U8 ModemRx1[] = {11, MODEM_MDM_CTRL_11};
- SEG_CODE U8 ModemRx2[] = {14, MODEM_BCR_OSR_1_14};
- SEG_CODE U8 ModemRx3[] = {12, MODEM_AFC_GEAR_12};
- SEG_CODE U8 ModemRx4[] = {5, MODEM_AGC_CONTRL_5};
- SEG_CODE U8 ModemRx4_1[] = {7, MODEM_AGC_WINDOW_SIZE_7};
- SEG_CODE U8 ModemRx5[] = {9, MODEM_FSK4_GAIN1_9};
- SEG_CODE U8 ModemRx6[] = {8, MODEM_OOK_PDTC_8};
- SEG_CODE U8 ModemRx7[] = {8, MODEM_RAW_SEARCH_8};
- SEG_CODE U8 ModemRx8[] = {6, MODEM_ANT_DIV_MODE_6};
- SEG_CODE U8 ModemRx9[] = {13, MODEM_CHFLT_RX1_CHFLT_COE13_7_0_13};
- SEG_CODE U8 ModemRx10[] = {13, MODEM_CHFLT_RX1_CHFLT_COE4_7_0_13};
- SEG_CODE U8 ModemRx11[] = {13, MODEM_CHFLT_RX2_CHFLT_COE13_7_0_13};
- SEG_CODE U8 ModemRx12[] = {13, MODEM_CHFLT_RX2_CHFLT_COE4_7_0_13};
- SEG_CODE U8 ModemRx13[] = {5, MODEM_RSSI_COMP_5};
- /*****************************************************
- NRF24LE1软件延时
- ******************************************************/
- void delay1ms(void)
- {
- unsigned int m;
- for(m=0;m<1260;m++) //m为1260时是1MS
- {
- _nop_();
- _nop_();
- }
- }
- void delayms(unsigned short dly) //ms延时
- {
- for(;dly>0;dly--)
- {
- delay1ms();
- }
- }
- void clk_init()
- {
- hal_clk_set_16m_source(HAL_CLK_XOSC16M); // Always run on 16MHz crystal oscillator
- hal_clklf_set_source(HAL_CLKLF_XOSC16M_SYNTH); // Synthesize 32 KHz from 16 MHz clock
- hal_clk_regret_xosc16m_on(true); // Keep XOSC16M on in register retention
- }
-
- void io_init(void)
- {
- P0DIR &=0xf0;
- P0CON = 0x60; // P0.0 - OK NSEL
- P0CON = 0x60; // P0.1 - OK SDN
- P0CON = 0x62; // P0.2 - OK LED1
- P0CON = 0x63; // P0.3 - OK LED2
- P0DIR |=0x40;
- P0CON = 0x56; // P0.6 - OK IRQ
- P1DIR &=0xCF;
-
- P1CON = 0x64; // P1.4 - SCK
- P1CON = 0x65; // P1.5 - MOSI
- P1DIR |=0x40;
- P1CON = 0x56; // P1.5 - MOSI
- }

芯片解密