|
请问一下,我用AVR的ATmega8的SPI口接收从机上一个不是FFFF的16位数据,从机为下降沿送数,再用串口发到电脑上显示数据,可是电脑上的串口调试助手窗口内一直显示数据为FFFF。以下是我单片机的SPI初始设置和取数程序,不知哪里设置有问题,请高手不吝赐教~~~ void SPI_MasterInit(void) { // 设置SS,MOSI 和SCK 为输出,设为1,MISO其他为输入 DDRB = (1<<5)|(1<<3)|(1<<2); // 开SPI中断,使能SPI,主机模式,SPI 0模式,设置时钟速率为fck/64 SPCR = (1<<6)|(1<<4)|(1<<1); } unsigned char ReadOp(void) { unsigned char dat; SPDR = 1; // 启动数据传输 while(!(SPSR & (1<<7))); // 等待传输结束 dat=SPSR; //读取SPI状态寄存器SPSR,会自动清除SPIF位 dat=SPDR; //再读取数据寄存器中的数 return dat; }
//****************************************************************************** // 描述: TMP121读操作 // 输入: 无 // 返回: unsigned long IHT数据 // 说明:没有做负温度值补码修正部分 //****************************************************************************** //unsigned long void ReadTMP121 (void) { unsigned char HT,LT; PORTB&=(~(1<<;PB2)); //设置SS为低,从传感器中读取数据,1表示一个8位数据 delay_us(10); HT = ReadOp(); LT = ReadOp(); PORTB|=(1<<;PB2 ); USATR_Transmit8(HT); USATR_Transmit8(LT); }
|
|