例如对一个spi ad 操作,需要获得其转化的数据,如何对spi初始化,如何获得spi的数据。
我采用以下操作不行啊。在whilei(1)中控制cs的 高低来读取ad结果。没有反应。。
void SPI_Init()
{
;
DDRB|=_BV(PB4)|_BV(PB7);//cs,sck输出
SPCR|=_BV(SPE)|_BV(MSTR)|SPR0;//16分频,主机模式
}
uint SPI_ADReceive(void)
{
uint ad_data;
/* 等待接收结束 */
while(!(SPSR & (1<<SPIF)))
;
/* 返回数据 */
ad_data=SPDR&0x1f;
while(!(SPSR & (1<<SPIF)))
ad_data=(ad_data<<3)|(SPDR>>3);//根据mcp3001模式0时序获得数据
return ad_data;
} |