社区导航

 
查看: 11088|回复: 18

[LaunchPad学习心得]+CC1101无线传输

[复制链接]

522

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2012-6-26 12:36:59 | 显示全部楼层 |阅读模式

MSP430g2553实现CC1101无线通讯。

最近有个项目,使用CC1101无线传输控制,刚开始做使用MEGA8实现,当晚也没有考虑功耗的问题,但最后项目要求用电池供电,这就出现问题了。无线在发射时的系统的整个功耗在16ma左右,这样一算,不论实用什么电池也不能实现一个月的工作时间。但是要实现,就要一步一步的调试。第一部做的是把MEGA8的供电降到3.3V, 这样的系统的功耗能够降低一半,但是总的时间还是不能实现;第二部把系统的DC/DC稳压片替换成低电流输出、低功耗的稳压电源。这样两步下来,系统功耗降到8ma,可惜的还是不能实现。再进一步,让无线间隔性工作,工作30S,停30S。这样功耗又进一步下降,但是用电池供电的话,只能维持10天左右,要想实现30天,不太可能啊。

拿到LaunchPad后,第一想到是将代码移植到上面,看看系统的功耗。今天上午很容易移植成功了,一没功耗,让我看到了希望,在没有采取任何降低功耗的措施下,系统的功耗是4ma,无线一直在工作状态。太好,如果采取功耗设计,我想一定能够实现项目要求,期待能够调试出更低的功耗。下面上几个图:

2012-06-26_11-03-58_844.jpg

         整个系统,一个发射,一个接收。

2012-06-26_11-03-45_300.jpg

系统功耗,3.98ma.

程序代码也上来,没有采取任何功耗管理。

#include<msp430g2553.h>

#include "rfsend.h"

void main(void)

{

  INT8U leng = 4;        // 8字节, 如果需要更长的数据包,请正确设置

  unsigned char i = 100;

  //unsigned char error_count = 0;

  INT8U TxBuf[4]={0x01,0x80,0x00,0x80};

        //{ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,

          //0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,

        //};            

        

 

   RF1100_IO_set();

   POWER_UP_RESET_CC1100();

   halRfWriteRfSettings();

   halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);

        

    while(1)

        {

          //if(TxBuf[2]) halRfSendPacket(TxBuf,leng);         // TXUBF中数据 循环发送出去

        

          if(i<209) i++;

              else i = 10;                       

          TxBuf[2] = i;                  //数据左对齐,只取高8

           halRfSendPacket(TxBuf,leng);

           delay(10);        

        }

}

无线程序

#include "rfsend.h"


//******************************************************************************

//*****更多功率参数设置可详细参考DATACC1100英文文档中第48-49页的参数表**********

//INT8U PaTabel[8] = {0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04};  //-30dBm   功率最小

INT8U PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};  //0dBm

//INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};   //10dBm     功率最大

//=======================定义RF1100-1101寄存器结构体数组 =================================

typedef struct S_RF_SETTINGS

{

    INT8U FSCTRL2;

    INT8U FSCTRL1;   // Frequency synthesizer control.

    INT8U FSCTRL0;   // Frequency synthesizer control.

    INT8U FREQ2;     // Frequency control word, high INT8U.

    INT8U FREQ1;     // Frequency control word, middle INT8U.

    INT8U FREQ0;     // Frequency control word, low INT8U.

    INT8U MDMCFG4;   // Modem configuration.

    INT8U MDMCFG3;   // Modem configuration.

    INT8U MDMCFG2;   // Modem configuration.

    INT8U MDMCFG1;   // Modem configuration.

    INT8U MDMCFG0;   // Modem configuration.

    INT8U CHANNR;    // Channel number.

    INT8U DEVIATN;   // Modem deviation setting (when FSK modulation is enabled).

    INT8U FREND1;    // Front end RX configuration.

    INT8U FREND0;    // Front end RX configuration.

    INT8U MCSM0;     // Main Radio Control State Machine configuration.

    INT8U FOCCFG;    // Frequency Offset Compensation Configuration.

    INT8U BSCFG;     // Bit synchronization Configuration.

    INT8U AGCCTRL2;  // AGC control.

    INT8U AGCCTRL1;  // AGC control.

    INT8U AGCCTRL0;  // AGC control.

    INT8U FSCAL3;    // Frequency synthesizer calibration.

    INT8U FSCAL2;    // Frequency synthesizer calibration.

    INT8U FSCAL1;    // Frequency synthesizer calibration.

    INT8U FSCAL0;    // Frequency synthesizer calibration.

    INT8U FSTEST;    // Frequency synthesizer calibration control

    INT8U TEST2;     // Various test settings.

    INT8U TEST1;     // Various test settings.

    INT8U TEST0;     // Various test settings.

    INT8U IOCFG2;    // GDO2 output pin configuration

    INT8U IOCFG0;    // GDO0 output pin configuration

    INT8U PKTCTRL1;  // Packet automation control.

    INT8U PKTCTRL0;  // Packet automation control.

    INT8U ADDR;      // Device address.

    INT8U PKTLEN;    // Packet length.

} RF_SETTINGS;

