在线时间17 小时
UID3081896
注册时间2015-3-3
NXP金币0
该用户从未签到
注册会员

- 积分
- 95
- 最后登录
- 2015-8-7
|
我用了KL02的开发板用来驱动一个射频模块,进行SPI通信的时候,我只是用来读取模块的版本号,但是每次我都看到有发送数据出去,但是没有数据收到,也就是读不到版本号?
void SPI_Init(void)
{
SIM_SCGC4|=SIM_SCGC4_SPI0_MASK;//打开SPI时钟
SIM_SCGC5|=SIM_SCGC5_PORTB_MASK|SIM_SCGC5_PORTA_MASK;//打开IO口
PORTA_PCR5|=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;//选择SPI复用功能
PORTA_PCR6|=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;
PORTA_PCR7|=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;
PORTB_PCR0|=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;
SPI0_C1 &=~SPI_C1_SPE_MASK;//禁止SPI
SPI0_C1 &=~SPI_C1_CPHA_MASK;
SPI0_C1 |=SPI_C1_MSTR_MASK;//选择主模式
SPI0_BR |=SPI_BR_SPPR(0x2);
SPI0_C1 |=SPI_C1_SPE_MASK;//使能SPI
}
unsigned char SpiInOut( unsigned char TXdata)
{
while((SPI0_S & SPI_S_SPTEF_MASK) == 0);
SPI0_D =TXdata;
while((SPI0_S & SPI_S_SPRF_MASK)==0);
return((uint8)SPI0_D);
}
//---------------------------------------------------------------------------//
void SPI_Write( uint8_t addr, uint8_t data )
{
SPI_WriteBuffer( addr, &data, 1 );
}
void SPI_Read( uint8_t addr, uint8_t *data )
{
SPI_ReadBuffer( addr, data, 1 );
}
void SPI_WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
{
uint8_t i;
NSS_0;
SpiInOut(addr|0x80);
for ( i = 0; i < size; i++ )
{
SpiInOut( buffer[i] );
}
NSS_1;
}
void SPI_ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
{
uint8_t i;
NSS_0;
SpiInOut( addr & 0x7F );
for ( i = 0; i < size; i++ )
{
buffer[i] = SpiInOut(0x00);
}
NSS_1;
}
void SPI_WriteFifo( uint8_t *buffer, uint8_t size )
{
SPI_WriteBuffer( 0, buffer, size );
}
void SPI_ReadFifo( uint8_t *buffer, uint8_t size )
{
SPI_ReadBuffer( 0, buffer, size );
}
void main (void)
{
//char ch;
SPI_Init();
printf("\nRunning the spi_test project.\n");
SPI_Read(0x42,&Sx1276VerNO);
while(1)
{
SPI_Read(0x42,&Sx1276VerNO);
}
}
|
|