1、电源掉电导致寄存器数据丢失。CC1101内部的寄存器保存了芯片的配置信息,如果电源掉电或者复位,寄存器中的数据会丢失,芯片会重新恢复到出厂默认状态,需要重新进行配置。
2、软件复位导致寄存器数据丢失。如果在使用CC1101时,程序异常退出或者进行软件复位,也会导致寄存器中的数据丢失,需要重新进行配置。
3、芯片工作温度变化导致寄存器数据丢失。如果CC1101在工作过程中遇到温度变化,也会导致寄存器中的数据丢失,需要重新进行配置。
单片机型号:STM8S003,CC1101。如下为CC1101的IO口配置:
GPIO_Init(GPIOD,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //发送灯指示
GPIO_Init(GPIOD,(GPIO_PIN_4),GPIO_MODE_OUT_PP_LOW_FAST ) //CC1100_csn
GPIO_Init(GPIOC,(GPIO_PIN_5),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_sck
GPIO_Init(GPIOC,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_si
GPIO_Init(GPIOC,(GPIO_PIN_7),GPIO_MODE_IN_PU_NO_IT ) //CC1100_SO
GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT)//GOD0可以设置成浮空输入,保证CC1101掉电模式的低功耗
GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT)//GOD2
如下为单片机的SPI配置:
如下为CC1101的各个函数:*******************************************************************************
函数功能:SPI写命令
*******************************************************************************/
void halSpiStrobe(u8 strobe)
{
CSN_L
while (Read_MISO())
SPI_SendData(strobe) //写入命令
while (!(SPI->SR&0x02))
CSN_H
}
/*******************************************************************************
函数功能:写寄存器
*******************************************************************************/
void halRfWriteReg(u8 addr, u8 value)
{
CSN_L
while (Read_MISO())
SPI_SendData(addr)
while (!(SPI->SR&0x02))
SPI_SendData(value)
while (!(SPI->SR&0x02))
CSN_H
}
/*******************************************************************************
函数功能:SPI连续写配置寄存器
*******************************************************************************/
void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count)
{
u8 i, temp
temp = addr | WRITE_BURST
CSN_L
while (Read_MISO())
SPI_SendData(temp)
while (!(SPI->SR&0x02)) //等待缓存区为空
for (i = 0i <counti++)
{
SPI_SendData(buffer)
while (!(SPI->SR&0x02)) //等待缓存区为空
}
CSN_H
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)