//==========================CC1100-1101寄存器配置===============================

const RF_SETTINGS rfSettings = 

{

    0x00,

    0x08,   // FSCTRL1   Frequency synthesizer control.

    0x00,   // FSCTRL0   Frequency synthesizer control.

    0x10,   // FREQ2     Frequency control word, high byte.

    0xA7,   // FREQ1     Frequency control word, middle byte.

    0x62,   // FREQ0     Frequency control word, low byte.

    0x5B,   // MDMCFG4   Modem configuration.

    0xF8,   // MDMCFG3   Modem configuration.

    0x03,   // MDMCFG2   Modem configuration.

    0x22,   // MDMCFG1   Modem configuration.

    0xF8,   // MDMCFG0   Modem configuration.


    0x00,   // CHANNR    Channel number.

    0x47,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).

    0xB6,   // FREND1    Front end RX configuration.

    0x10,   // FREND0    Front end RX configuration.

    0x18,   // MCSM0     Main Radio Control State Machine configuration.

    0x1D,   // FOCCFG    Frequency Offset Compensation Configuration.

    0x1C,   // BSCFG     Bit synchronization Configuration.

    0xC7,   // AGCCTRL2  AGC control.

    0x00,   // AGCCTRL1  AGC control.

    0xB2,   // AGCCTRL0  AGC control.


    0xEA,   // FSCAL3    Frequency synthesizer calibration.

    0x2A,   // FSCAL2    Frequency synthesizer calibration.

    0x00,   // FSCAL1    Frequency synthesizer calibration.

    0x11,   // FSCAL0    Frequency synthesizer calibration.

    0x59,   // FSTEST    Frequency synthesizer calibration.

    0x81,   // TEST2     Various test settings.

    0x35,   // TEST1     Various test settings.

    0x09,   // TEST0     Various test settings.

    0x0B,   // IOCFG2    GDO2 output pin configuration.

    0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.


    0x0e,   // PKTCTRL1  Packet automation control.使能地址过滤

    0x05,   // PKTCTRL0  Packet automation control.

    0x01,   // ADDR      Device address.

    0xff    // PKTLEN    Packet length.最大

};


//******************************SPI状态初始化***********************************


void SpiInit(void)

{

    //P5DIR |= 0xC0; P5DIR |= 0xFB;   P5SEL&=0xF0;

//DDRB |= BIT(PB0) | BIT(PB3) | BIT(PB2) & ~BIT(PB1) & ~BIT(PB4);   

}

 

//==============================================================================


void RF1100_IO_set(void)

{

     //SpiInit();

     P1DIR |= 0X58;

//PORTD |= BIT(PD0) | BIT(PD3);  


}


//==============================================================================

//******************************************************************************

//函数名:delay(unsigned int s)

//输入:时间

//输出:无

//功能描述:普通廷时,内部用

//******************************************************************************

void delay(unsigned int s)

{

unsigned int i;

for(i=0; i<s; i++);

for(i=0; i<s; i++);

}

//========================延时约5ms=============================================


void Delay5ms(void)

    INT16U i=40000;

    while (i != 0)

    {

        i--;

//ResetWDT();

    }

//******************************************************************************

void halWait(INT16U timeout)

{

char i;

    do 

    {

       for(i=0; i<20; i++);

    } while (--timeout);

}

//******************************************************************************

//函数名:SpisendByte(INT8U dat)

//输入:发送的数据

//输出:无

//功能描述:SPI发送一个字节

