微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CC1101接口库在STM32上的移植

CC1101接口库在STM32上的移植

时间:11-10 来源:互联网 点击:

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top