打印
[电子元器件]

PIC单片机SPI通信诡异现象

[复制链接]
1225|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
静水流深xzy|  楼主 | 2018-5-28 15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC单片机与外部加速度芯片进行SPI通信,单片机接收引脚上边有波形,即有数据输入,但接收寄存器接收的数据一直为0.求大神分析。故障原因。特此奉上程序。
uchar WriteSPIBuf(uchar order)    //向单片机数据寄存器中写字节,自动发送接收
{
       
        SPI1BUF=order; //写SPI缓冲器,启动发送和接收(实际是写入SPI1TXB)
    while(!SPI1STATbits.SPIRBF); //等待发送和接收完成
     Redata=SPI1BUF;           //该寄存器一直为0?????????????????????????????????????为什么
     return Redata; //返回接收的数据
   
}

uchar ReadByte( uchar Address)        //单片机读取外部芯片寄存器地址,接收数据
{
   uchar n;
   PORTBbits.RB15=0;//片选=0
   n=WriteSPIBuf(0x0B); //发送读指令,返回的数据不要
   n=WriteSPIBuf(Address); //发送地址字节
   n=WriteSPIBuf(0x00);  //写数据
   PORTBbits.RB15=1;
   return n;                       //返回接收的数据
   
}
void WriteByte(uchar Data, uchar Address)
{  
   uchar n;
   PORTBbits.RB15=0;     //片选=0
   n=WriteSPIBuf(0x0A); //发送写指令,返回的数据不要
   n=WriteSPIBuf(Address); //发送地址字节
   n=WriteSPIBuf(Data);
   PORTBbits.RB15=1;    //写入完成电位拉高
}

相关帖子

沙发
范寿铭| | 2018-5-29 08:47 | 只看该作者
看看接收使能是否打开

使用特权

评论回复
板凳
lihui567| | 2018-5-31 22:06 | 只看该作者
用PCI的调试工具可以看看SPI通信的的问题在哪里,注意时序问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