//******************************************************************************

INT8U SpiTxRxByte(INT8U dat)

{

//----------------------以下是模拟SPI时序方式-----------------------------------

INT8U i,temp;

temp = 0;

SCK_0 ;

for(i=0; i<8; i++)

{

if(dat & 0x80)

{

          MOSI_1;

}

else 

{

  MOSI_0;

}

dat <<= 1;

       SCK_1; 

temp <<= 1;

//a=Read_CC1100_MISO;  //读取MISO状态

//if(P3IN& 0x04)temp++;

if(P1IN & 0x20) temp++; 

SCK_0 ;

}

return temp;

}

//*******************************************************************************

//函数名:void RESET_CC1100(void)

//输入:无

//输出:无

//功能描述:复位CC1100

//*****************************************************************************************

unsigned char RESET_CC1100(void) 

{   

    unsigned char j = 0;

    CSN_0 ; 

//while(MISO);

    do{

         j++;

if(200 == j) {j = 0; return MISO_ERROR;}  

       }while(P1IN & 0x20);

    SpiTxRxByte(CCxxx0_SRES); //写入复位命令

do

{

j++;

if(200 == j) {j = 0; return MISO_ERROR;}  

}while(P1IN & 0x20);

//while(MISO); 

    CSN_1; 

return 0;

}

//*****************************************************************************************

//函数名:void POWER_UP_RESET_CC1100(void) 

//输入:无

//输出:无

//功能描述:上电复位CC1100

//*****************************************************************************************

void POWER_UP_RESET_CC1100(void) 

{

CSN_1; 

halWait(1); 

CSN_0 ; 

halWait(1); 

CSN_1; 

halWait(41); 

RESET_CC1100();   //复位CC1100

}

//*****************************************************************************************

//函数名:void halSpiWriteReg(INT8U addr, INT8U value)

//输入:地址和配置字

//输出:无

//功能描述:SPI写寄存器

//*****************************************************************************************

void halSpiWriteReg(INT8U addr, INT8U value) 

{

    unsigned char j = 0;

    CSN_0;

    //while (P5IN& 0x04);

//while(MISO);

do

{

j++;

if(200 == j) return;

}while(P1IN & 0x20);

    SpiTxRxByte(addr); //写地址

    SpiTxRxByte(value); //写入配置

    CSN_1;

}

//*****************************************************************************************

//函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)

//输入:地址,写入缓冲区,写入个数

//输出:无

//功能描述:SPI连续写配置寄存器

//*****************************************************************************************

void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 

{

    unsigned char j = 0;

    INT8U i, temp;

temp = addr | WRITE_BURST;

    CSN_0;

    //while (P5IN & 0x04);

//while(MISO);

do

{

j++;

if(200 == j) return; 

}while(P1IN & 0x20);;

    SpiTxRxByte(temp);

    for (i = 0; i < count; i++)

  {

        SpiTxRxByte(buffer);

    }

    CSN_1;

}

//*****************************************************************************************

//函数名:void halSpiStrobe(INT8U strobe)

//输入:命令

//输出:无

//功能描述:SPI写命令

//*****************************************************************************************

void halSpiStrobe(INT8U strobe) 

{   

    unsigned char j = 0;

    CSN_0;

    //while (P5IN & 0x04);

//while(MISO);

do

{

j++;

if(200 == j) return;

}while(P1IN & 0x20);

    SpiTxRxByte(strobe); //写入命令

    CSN_1;

}

//*****************************************************************************************

//函数名:INT8U halSpiReadReg(INT8U addr)

//输入:地址

//输出:该寄存器的配置字

//功能描述:SPI读寄存器

//*****************************************************************************************

INT8U halSpiReadReg(INT8U addr) 

{   

    unsigned char j = 0;

    INT8U temp, value;

    temp = addr|READ_SINGLE;//读寄存器命令

    CSN_0;

//while (P5IN & 0x04);

//while(MISO);

    do

      {

       j++;

       if(j == 200) return MISO_ERROR;

      }while(P1IN & 0x20);

      SpiTxRxByte(temp);

      value = SpiTxRxByte(0);

      CSN_1;

      return value;

}

//*****************************************************************************************

//函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)

//输入:地址,读出数据后暂存的缓冲区,读出配置个数

//输出:无

