YZ_SQS 发表于 2017-1-6 02:14:55

STC15F2K32S2与ATT7022CU SPI通信读取一直是255 引脚与程序如下

单片机型号 STC15F2K32S2
ATT7022CU与单片机的连接为: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只是为了调通通信,并不要实际的效果。不知道哪地方需要更改,在此多谢各位大神了。

YZ_SQS 发表于 2017-1-6 08:35:57

自己顶一下

霸气侧漏 发表于 2017-1-6 08:52:07

要么是延时不够,要么是数据时序不对,就这,用逻辑分析仪看看

KevinDeng 发表于 2017-1-6 09:06:36

是不是IO口工作模式没有配置?

YZ_SQS 发表于 2017-1-6 09:49:47

霸气侧漏 发表于 2017-1-6 08:52
要么是延时不够,要么是数据时序不对,就这,用逻辑分析仪看看

也就是说      这样写是对的?只是配置的问题或者延时的问题?

YZ_SQS 发表于 2017-1-6 09:51:34

KevinDeng 发表于 2017-1-6 09:06
是不是IO口工作模式没有配置?

也有可能    假设IO口配置是正确的这几段程序是没问题的吧?

YZ_SQS 发表于 2017-1-7 10:14:49

再顶一下

KevinDeng 发表于 2017-1-9 10:23:20

状态寄存器好像是不用手动去清空的。

YZ_SQS 发表于 2017-1-10 08:05:41

已搞定   多谢各位

wkman 发表于 2020-2-22 17:04:28

怎么搞定的??{:sweat:}

YZ_SQS 发表于 2020-2-23 09:32:18

wkman 发表于 2020-2-22 17:04
怎么搞定的??

我都忘了   依稀记得是SPI时序的问题

su33691 发表于 2020-2-23 09:34:40

用软件模拟SPI。。。

dbwu8280 发表于 2020-2-26 06:16:21

示波器对一下时序吧,可以定时发。
页: [1]
查看完整版本: STC15F2K32S2与ATT7022CU SPI通信读取一直是255 引脚与程序如下