主机 PIC18F2523
从机 PIC18F2523
主机与从机SPI通信,现在的问题现象是 仿真看主机读取的从机不对,但是SSPBUF却是对的
试验时 我从机收到主机发得地址后回复主机0X55,示波器看回出来了 55,但是主机仿真看这时的DATA是0XFFFFFFFF不是0X55,寄存器的值SSPBUF是0X55
观察主机波形。主机发送完地址后 再次发送的时钟FF延续时间达10MS。。。软件上我这个延时是测过的 绝对没有10MS啊,纳闷了,我自己分析还是主机读取的时序不对,就是还没整明白 请坛里的兄弟给分析分析,谢过了。
附上实验主机的读取代码:
//SPI 读写
unsigned char W_Rspi(unsigned char value)
{
SSPBUF = value; //主方式下向SSPBUF写入数据立即启动发送
do
{
;
}while(SSPIF=0);
SSPIF=0;
return SSPBUF;
}
//主机读命令
unsigned long SPIMASTER_Read(unsigned char a,unsigned char cnt)
{
unsigned char add,temp;
add = a|0x00; //地址最高位清零
SetHostCS(); //开片选
Delay(20);
W_Rspi(add); //调用发送数据子函数,先发地址
Delay(500);
switch(cnt)
{
case 2:
data = W_Rspi(0xff)<<8; //接收两个字节数据,高节字在前
Delay(50);//两次发送时钟间隔不用很长
data|=W_Rspi(0xff);
break;
default:break;
}
Delay(500);//100多个US
ClearHostCS();
Delay(500);
return data;
} |