SPI通信输出一直是00是什么问题??

2019-07-20 18:25发布

这是我的代码
GP2_SSN = 0;
            SPI1_ReadWriteByte(0x81);            //写寄存器1
            SPI1_ReadWriteByte(0xff);
            SPI1_ReadWriteByte(0xff);
            SPI1_ReadWriteByte(0xff);

            SPI1_ReadWriteByte(0xb1);             //读取第1个寄存器值
                for(i=0;i<3;i++)
                {
            buf3[i] = SPI1_ReadWriteByte(0xff);               
                }
                GP2_SSN = 1;
                LCD_ShowxNum(30,20,buf3[2],16,24,0);
                LCD_ShowxNum(30,50,buf3[1],16,24,0);               
                LCD_ShowxNum(30,80,buf3[0],16,24,0);

关于0x81和0xb1是八位的读写命令,改命令后三位代表寄存器地址,也就是我写寄存器1,再读寄存器1,理论读出来全是ff,ff,ff,但为什么都是0呢???

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
亮亮超神了
2019-07-21 05:22
xuyan021 发表于 2016-11-16 08:17
这是那个程序?是控制是什么的?

这是主函数while循环里面的程序,里面唯一用到的是原子哥spi.c里面的SPI1_ReadWriteByte函数。然后SPI通信连接的是一块TDC计时芯片,里面有5个寄存器,0x8_代表写入,0xb_代表读取,后三位表示所要写入或接受的寄存器地址(也就是通过ADR1,ADR2,ADR3来选择哪个寄存器)
然后我用这种写法能够成功实现STM32与w25q128的SPI通信,求解决这是什么问题

一周热门 更多>