有谁弄过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引脚有值,能够写寄存器,就是不能读寄存器,有没有哪位高手帮我解决啊! |