打印

PIC与CC1100

[复制链接]
1510|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangyongyi|  楼主 | 2013-9-8 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有谁弄过CC1100啊,我调试了好久就是调试不出来,发现很多问题,其中我通过SPI写寄存器后,再去读寄存器的值,CC1100的数据输出引脚MISO就是没有任何波形,程序如下:
#define HF_MISO LATAbits.LATA2
#define HF_SCLK LATAbits.LATA3
#define HF_MOSI LATAbits.LATA5
#define HF_CSn  LATAbits.LATA1
#define HF_GDO0 LATBbits.LATB0
#define HF_GDO2 LATBbits.LATB1
#define LED     LATCbits.LATC0
void CC1100_PORT_Init(void)
{
    ADCON1=0x0f;
    TRISAbits.TRISA3=0;
    TRISAbits.TRISA1=0;
    TRISAbits.TRISA5=0;
    TRISAbits.TRISA2=1;
    INTCON2bits.RBPU=0;
    TRISBbits.TRISB1=1;
    TRISBbits.TRISB0=1;
    TRISCbits.TRISC0=0;
    HF_MISO=0;
}
SPI发送一个字节
void Send_Data(INT8U data)
{
  INT8U sa;
  HF_SCLK =0;
  Delay(CLK_T);
  for(sa=0;sa<8;sa++)
   {
     if((data&0x80)!=0)
        HF_MOSI = 1;
     else
        HF_MOSI = 0;
     data <<= 1;
     HF_SCLK =1;
     Delay(CLK_T);
     HF_SCLK =0;
     Delay(CLK_T);
   }
}
SPI读一个字节
INT8U Rec_Data()
{
  INT8U sa,sb;
  sb=0;
  Delay(CLK_T);
  for(sa=0;sa<8;sa++)
   {
     HF_SCLK =1;
     Delay(CLK_T);
     sb <<= 1;
     if(HF_MISO==1)
        sb += 1;
     HF_SCLK =0;
     Delay(CLK_T);
   }
   return(sb);
}
主函数
void main()
{
  CC1100_PORT_Init();
  Delay(CLK_T2);
  RESET_CC1100();
  CC1100_SpiWriteReg(0x13,0x55);
  CC1100_SpiWriteReg(CC1100_DEVIATN,0x42);
  Read_Reg(0x13);
}
我想测试一下有没有值写入寄存器,然后把写入寄存器的值读出来,MOSI引脚有值,能够写寄存器,就是不能读寄存器,有没有哪位高手帮我解决啊!
沙发
zhangyongyi|  楼主 | 2013-9-9 09:49 | 只看该作者
void CC1100_SpiWriteReg(INT8U addr, INT8U value)
{
    HF_CSn=0;
    Delay(CLK_T);
    Send_Data(addr);  //???
   Delay(CLK_T);
    Send_Data(value);  //????
    HF_CSn=1;
}这是写寄存器
INT8U  Read_Reg(INT8U  addr)
{
INT8U  temp, value;
   temp = addr|READ_SINGLE;//??????
HF_CSn=0;
Delay(CLK_T);
Send_Data(temp);
Delay(CLK_T);
value = Rec_Data(0);
LED=0;
HF_CSn=1;
return(value);
}
这是读寄存器,麻烦高手们帮我看看问题在哪儿啊!

使用特权

评论回复
板凳
yewuyi| | 2013-9-9 09:53 | 只看该作者
你应该到TI网站去找CC1101的范例代码学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

18

帖子

0

粉丝