//功能描述:SPI连续写配置寄存器

//*****************************************************************************************

void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 

{  

    unsigned char j = 0;

    INT8U i,temp;

temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令

    CSN_0;

   // while (P5IN & 0x04);

   //while(MISO);

    do

{

j++;

if(200 == j) return;

}while(P1IN & 0x20);

SpiTxRxByte(temp);   

    for (i = 0; i < count; i++) 

{

        buffer = SpiTxRxByte(0);

        }

    CSN_1;

}

//*****************************************************************************************

//函数名:INT8U halSpiReadReg(INT8U addr)

//输入:地址

//输出:该状态寄存器当前值

//功能描述:SPI读状态寄存器

//*****************************************************************************************

INT8U halSpiReadStatus(INT8U addr) 

{   

    unsigned char j = 0;

    INT8U value,temp;

temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令

    CSN_0;

    //while (P5IN & 0x04);

//while(MISO);

do

{

j++;

if(200 == j) return MISO_ERROR;

}while(P1IN & 0x20);

    SpiTxRxByte(temp);

    value = SpiTxRxByte(0);

    CSN_1;

    return value;

}

//*****************************************************************************************

//函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)

//输入:无

//输出:无

//功能描述:配置CC1100的寄存器

//*****************************************************************************************

void halRfWriteRfSettings(void) 

{

    //halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的

    // Write register settings

    halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);

    halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);

    halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);

    halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);

    halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);

    halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);

    halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);

    halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);

    halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);

    halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);

    halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);

    halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);

    halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);

    halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);

    halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );

    halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);

    halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);

    halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);

    halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);

    halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);

    halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);

    halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);

    halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);

    halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);

    halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);

    halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);

    halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);

    halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);

    halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);

    halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    

    halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);

    halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);

    halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);

    halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);

}

//*****************************************************************************************

//函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)

//输入:发送的缓冲区,发送数据个数

//输出:无

//功能描述:CC1100发送一组数据

//*****************************************************************************************


void halRfSendPacket(INT8U *txBuffer, INT8U size) 

{   

    halSpiStrobe(CCxxx0_SIDLE);        //强制进入空闲状态

delay(2);                          //等待数据全部发送完成

    halSpiWriteReg(CCxxx0_TXFIFO, size);//写入缓冲地址,发送数据个数

    halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据

    halSpiStrobe(CCxxx0_STX);    //进入发送模式发送数据

    // Wait for GDO0 to be set -> sync transmitted

//while(!GDO0);

while(!(P1IN & 0X80));

    // Wait for GDO0 to be cleared -> end of packet

//while(GDO0);

while(P1IN & 0X80);

halSpiStrobe(CCxxx0_SFTX);//清空TXFIFO缓冲区

delay(4);

halSpiStrobe(CCxxx0_SIDLE);//强制进入空闲状态

}

//------------------------------------------------------------------------------

/*

void setRxMode(void)

{

    halSpiStrobe(CCxxx0_SRX); //进入接收状态

}

*/

//------------------------------------------------------------------------------


INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length) 

{   

    //unsigned char j = 0;

    INT8U status[2];

    INT8U packetLength;

INT8U i=(*length)*4;  // 具体多少要根据datarate和length来决定

    halSpiStrobe(CCxxx0_SRX); //进入接收状态

//while(!GDO0);

//while(!(PINB & BIT(PB4)));

delay(2);

//while (P2IN & 0x80)

while(P1IN & 0X80);

{

delay(2);

--i;

if(i<1)

  return 0;    

}  

    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0

{

        packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度

        if (packetLength <= *length) //如果所要的有效数据长度小于等于接收到的数据包的长度

{

            halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据

            *length = packetLength; //把接收数据长度的修改为当前数据的长度

            // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)

            halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位

halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区

            return (status[1] & CRC_OK); //如果校验成功返回接收成功

        }

else 

{

            *length = packetLength;

            halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区

            return 0;

        }

    } 

else

  return 0;

}


//=============================================================================



CC1101原理图实验代码.pdf (145.43 KB, 下载次数: 399)

点评

#include\"rfsend.h\"这个引用文件怎么找不到  详情 回复 发表于 2012-7-18 10:04

