在线时间119 小时
UID22290
注册时间2007-6-20
NXP金币0
TA的每日心情 | 郁闷 2021-1-9 21:21 |
---|
签到天数: 56 天 连续签到: 1 天 [LV.5]常住居民I
金牌会员
 
- 积分
- 1470
- 最后登录
- 2021-1-9
|
void SPI_InitMater( void )
{
// enable clock gate for spi module
SIM_SCGC4 |= SIM_SCGC4_SPI0_MASK;
// enable PORT
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK|SIM_SCGC5_PORTB_MASK;
// disable SPI
SPI0_C1 &= ~SPI_C1_SPE_MASK;
// configure I/O to SPI function
PORTA_PCR5 &= ~PORT_PCR_MUX_MASK;
PORTA_PCR5 |= PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK; //Use PTA5 as SPI0_SS_b
PORTA_PCR6 &= ~PORT_PCR_MUX_MASK;
PORTA_PCR6 |= PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK; //Use PTA6 as SPI0_MISO
PORTA_PCR7 &= ~PORT_PCR_MUX_MASK;
PORTA_PCR7 |= PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK; //Use PTA7 as SPI0_MOSI
PORTB_PCR0 &= ~PORT_PCR_MUX_MASK;
PORTB_PCR0 = PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK; //Use PTB0 as SPI0_SCK
SPI0_C1 |= SPI_C1_MSTR_MASK;
SPI0_BR = 0x02;
SPI0_C1 |= SPI_C1_SSOE_MASK;
SPI0_C2 |= SPI_C2_MODFEN_MASK;
SPI0_C1 |= SPI_C1_CPHA_MASK;
SPI0_C1 &= (~SPI_C1_CPHA_MASK);
SPI0_C1 |= SPI_C1_CPOL_MASK;
SPI0_C1 &= (~SPI_C1_CPOL_MASK);
//SPI0_C1 |= SPI_C1_LSBFE_MASK;
SPI0_C1 &= (~SPI_C1_LSBFE_MASK);
SPI0_C1 |= SPI_C1_SPE_MASK;
}
uint8_t SPI_ReadData(uint8_t *pRead,uint32_t uiLength){ uint16_t i; for( i=0;i<uiLength;i++) { while(!(SPI0_S & SPI_S_SPRF_MASK ) ) ; pRead = SPI0_D; } return 1;}
uint8_t SPI_WriteData(uint8_t *pWrite,uint32_t uiLength){ uint16_t i; for( i=0;i<uiLength;i++) { while(!(SPI0_S & SPI_S_SPTEF_MASK ) ) ; SPI0_S |= SPI_S_SPTEF_MASK; SPI0_D = pWrite; } return 1;}
向SPI slave写入(SPI_WriteData)命令后读取返回值( SPI_ReadData),在这句( while(!(SPI0_S & SPI_S_SPRF_MASK ) );)进入死循环,SPI0_S的值总是等于0x60
管脚什么的配置没问题
|
|