CC1101接口库在STM32上的移植
CC_SPI_USCIA0_GPIO, TI_CC_SPI_USCIA0_SOMI)!= RESET)
{
;
}
SPI_I2S_SendData(SPI1, (uint16_t)addr);// Send address
// Wait for TX to finish$$
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
SPI_I2S_SendData(SPI1, (uint16_t)value);//发送数据通过SPI1
// Wait for TX to finish
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_SPIWriteBurstReg(char addr, char *buffer, char count)
// 作用 : 向一个"addr"指向的寄存器中写入值"value"
// 输入参数:char addr :指向的地址
// char value :要写入的值
// 输出参数:无
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
void TI_CC_SPIWriteBurstReg(char addr, char *buffer, char count)
{
unsigned int i;
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_WRITE_BURST));
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
for (i = 0; i < count; i++)
{
// Send data
SPI_I2S_SendData(SPI1, (uint16_t)buffer[i]);//发送数据通过SPI1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
}
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_SET); //CS disable
}
////////////////////////////////////////////////////////////////////////////////
// 程序名 : char TI_CC_SPIReadReg(char addr)
// 作用 : 从一个单一的配置寄存器中读数,寄存器地址:"addr"
// 输入参数:char addr :指向的地址
// 输出参数:char :返回的寄存器值
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
char TI_CC_SPIReadReg(char addr)
{
char x;
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_RESET); // /CS enable
// Wait for TX to finish
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
// Send address
SPI_I2S_SendData(SPI1, (uint16_t)(addr | TI_CCxxx0_READ_SINGLE));
// Wait for TX to finish
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
//虚拟的接收数据,用来清空接收寄存器
x = SPI_I2S_ReceiveData(SPI1);//接收数据通过SPI1
// Dummy write so we can read data
SPI_I2S_SendData(SPI1, (uint16_t)0xff);
// Address is now being TXed, with dummy byte waiting in TXBUF...
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待$$$$
{
;
}
// Dummy byte RXed during addr TX now in RXBUF
// Clear flag//这个在stm32中是硬件清除
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY )!= RESET)//线路忙则等待
{
;
}
// Data byte RXed during dummy byte write is now in RXBUF
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_SPIReadBurstReg(char addr, char *buffer, char count)
// 作用 : 从多个寄存器中读数,第一个寄存器地址:"addr",读出的数据存放于"buffer"
// 为起始地址的存储空间,总共读"count"个寄存器。
// 输入参数:char addr :指向的地址
// char *buffer:存放的存储空间的起始地址
// char count:要读的寄存器的数量
// 输出参数:无
// 说明:
//
////////////////////////////////////////////////////////////////////////////////
void TI_CC_SPIReadBurstReg(char addr, char *buffer, char count)
{
char i;
char x;
GPIO_WriteBit(TI_CC_CSn_GPIO, TI_CC_CSn_PIN, Bit_RESET); // /CS enable
// Wait for CCxxxx ready
while(GPIO
CC1101接口库STM32移 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)