微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Si4432无线芯片调试经验分享

Si4432无线芯片调试经验分享

时间:08-16 来源:互联网 点击:

和19h中的值),在确认没有数据/收完数据后再返回到原来的idle子状态。

用普通51单片机 IO 口模拟SPI:

SPI读操作函数:

unsigned char SPI_Read(void){unsigned char i,rxdata;rxdata = 0x00;for (i = 0;i  8;i++){rxdata = rxdata1;RF4432_SCLK=0;if (RF4432_SDO==1)  //读取最高位,保存至最末尾,通过左移位完成整个字节{rxdata |= 0x01;}delay_10us(2);  RF4432_SCLK=1;delay_10us(2);  }return rxdata;}SPI写操作函数:void SPI_Write(unsigned char txdata){unsigned char i;for (i = 0;i  8;i++){RF4432_SCLK=0;if ((txdata0x80)==0x80)    //总是发送最高位{RF4432_SDI=1;}else{RF4432_SDI=0;}txdata = txdata1;delay_10us(2);  RF4432_SCLK=1;delay_10us(2);  }}RF4432 寄存器读操作函数:unsigned char  RF4432_ReadReg(unsigned char  addr){unsigned char value;RF4432_SEL=0;                 SPI_Write(addr|RR);     value = SPI_Read();         RF4432_SEL=1;        return value;}RF4432 寄存器写操作函数:void  RF4432_WriteReg(unsigned char  addr, unsigned char value){RF4432_SEL=0;                 SPI_Write(addr|WR);     SPI_Write(value);         RF4432_SEL=1;                }SI4432寄存器定义:#define DEVICE_TYPE                                     0x00#define DEVICE_VERSION                             0x01   //版本号……参考附件。


RF4432 射频芯片初始化函数,RF4432 设置接收模式函数, RF4432 数据包接收函数, RF4432 数据包发送函数等。参考文档:si4432模块使用手册.pdf。这些附件我整理了一个压缩包http://www.51hei.com/f/452de.rar大家可以去下载.

网上搜到的程序代码以及官方提供的代码大都是基于Silicon Labs的c8051f单片机的,虽然都是51核的,但编程环境以及运行速度都是不一样的,不能直接拿来在普通51上运行,得稍作修改。目前完成了基于普通51单片机的三份代码修改。一份是官方的,一份是买模块时送的,一份是网上找来的。网上还有一份基于pic单片机的源码,但看了后感觉跟官方的差不多,没去修改。修改后在51开发板上可以运行了。但是其中一个模块不能工作,没法看到效果。具体能否接收还不确定。因此,也就停留在了这个地方。可以通过串口观察到一些信息,比如初始化完成后产生低电平的NIRQ中断,以及发送完成后也产生低电平的NIRQ中断,程序片段

RF4432_Init()

{

……

while ( RF4432_IRQ== 1); //等待软复位完成,当软复位完成后有中断发生

…….

}

UART_Send_Str("RF芯片si4432初始化完毕....\n");//串口发送调试信息

正常初始化完毕后通过串口会看到语句“RF芯片si4432初始化完毕....”,否则停留在while ( RF4432_IRQ== 1); 看不到串口输出的信息。但只有一个模块发送,一个模块接收,观察到接收模块收到了数据才能证明调试是没问题的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top