SPI通信问题

[复制链接]
767|8
 楼主| a93268 发表于 2016-6-20 23:14 | 显示全部楼层 |阅读模式
一颗AD,型号LMP90100,IO模拟SPI
设置ad的寄存器是没有问题的,读取的时候一直读不到数据,求助
芯片时序图如下:
读取代码如下(先写一个自己,在读一个字节,这个是依据的时序图,算是通信协议吧,代码中有一行被注释掉了,那个是时序上的一种尝试,结果是一样的,都读不出数据):
        uint8_t i,j,temp,num=0x80;
        temp=0;
        SPICLK(1);
        for(i=0;i<8;i++) //写一个字节指令
        {
                if(data & num)
                        MOSI(1);
                else
                        MOSI(0);
                SPICLK(0);
                Delay_ms(1);
                SPICLK(1);
                Delay_ms(1);
                if(num>0x01)
                        num>>=1;
        }       
        SPICLK(0);
        Delay_ms(1);       
        for(i=0;i<8;i++)//读一个字节数据
        {
                SPICLK(1);
                if(MISO())
                        temp++;
                //SPICLK(1);
                Delay_ms(1);               
                SPICLK(0);
                Delay_ms(1);
                if(i<7)
                        temp<<=1;
        }
        SPICLK(1);
        return temp;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dirtwillfly 发表于 2016-6-21 06:54 | 显示全部楼层
用逻辑分析仪或者示波器观察过时序没有?
51xlf 发表于 2016-6-21 16:46 | 显示全部楼层
你是没有反馈信号吗?
51xlf 发表于 2016-6-21 16:49 | 显示全部楼层
查看一下Io是不是配置好了,
 楼主| a93268 发表于 2016-6-21 22:17 | 显示全部楼层
51xlf 发表于 2016-6-21 16:46
你是没有反馈信号吗?

写寄存器可以看LED,怎么设置都是OK,都有正确的现象反馈
读寄存器是将读到的信息通过串口输出,一直是0,串口确认是OK的
 楼主| a93268 发表于 2016-6-21 22:18 | 显示全部楼层
51xlf 发表于 2016-6-21 16:49
查看一下Io是不是配置好了,

这个早已经确认OK
 楼主| a93268 发表于 2016-6-21 22:20 | 显示全部楼层
dirtwillfly 发表于 2016-6-21 06:54
用逻辑分析仪或者示波器观察过时序没有?

示波器看过,SCLK信号和MOSI信号正常
MISO信号偶尔有数据,但是是错的,更多的时候是没有波形(维持一个电平)
angerbird 发表于 2016-6-21 22:57 | 显示全部楼层
根据楼上的数据时序图的进行数据的读取操作的。
angerbird 发表于 2016-6-21 22:57 | 显示全部楼层
这是需要注意起始位与停止位的应用的。。这个关系到一个数据的正确性的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

20

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部