CC1101接口库在STM32上的移植
_ReadInputDataBit(TI_CC_SPI_USCIA0_GPIO, TI_CC_SPI_USCIA0_SOMI)!= RESET)
{
;
}
// Send address
SPI_I2S_SendData(SPI1, (uint16_t)(addr | TI_CCxxx0_READ_BURST));
// Wait for TXBUF ready
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
//虚拟的接收数据,用来清空接收寄存器
x = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
// Dummy write to read 1st data byte
SPI_I2S_SendData(SPI1, (uint16_t)0xff);//发送数据通过SPI1
// Addr byte is now being TXed, with dummy byte to follow immediately after
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
x = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
// First data byte now in RXBUF
for (i = 0; i < (count-1); i++)
{
//UCA0TXBUF = 0; //Initiate next data RX, meanwhile.&$$$$$.
SPI_I2S_SendData(SPI1, (uint16_t)0);//发送数据通过SPI1
// Store data from last data RX
buffer[i] = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
}
// Store last RX byte in buffer
buffer[count-1]= SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_SET); // CS disable
}
////////////////////////////////////////////////////////////////////////////////
// 程序名 : char TI_CC_SPIReadStatus(char addr)
// 作用 : 从状态寄存器中读数,寄存器地址:"addr"
// 输入参数:char addr :指向的状态寄存器地址
// 输出参数:char :状态寄存器的值
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
char TI_CC_SPIReadStatus(char addr)
{
char x;
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_RESET); // /CS enable
//Wait for CCxxxx ready
while(GPIO_ReadInputDataBit(TI_CC_SPI_USCIA0_GPIO, TI_CC_SPI_USCIA0_SOMI)!= RESET)
{
;
}
// Send address
SPI_I2S_SendData(SPI1, (uint16_t)(addr | TI_CCxxx0_READ_BURST));//发送数据通过SPI1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
// Dummy write so we can read data
x = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
SPI_I2S_SendData(SPI1, (uint16_t)0xff);//发送数据通过SPI1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
// Read data
x = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_SET); // CS disable
return x;
}
////////////////////////////////////////////////////////////////////////////////
// 程序名 : void TI_CC_SPIStrobe(char strobe)
// 作用 : 向命令寄存器写数,写入的值"strobe"
// 输入参数:char strobe :要写入的值
// 输出参数:无
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
void TI_CC_SPIStrobe(char strobe)
{
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_RESET); //CS enable
// Wait for CCxxxx ready
while(GPIO_ReadInputDataBit(TI_CC_SPI_USCIA0_GPIO, TI_CC_SPI_USCIA0_SOMI)!= RESET)
{
;
}
// Send strobe
SPI_I2S_SendData(SPI1, (uint16_t)strobe);//发送数据通过SPI1
// Strobe addr is now being TXed
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_SET); //CS disable
}
////////////////////////////////////////////////////////////////////////////////
// 程序名 : void TI_CC_PowerupResetCCxxxx(void)
// 作用 : 硬复位CC芯片
// 输入参数:无
// 输出参数:无
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
void TI_CC_PowerupResetCCxxxx(void)
{
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_SET); // CS disable
TI_CC_Wait(30);
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_RESET); //CS
CC1101接口库STM32移 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)