STC5404单片机接收SPI通讯问题

主机是忽略了ss,我做的是从机接收这块.但是接收数据总是错位.望达人指导.QQ号15983740.解答后全分奉上
利用STC12C5404单片机做从机通讯,单主单从,忽略CS,利用查询方式,数据有时会错位,利用中断方式,接收几乎都是错误的。中断方式子程序如下
(SPCTL=0xc4)

void SPI_Receive_char (void) interrupt 5 using 1
{
unsigned char SPI_temp;
P2_2=1;
SPI_temp=SPDAT;
SPI_code[count]=SPI_temp;
SPSTAT=0xc0;
count++;
if(count==6)
{
count=0;
//串口发送标志打开
}
}

利用中断接收,输出数据几乎都是错误的。请高手指点啊。。。

SPI在时钟的边沿进行采样,所以在时钟的边沿,MOSI应该保持一段时间;另外循环中应该有一定的延时,循环部分改写如下:

int j;
for(i=0;i<8;i++)
{
SCLK=0; // start
if (byt&0x01) MOSI=1;
else MOSI=0; //output bit
byt>>=1; // 1Tstru delay effect
for(j=0;j<100;j++);// delay for a while,根据实际调整等待时间
SCLK=1; //enable write
for(j=0;j<100;j++);// delay for a while
if (MISO==1) j|=1<<i; //read from ISD1730
}
温馨提示:内容为网友见解,仅供参考
无其他回答

STC单片机的SPI从机通讯问题
和外界通信有4种通信协议可选,1_Wire,I2C, UART, SPI。 每种协议都支持总线上挂接256个模块。1_Wire 总线模式时所有模块可以挂接在单线上 。(每秒传输27531字节)I2C 模式时所有模块可以和标准的I2C器件挂接在一起 。(每秒传输38782字节)UART 模式时所有模块还可以直接被PC机控制 。。(每秒...

相似回答
大家正在搜