这是我的代码
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呢???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
发送时序、命令序列要对,
寄存器1是可读的,
硬件方面,正确连接。
这是主函数while循环里面的程序,里面唯一用到的是原子哥spi.c里面的SPI1_ReadWriteByte函数。然后SPI通信连接的是一块TDC计时芯片,里面有5个寄存器,0x8_代表写入,0xb_代表读取,后三位表示所要写入或接受的寄存器地址(也就是通过ADR1,ADR2,ADR3来选择哪个寄存器)
然后我用这种写法能够成功实现STM32与w25q128的SPI通信,求解决这是什么问题
一周热门 更多>