void SPI_MasterInit(void)
{
/* 设置MOSI 和SCK 为输出,其薯李漏他为输入 */
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)
/* 使能SPI 主机模式,设置时钟速率为fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)
}
void SPI_MasterTransmit(char cData)
{
/* 启动数据传输 */
SPDR = cData
/* 等待传输结束 */
while(!(SPSR &(1<<SPIF)))
}
void SPI_SlaveInit(void)
{
/* 设置MISO 为输出,其他为输入 */
DDR_SPI = (1<<DD_MISO)
/* 使能 SPI */
SPCR = (1<<SPE)
}
char SPI_SlaveReceive(void)
{
/* 等待接收结束 */
while(!(SPSR &(1<<SPIF)))
/* 返回数据 */
return SPDR
}
SPI总线为四根线,为MISO,MOSI,SCK,NSS,但在实际应用中可减少。就比御前信如你的情况,但是最少需要两个镇轮线悔宴,SCK是必须的,另一根为MOSI其为主机输出,从机输入。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)