STC15F2K32S2与ATT7022CU SPI通信读取一直是255 引脚与程序如下
单片机型号 STC15F2K32S2ATT7022CU与单片机的连接为:SIG--P54;RST--P16;REVP--P10;DOUT--P14;DIN--P13;SCLK--P15;CS--P11.
void SPI_init(void) 单片机晶振 11.0592MHz
{
SPDAT = 0; //数据寄存器清空
SPSTAT = 0x80 + 0x40; //状态寄存器清空
P11=1; //起始CS拉高
SPCTL = 0xd4; //SSIGSPENDORDMSTRCPOLCPHASPR1SPR0
//1 1 0 1 0 1 0 0
}
void SPI_WriteByte(unsigned char out)
{
P11=0;
SPSTAT = 0x80 + 0x40;
SPDAT = out;
while(!(SPSTAT & 0x80)) ;
P11=1;
}
unsigned charSPI_ReadByte(void)
{
P11=0;
SPSTAT = 0x80 + 0x40;
SPDAT = 0xff;
while((SPSTAT & 0x80) == 0) ;
SPSTAT = 0x80 + 0x40; //
P11=1;
return (SPDAT);
}
在主函数
SPI_WriteByte(0X18);
Set_OverVol=SPI_ReadByte();
Set_UnderVol=SPI_ReadByte();
Set_Ratio=SPI_ReadByte();
显示到LCD上
说明:硬件电路没有问题(是已经在运行的产品),LCD显示均是255 LCD显示是好的,已经验证过。发送0x18只是为了调通通信,并不要实际的效果。不知道哪地方需要更改,在此多谢各位大神了。 自己顶一下 要么是延时不够,要么是数据时序不对,就这,用逻辑分析仪看看 是不是IO口工作模式没有配置? 霸气侧漏 发表于 2017-1-6 08:52
要么是延时不够,要么是数据时序不对,就这,用逻辑分析仪看看
也就是说 这样写是对的?只是配置的问题或者延时的问题? KevinDeng 发表于 2017-1-6 09:06
是不是IO口工作模式没有配置?
也有可能 假设IO口配置是正确的这几段程序是没问题的吧? 再顶一下 状态寄存器好像是不用手动去清空的。 已搞定 多谢各位 怎么搞定的??{:sweat:} wkman 发表于 2020-2-22 17:04
怎么搞定的??
我都忘了 依稀记得是SPI时序的问题 用软件模拟SPI。。。 示波器对一下时序吧,可以定时发。
页:
[1]