版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机驱动SI4432无线模块收发C语言程序#include #include #include #include /- RF4432配置口定义-/sbitRF4432_PAC=P2A4;/收发模式切换控制端sbitRF4432_SDO=P3A5;/SPI数据输出sbitRF4432_SDI=P3A4;/SPI数据输入sbitRF4432_SCLK=P3A7;/SPI时钟输入端口sbitRF4432_SEL=P3A3;/SPI片选sbitRF4432_IRQ=P3A2;/SI4432工作状态指示端口sbitKEY=P3A6;/BLT53A上电控制端sbitLED_GREEN=P2A1;
2、sbitP15=P1A5;/-射频芯片相关定义-#define RF4432_TxRxBuf_Len 32/定义RF4432数据包长度char RF4432_TxRxBufRF4432_TxRxBuf_Len;Packet30=9,20,30,21,15,58,56,69,25,23,12,25,56,22,23,24;/Transmit packetLength=4;Data_Buf10;Data_Len;typedef enum _RF_ENUM unsigned charunsigned charunsigned charunsigned charRF_OK = 0 x00,/funct
3、ion response parametersRF_ERROR_TIMING = 0 x01,RF_ERROR_PARAMETER = 0 x02,RF_PACKET_RECEIVED = 0 x03,RF_NO_PACKET = 0 x04,RF_CRC_ERROR = 0 x05, RF_ENUM;/-RF4432配置存放器地址-#define DEVICE_TYPE 0 x00#define EVICE_VERSION 0 x01 /版本号#define DEVICE_STATUS 0 x02 /设备状态#define INTERRUPT_STATUS_1 0 x03#define IN
4、TERRUPT_STATUS_2 0 x04#define INTERRUPT_ENABLE_1 0 x05#define INTERRUPT_ENABLE_2 0 x06#define OPERATING_FUNCTION_CONTROL_1 0 x07/#define OPERATING_FUNCTION_CONTROL_2 0 x08/#define CRYSTAL_OSCILLATOR_LOAD_CAPACITANCE 0 x09/#define MICROCONTROLLER_OUTPUT_CLOCK 0 x0A#define GPIO0_CONFIGURATION 0 x0B /G
5、PIO0 #define GPIO1CONFIGURATION 0 x0C#define GPIO2_CONFIGURATION 0 x0D#define IO_PORT_CONFIGURATION 0 x0E#define ADC_CONFIGURATION 0 x0F#define ADC_SENSOR_AMPLIFIER_OFFSET 0 x10#define ADC_VALUE 0 x11#define TEMPERATURE_SENSOR_CONTROL 0 x12/温度传感器校准#define TEMPERATURE_VALUE_OFFSET 0 x13#define WAKE_U
6、P_TIMER_PERIOD_1 0 x14#define WAKE_UP_TIMER_PERIOD_2 0 x15工作模式和功能控制1工作模式和功能控制2晶振负载电容设置功能设置存放器见英文文档第105页#define WAKE_UP_TIMER_PERIOD_3 0 x16#define WAKE_UP_TIMER_VALUE_1 0 x17#define WAKE_UP_TIMER_VALUE_2 0 x18#define LOW_DUTY_CYCLE_MODE_DURATION 0 x19#define LOW_BATTERY_DETECTOR_THRESHOLD 0 x1A /低压检
7、测阈值存放器#define BATTERY_VOLTAGE_LEVEL 0 x1B#define IF_FILTER_BANDWIDTH 0 x1C /中频滤波器带宽存放器#define AFC_LOOP_GEARSHIFT_OVERRIDE 0 x1D#define AFC_TIMING_CONTROL 0 x1E#define CLOCK_RECOVERY_GEARSHIFT_OVERRIDE 0 x1F#define CLOCK_RECOVERY_OVERSAMPLING_RATIO 0 x20#define CLOCK_RECOVERY_OFFSET_2 0 x21#define CL
8、OCK_RECOVERY_OFFSET_1 0 x22#define CLOCK_RECOVERY_OFFSET_0 0 x23#define CLOCK_RECOVERY_TIMING_LOOP_GAIN_1 0 x24#define CLOCK_RECOVERY_TIMING_LOOP_GAIN_0 0 x25#define RECEIVED_SIGNAL_STRENGTH_INDICATOR 0 x26#define RSSI_THRESHOLD_FOR_CLEAR_CHANNEL_INDICATOR 0 x27#define ANTENNA_DIVERSITY_REGISTER_1 0
9、 x28#define ANTENNA_DIVERSITY_REGISTER_2 0 x29#define DATA_ACCESS_CONTROL 0 x30#define EZMAC_STATUS 0 x31#define HEADER_CONTROL_1 0 x32 /Header起始码设置#define HEADER_CONTROL_2 0 x33#define PREAMBLE_LENGTH 0 x34/前导码长度#define PREAMBLE_DETECTION_CONTROL 0 x35/前导码检测设置#define SYNC_WORD_3 0 x36/同步字节#define S
10、YNC_W0RD_2 0 x37#define SYNC_WORD_1 0 x38#define SYNC_WORD_0 0 x39#define TRANSMIT_HEADER_3 0 x3A#define TRANSMIT_HEADER_2 0 x3B#define TRANSMIT_HEADER_1 0 x3C#define TRANSMIT_HEADER_O 0 x3D#define TRANSMIT_PACKET_LENGTH 0 x3E /发送数据包长度,#define CHECK_HEADER_3 0 x3F#define CHECK_HEADER_2 0 x40#define
11、CHECK_HEADER_1 0 x41#define CHECK_HEADER_0 0 x42#define HEADER_ENABLE_3 0 x43#define HEADER_ENABLE_2 0 x44#define HEADER_ENABLE_1 0 x45#define HEADER_ENABLE_O 0 x46#define RECEIVED_HEADER_3 0 x47#define RECEIVED_HEADER_2 0 x48#define RECEIVED_HEADER_1 0 x49#define RECEIVED_HEADER_O 0 x4A#define RECE
12、IVED_PACKET_LENGTH 0 x4B /接收数据包长度,#define ANALOG_TEST_BUS 0 x50#define DIGITAL_TEST_BUS_ENSCTEST_ 0 x51#define TX_RAMP_CONTROL 0 x52#define PLL_TUNE_TIME 0 x53/锁相环切换时间#define CALIBRATION_CONTROL 0 x55#define MODEM_TEST 0 x56#define CHARGEPUMP_TEST 0 x57#define CHARGEPUMP_CURRENT_TRIMMING_OVERRIDE0 x
13、58#define DIVIDER CURRENT TRIMMING0 x59详细请看P125 M详细请看P134 M#define MODULATIONMODECONTROL2 #defineFREQUENCY_DEVIATION 0 x72#define FREQUENCYOFFSET1 0 x73#define VCO_CURRENT_TRIMMING#define VCOCALIBRATIONOVERRIDE0 x5A0 x5B#define SYNTHESIZERTEST0 x5C#define BLOCKENABLEOVERRIDE10 x5D#define BLOCKENABLE
14、OVERRIDE20 x5E#define BLOCKENABLEOVERRIDE30 x5F#define CHANNEL_FILTER_COEFFICIENT_ADDRESS#define CHANNELFILTERCOEFFICIENTVALUE0 x600 x61#define CRYSTALOSCILLATORCONTROLTEST0 x62#define RCOSCILLATORCOARSECALIBRATIONOVERRIDE0 x63#define RCOSCILLATORFINECALIBRATIONOVERRIDE0 x64#define LDOCONTROLOVERRID
15、EENSPOR0 x65#define LDOLEVELSETTING0 x66#define DELTASIGMAADCTUNING10 x67#define DELTASIGMA_ADC_TUNING_2#define AGCOVERRIDE10 x680 x69#define AGCOVERRIDE2 0 x6A#define GFSKFIRFILTERCOEFFICIENTADDRESS0 x6B#define GFSKFIRFILTERCOEFFICIENT_VALUE发射功率设置,详细请见P153/#define TXPOWER 0 x6D /#define TX_DATA_RAT
16、E_1 0 x6E#define TXDATARATE0 0 x6F#define MODULATIONMODECONTROL10 x700 x6C数据发送波特率设置存放器1数据发送波特率设置存放器0调制方式控制,详细请见P155/#define FREQUENCY_OFFSET_2 0 x74#define FREQUENCYBANDSELECT 0 x750 x71/#define NOMINAL_CARRIER_FREQUENCY_1#define NOMINALCARRIERFREQUENCY00 x760 x77频段选择,详细请见P157/基准载波频率#define FREQUENC
17、Y_HOPPING_CHANNEL_SELECT 0 x79/跳频频道选择,详细请见P158#define FREQUENCY_HOPPING_STEP_SIZE 0 x7A /跳频频道间隔#define TX_FIFO_CONTROL_1 0 x7C#define TX_FIFO_CONTROL_2 0 x7D#define RX_FIFO_CONTROL 0 x7E#define FIFO_ACCESS 0 x7F /FIFO读写方式设置,/-RF4432控制指令-#define RR0 x00#define WR0 x80/-延时-void delay_10us(char n)int i
18、;while(n-)for(i=0;i5;i+);void delay_ms(int num)int x,y;for(y=0;ynum;y+)for(x = 0;x 500;x) x+;/-SPI单字节读取函数unsigned char SPI_Read(void)unsigned char i,rxdata; rxdata =0 x00;for (i = 0;i v 8;i+) rxdata = rxdata1:RF4432_SCLK=1;RF4432_SDO=1;if (RF4432_SDO=1)rxdata |= 0 x01;elserxdata &= -0 x01;delay_
19、10us ;RF4432_SCLK=0;delay_10us ;return rxdata;/-SPIvoid SPI_Write( unsigned charunsigned char i;for (i = 0;i v 8;i+)if (txdata&0 x80)/总是发送最高位/单字节写入函数txdata)读取最高位,保存至最末尾,通过左移位完成整个字节RF4432_SDI=1; else (RF4432_SDI=0;RF4432_SCLK=1;txdata = txdata1;RF4432_SCLK=0;/-RF4432存放器读取函数 -void RF4432_ReadReg(
20、unsigned char addr, unsigned char *RegisterData)(RF4432_SEL=0;SPI_Write(addr|RR);*RegisterData = SPI_Read();RF4432_SEL=1;/-RF4432存放器写入函数-void RF4432_WriteReg( unsigned char addr, unsigned char value)(RF4432_SEL=0;SPI_Write(addr|WR);SPI_Write(value);RF4432_SEL=1;/-RF4432存放器读取函数 -void RF4432_ReadBures
21、tReg( unsigned char addr, unsigned char *p, unsigned char count) (unsigned char i;RF4432_SEL=0;SPI_Write(addr|RR);for(i=0;icount;i+)pi = SPI_Read();RF4432_SEL=1;/-RF4432void RF4432_Init(void)unsigned char RegisterData; /unsigned int i,j;delay_ms(20);delay_ms(20);delay_ms(20);delay_ms(20);delay_ms(20
22、);delay_ms(20);射频芯片初始化函数-RF4432_ReadReg(0 x03,&RegisterData);RF4432_ReadReg(0 x04,&RegisterData);/read the Interrupt Status1 register/read the Interrupt Status2 register/SW resetRF4432_WriteReg(0 x07, 0 x80);/write 0 x80 to the Operating & Function Control1 register/wait for chip ready i
23、nterrupt from the radio (while the nIRQ pin is high)while(RF4432_IRQ);/read interrupt status registers to clear the interrupt flags and release NIRQ pinRF4432_ReadReg(0 x03, &RegisterData);RF4432_ReadReg(0 x04, &RegisterData);/*set the physical parameters*/set the center frequency to 434 MHz
24、 RF4432_WriteReg(0 x75, 0 x57);RF4432_WriteReg(0 x76, 0 x19);RF4432_WriteReg(0 x77, 0 x00);/write 0 x4E to the TXDataRate 1 register/write 0 xA5 to the TXDataRate 0 register/write 0 x2C to the Modulation Mode Control 1 register/VCO/write 0 x1F to the TX Power registeraccording to the exel calculator
25、(parameters:4.8 kbps, deviation:/write 0 x1E to the IF Filter Bandwidth register0 xE2); /write 0 xD0 to the Clock Recovery Oversampling Ratio register/write 0 x00 to the Clock Recovery Offset 2 register/write 0 x9D to the Clock Recovery Offset 1 register/write 0 x49 to the Clock Recovery Offset 0 re
26、gister0 x00);/write0 x00totheClockRecoveryTimingLoop Gain1 register0 x04);/write0 x24totheClockRecoveryTimingLoop Gain0 register/enable afc/write 0 x40 to the AFC Loop Gearshift Override register/write 0 x48 to the Frequency Deviation register/write 0 x75 to the Frequency Band Select register/write
27、0 xBB to the Nominal Carrier Frequency1 register/write 0 x80 to the Nominal Carrier Frequency。register/set the desired TX data rate (9.6kbps)RF4432_WriteReg(0 x6E, 0 x13);RF4432_WriteReg(0 x6F, 0 xA9);RF4432_WriteReg(0 x70, 0 x2C);RF4432_WriteReg(0 x58, 0 x80);/set the TX power to MAXRF4432_WriteReg
28、(0 x6D, 0 x1F);/*set the modem parametersfilter BW: 102.2 kHz*/50 kHz, channelRF4432_WriteReg(0 x1C, 0 xAD);RF4432_WriteReg(0 x20,RF4432_WriteReg(0 x21,0 x80);RF4432_WriteReg(0 x22, 0 x1A);RF4432_WriteReg(0 x23, 0 x37);RF4432_WriteReg(0 x24,RF4432_WriteReg(0 x25,RF4432_WriteReg(0 x1D, 0 x44);RF4432_
29、WriteReg(0 x1E, 0 x0A);RF4432_WriteReg(0 x2A, 0 x2C);RF4432_WriteReg(0 x1F, 0 x03);RF4432_WriteReg(0 x69, 0 x60);RF4432_WriteReg(0 x72, 0 x70);/set the preamble length to 10bytes if the antenna diversity is used and set to 5bytes if not RF4432_WriteReg(0 x34, 0 xCF);/write 0 x0C to the Preamble Leng
30、th register/set preamble detection threshold to 20bits RF4432_WriteReg(0 x35, 0 x20);/write 0 x2A to the Preamble Detection Controlregister/Disable header bytes; set variable packet length (the length of the payload is defined by the /received packet length field ofthe packet); set the synch word to
31、 two bytes long RF4432_WriteReg(0 x33, 0 x02);/Set the sync word pattern to 0 x2DD4RF4432_WriteReg(0 x36, 0 x2D); RF4432_WriteReg(0 x37,0 xD4);/set Crystal Oscillator Load Capacitance register RF4432_WriteReg(0 x09, 0 x7F);/write 0 xD7 to the Crystal Oscillator LoadCapacitance registerRF4432_WriteRe
32、g(0 x73,0 x00);RF4432_WriteReg(0 x74,0 x00);/write 0 x02 to the Header Control2 register/write 0 x2D to the Sync Word 3 register/write 0 xD4 to the Sync Word 2 register/enable the TX & RX packet handler and CRC-16 (IBM) checkRF4432_WriteReg(0 x30, 0 x8D);/Disable the receive header filters RF443
33、2_WriteReg(0 x32, 0 x00 );/enable FIFO mode and GFSK modulation RF4432_WriteReg(0 x71, 0 x2B);/*set the GPIOs according the testcard type*/ RF4432_WriteReg(0 x0B,0 x0A); RF4432_WriteReg(0 x0C, 0 x0A);/set the AGCRF4432_WriteReg(0 x69, 0 x35);/set ADC reference voltage to 0.9V RF4432_WriteReg(0 x68,
34、0 x07);/write 0 x8D to the Data Access Control register/write 0 x00 to the Header Control1 register/write 0 x63 to the Modulation Mode Control 2 register/write 0 x12 to the GPIO0 Configuration(set the TX state)/write 0 x15 to the GPIO1 Configuration(set the RX state)/write 0 x0B to the AGC Override
35、2 register/write 0 x04 to the Deltasigma ADC Tuning 2 register/TxFIFOReset();R F4432_Write Reg (0 x08, 0 x01);R F4432_Write Reg (0 x08, 0 x00);/RxFIFOReset();R F4432_Write Reg (0 x08, 0 x02);R F4432_Write Reg (0 x08, 0 x00);/- RF4432void RF4432_SetRxMode(void)unsigned char RegisterData;RF4432_WriteR
36、eg(0 x0E, 0 x02);/enable the packet valid interruptRF4432_WriteReg(0 x05, OxFF);R F4432_Write Reg (0 x06, 0 x00);RF4432_ReadReg(0 x03, &RegisterData);RF4432_ReadReg(0 x04, &RegisterData); /enablereceiver chainR F4432_Write Reg (0 x07, 0 x05);/-RF4432unsigned char RF4432_RxPacket(void)unsigne
37、d char temp;RF4432_IRQ=1;if(!RF4432_IRQ)RF4432_ReadReg(INTERRUPT_STATUS_1,&temp);设置接收模式函数/Rx_EN;数据包接收函数if(temp&0 x02)return 1;return 0;void RFIdle(void)unsigned char RegisterData;RF4432_WriteReg(0 x07, 0 x01);/diasble all ITsR F4432_Write Reg (0 x05, 0 x00);R F4432_Write Reg (0 x06, 0 x00);R
38、F4432_ReadReg(0 x03, &RegisterData);RF4432_ReadReg(0 x04, &RegisterData);void RFTransmit( unsigned char * packet, unsigned char unsigned chartemp;unsigned charRegisterData;RF4432_WriteReg(0 x0E, 0 x01);/Tx_EN;RF4432_WriteReg(0 x3e, length);for(temp=0;templength;temp+)RF4432_WriteReg(0 x7f,pa
39、ckettemp);/enable the wanted ITsR F4432_Write Reg (0 x05, 0 x04);R F4432_Write Reg (0 x06, 0 x00);length)RF4432_ReadReg(0 x03, &RegisterData);RF4432_ReadReg(0 x04, &RegisterData);/enable transmitterRF4432_WriteReg(0 x07, 0 x09);while(RF4432_IRQ);/while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);RF4432_ReadReg(0 x03, &RegisterData);RF4432_ReadReg(0 x04, &RegisterData);RF_ENUM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度机械设备制造修理人员真题附完整答案详解(典优)
- 2024-2025学年唐山工业职业技术学院单招《数学》题库及参考答案详解(新)
- 2024-2025学年度临床执业医师能力提升B卷题库及完整答案详解(考点梳理)
- 2024-2025学年度反射疗法师大赛理论自我提分评估带答案详解(能力提升)
- 2024-2025学年医师定期考核高分题库附答案详解(综合题)
- 2024-2025学年度中医执业医师检测卷及完整答案详解(易错题)
- 2024-2025学年度医学检验(士)能力检测试卷【重点】附答案详解
- 2024-2025学年度冶金工业技能鉴定能力提升B卷题库及答案详解(夺冠)
- 2024-2025学年度医学检验(士)过关检测试卷含完整答案详解(典优)
- 2024-2025学年度医院三基考试试题及参考答案详解【模拟题】
- 排球基础理论 【核心知识精讲精析】 高一上学期体育与健康人教版必修第一册
- 医院课件:《规范医疗服务收费行为培训》
- 《国际共产主义运动史》课程教学大纲
- YY/T 1836-2021呼吸道病毒多重核酸检测试剂盒
- GB/T 32291-2015高压超高压安全阀离线校验与评定
- 煤矿掘进顶板管理
- 邹申写作教程Units-课件
- 三甲医院设备科招聘考试试题最新测试题含答案
- 教科版二年级科学下册 《磁铁能吸引什么》 教学课件下载
- 建筑装饰工程计量与计价试题一及答案
- 防水瓦楞纸板工艺
评论
0/150
提交评论