评分

1

查看全部评分


回复

使用道具 举报

6565

TA的帖子

175

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2012-6-26 14:57:18 | 显示全部楼层
系统的功耗是4ma 是用万用表测量的什么? 请教下

点评

供电的电流大小呗,把万用表调到电流档,串接到供电的VCC一路中,注意万用表的正负极最好别接反了。 [ 本帖最后由 鑫海宝贝 于 2012-6-26 16:33 编辑 ]  详情 回复 发表于 2012-6-26 16:31

回复 支持 反对

使用道具 举报

4449

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2012-6-26 16:31:57 | 显示全部楼层

回复 沙发 常见泽1 的帖子

供电的电流大小呗,把万用表调到电流档,串接到供电的VCC一路中,注意万用表的正负极最好别接反了。

[ 本帖最后由 鑫海宝贝 于 2012-6-26 16:33 编辑 ]

回复 支持 反对

使用道具 举报

522

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

 楼主| 发表于 2012-6-26 16:36:25 | 显示全部楼层
是的。注意别接反了就行。如果接反了,万用表里面有个保险丝,电流大的话就把保险丝烧了,万用表不会有事的。

点评

我也想试试,楼主可否把接线图发给我一下呢?  详情 回复 发表于 2012-6-28 10:28

回复 支持 反对

使用道具 举报

1776

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2012-6-28 10:28:18 | 显示全部楼层

回复 4楼 billjing 的帖子

我也想试试,楼主可否把接线图发给我一下呢?

回复 支持 反对

使用道具 举报

107

TA的帖子

120

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-6-28 11:50:36 | 显示全部楼层
这个很不错 想玩

回复 支持 反对

使用道具 举报

1006

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2012-6-28 12:09:45 | 显示全部楼层
上个附件比较好,有个PDF的说明也不错

回复 支持 反对

使用道具 举报

1776

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2012-6-28 14:42:33 | 显示全部楼层
有心分享的话,请整理一下吧!
这个资料应该很多人想要的!!

回复 支持 反对

使用道具 举报

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-6 10:32:05 | 显示全部楼层
楼主啊 我按照你的方法 发送 但是接受端是没有反应的啊 你的接受端 是怎么弄的啊 ~~~~还有为什么要模拟spi时序呢?不用寄存器啊~~~
求交流 QQ 690185122

回复 支持 反对

使用道具 举报

522

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

 楼主| 发表于 2012-7-6 11:52:01 | 显示全部楼层
接收端也是一样。用接收程序就行了。不过我程序里设置了地址滤波,这个你要注意一下。采用的是时序的模拟,考虑到在51上移植的方便~~

回复 支持 反对

使用道具 举报

71

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-18 10:04:16 | 显示全部楼层

回复 楼主 billjing 的帖子

#include"rfsend.h"这个引用文件怎么找不到

回复 支持 反对

使用道具 举报

16

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-18 17:14:08 | 显示全部楼层

不错


回复 支持 反对

使用道具 举报

522

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

 楼主| 发表于 2012-7-18 18:58:03 | 显示全部楼层
在PDF文档中有,第一个就是~~~

回复 支持 反对

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-27 16:48:00 | 显示全部楼层
楼主   能不能指教一下我   我的毕业设计要用这个   你能不能把你的代码详细的发给我

求指教
QQ961036911   
可以发我邮箱   谢谢先

回复 支持 反对

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-11-5 19:42:04 | 显示全部楼层
LZ 能把你的代码发过来参考下吗?我最近也在弄,但是2553和51单片机相互通不了信息,想参考下你的,邮箱747923860@qq.com,谢谢!

回复 支持 反对

使用道具 举报

80

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2012-11-11 20:31:01 | 显示全部楼层

回复 支持 反对

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-3-11 09:36:46 | 显示全部楼层
楼主强大,我现在也在学launchpad+cc1100,很有用

回复 支持 反对

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-3-11 17:07:40 | 显示全部楼层
楼主上面的程序有个小错误。在 halSpiWriteBurstReg()函数里的buffer应该改为buffer[i]

回复 支持 反对

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-3-22 19:11:56 | 显示全部楼层
楼主,我也正在做这个东西,看了你发的真是太感动了,能问你一些问题吗

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-7-25 02:37 , Processed in 0.578037 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表