[电子元器件] PIC单片机SPI通信诡异现象

[复制链接]
1370|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

粉丝
快速回复 在线客服 返回列表 返回顶部