示例#1
0
void cc1101_init(void)
{
	SPI_CSN_L();
	Mrfi_DelayUsec(10);
	SPI_CSN_H();
	Mrfi_DelayUsec(40);
	SPI_CSN_L();
	while (SPI_MISO_READ());
	spi_writebyte(SRES);
	while (SPI_MISO_READ());
	SPI_CSN_H();
	
	RfWriteRfSettings();
	
	Mrfi_SpiWriteReg(TI_CCxxx0_IOCFG0, 0x06);
	{
		uint8_t tmp = 0;
		tmp = Mrfi_SpiReadReg(TI_CCxxx0_IOCFG0);
		if(tmp != 0x06)
			while(1);
	}
	Mrfi_SpiCmdStrobe(SIDLE);
	Mrfi_SpiCmdStrobe(SRX);
	
	P2IES |= GPIO0;													// Ñ¡ÔñÉÏÉý/ϽµÑØ
	P2REN |= GPIO0;													// push-up enable
	P2IFG &=~GPIO0;
	P2IE  |= GPIO0;
}
示例#2
0
/*
*****************************************************************
* 读寄存器
*****************************************************************
*/
uint8_t NRF_Read_Reg(uint8_t reg)
{
	uint8_t reg_val;
	SPI_CSN_L();					 
	SPI_RW(reg);			  
	reg_val = SPI_RW(0);	  /* 读取该寄存器返回数据 */
	SPI_CSN_H();					  /* 禁止该器件 */
    return 	reg_val;
}
示例#3
0
/*
*****************************************************************
* 写寄存器
*****************************************************************
*/
uint8_t NRF_Write_Reg(uint8_t reg, uint8_t value)
{
	uint8_t status;
	SPI_CSN_L();					  
	status = SPI_RW(reg);  
	SPI_RW(value);		  /* 写数据 */
	SPI_CSN_H();					  /* 禁止该器件 */
    return 	status;
}
示例#4
0
uint8_t spiBurstFifoAccess(uint8_t addrByte, uint8_t * pData, uint8_t len)
{
	SPI_CSN_L();
//	while (SPI_MISO_READ());
	spi_writebyte(addrByte);
	SPI_WriteBuf(pData, len);
	SPI_CSN_H();
	return 1;
}
示例#5
0
uint8_t Mrfi_SpiCmdStrobe(uint8_t cmd)
{
	uint8_t statusByte;
	SPI_CSN_L();
//	while (SPI_MISO_READ());
	statusByte = spi_writebyte(cmd);
	SPI_CSN_H();
	return(statusByte);
}
示例#6
0
uint8_t spiRegAccess(uint8_t addrByte, uint8_t writeValue)
{
	uint8_t readValue;
	SPI_CSN_L();
//	while (SPI_MISO_READ());
	spi_writebyte(addrByte);
	readValue = spi_writebyte(writeValue);
	SPI_CSN_H();
	return(readValue);
}
示例#7
0
/*
*****************************************************************
*
* 写缓冲区
*
*****************************************************************
*/
uint8_t NRF_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars)
{
	uint8_t i;
	uint8_t status;
	SPI_CSN_L();				        /* 选通器件 */
	status = SPI_RW(reg);	/* 写寄存器地址 */
	for(i=0; i<uchars; i++)
	{
		SPI_RW(pBuf[i]);		/* 写数据 */
	}
	SPI_CSN_H();						/* 禁止该器件 */
    return 	status;	
}
示例#8
0
/*
*****************************************************************
* 读缓冲区
*****************************************************************
*/
uint8_t NRF_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars)
{
	uint8_t i;
	uint8_t status;
	SPI_CSN_L();						/* 选通器件 */
	status = SPI_RW(reg);	/* 写寄存器地址 */
	for(i=0; i<uchars; i++)
	{
		pBuf[i] = SPI_RW(0); /* 读取返回数据 */ 	
	}
	SPI_CSN_H();						/* 禁止该器件 */
    return 	status;
}
示例#9
0
void gpio_init(void)
{
	P1DIR |= BIT0;
	P1DIR |= MOSI + CLK + CSN;
	P1DIR &=~MISO;
	P2DIR &=~GPIO0;
	
	P1REN |= MISO;
	
	SPI_SCLK_L();
	SPI_MOSI_L();
	SPI_CSN_H();
}
示例#10
0
void SPI1_INIT(void)
{
    SPI_InitTypeDef SPI_InitStructure; 
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
     
    /*配置 SPI_NRF_SPI的 SCK,MISO,MOSI引脚,GPIOA^5,GPIOA^6,GPIOA^7 */ 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用功能 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    /*配置SPI_NRF_SPI的CE引脚,和SPI_NRF_SPI的 CSN 引脚:*/
    //NRF_CE--PA12
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    //NRF_CSN--PA4
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);	
    
 
    
    SPI_CSN_H();
    
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //双线全双工 
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主模式 
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //数据大小8位 
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //时钟极性,空闲时为低 
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //第1个边沿有效,上升沿为采样时刻 
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //NSS信号由软件产生 
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; //8分频,9MHz 
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位在前 
    SPI_InitStructure.SPI_CRCPolynomial = 7; 
    SPI_Init(SPI1, &SPI_InitStructure); 
    /* Enable SPI1 */ 
    SPI_Cmd(SPI1, ENABLE);
    printf("SPI bus init success...\r\n");
}