打印
[51单片机]

ATT7022和51的spi通信,只能写进数据,读不到数据

[复制链接]
2200|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玩玩的问题|  楼主 | 2017-12-10 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用att7022和51读取电流电压有效值。现在spi能写进去数据和命令,但就是读不到数据 是我spiread函数有问题还是?纠结了一天了 代码如下。示波器测试spiwrite函数正常
SPIRead(unsigned char Cmd)
{
        unsigned char ucI,ucK,datatemp;
        unsigned char SPIData[3];
       
        SPI_SCS_1 ;
          Delay_US(5);                                    
        SPI_SCS_0 ;
        Delay_US(10);   
        SPI_SCK_0 ;
        for(ucI=0;ucI<8;ucI++)  //发送读数据命令,下降沿接收数据,高位在前,低位在后
        {

                if( Cmd & 0x80 )
                        SPI_MOSI_1;
                else
                        SPI_MOSI_0;
                Cmd<<=1;
                SPI_SCK_1 ;
                Delay_US(10);
                SPI_SCK_0 ;
                Delay_US(10);
        }
        SPI_MOSI_0;
        Delay_US(20);
        for(ucK=0;ucK<3;ucK++)    //==开始接收数据 24bit Data===
        {       
                SPIData[ucK]=0;
                for(ucI=0;ucI<8;ucI++)
                {       
                        SPIData[ucK]<<=1;
                        SPI_SCK_1 ;
                        Delay_US(10);
                        if(SPI_MISO)
                                SPIData[ucK]=SPIData[ucK]|0X80 ;
                        SPI_SCK_0 ;
                        Delay_US(10);
                       
                       
                }
        }
        Delay_US(10);
        SPI_SCS_1 ;
        datatemp=ArrayTogether(SPIData,3);
        return datatemp;
}


long ArrayTogether(unsigned char *temp,unsigned char len)
{
        long retData;
        unsigned char i;

        retData=0;
        for(i=0;i<len;i++)
        {
                retData=retData<<8;
                retData=retData+(unsigned long)temp[i];
        }
        return retData;
}

相关帖子

沙发
ningling_21| | 2017-12-10 17:24 | 只看该作者
可以用示波器看看波形是否和手册有差别

使用特权

评论回复
板凳
玩玩的问题|  楼主 | 2017-12-10 18:10 | 只看该作者
ningling_21 发表于 2017-12-10 17:24
可以用示波器看看波形是否和手册有差别

mosi波形正确,miso没有波形,我测试了att7022引脚 也是正常工作的

使用特权

评论回复
地板
ningling_21| | 2017-12-10 18:46 | 只看该作者
本帖最后由 ningling_21 于 2017-12-10 18:48 编辑
玩玩的问题 发表于 2017-12-10 18:10
mosi波形正确,miso没有波形,我测试了att7022引脚 也是正常工作的


测量芯片的晶振和各电压是否正常,芯片是否损坏等
注意:有的7022芯片只支持3.3V电源,51一般是5V电源

使用特权

评论回复
5
handlike| | 2017-12-11 14:58 | 只看该作者
先读出内部ID值(r_DeviceID=0x7122A0)读出来,再做写入操作吧。

使用特权

评论回复
6
玩玩的问题|  楼主 | 2017-12-11 18:02 | 只看该作者
handlike 发表于 2017-12-11 14:58
先读出内部ID值(r_DeviceID=0x7122A0)读出来,再做写入操作吧。

内部ID的地址是多少?我在数据手册上没找到

使用特权

评论回复
7
yk910127| | 2017-12-12 09:06 | 只看该作者
玩玩的问题 发表于 2017-12-11 18:02
内部ID的地址是多少?我在数据手册上没找到

地址为0,你有没有电平转换,51是5V的 芯片是3.3V的

使用特权

评论回复
8
玩玩的问题|  楼主 | 2017-12-12 16:07 | 只看该作者
本帖最后由 玩玩的问题 于 2017-12-12 16:11 编辑
yk910127 发表于 2017-12-12 09:06
地址为0,你有没有电平转换,51是5V的 芯片是3.3V的


我等下试试看。我搜了一下 att7022cu是5v

使用特权

评论回复
9
zqx1000| | 2018-4-10 23:36 | 只看该作者
kankan

使用特权

评论回复
10
李鹏辉| | 2020-1-21 10:10 | 只看该作者
我同样遇到了此问题ATT7022eu ,没有MISO么有波形,芯片各引脚也正常工作

使用特权

评论回复
11
airwill| | 2020-1-21 12:04 | 只看该作者
可能芯片还毫无反应的阶段,  别忽视了硬件的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