打印
[MCU]

PIC32模拟spi,读出数据移位了

[复制链接]
1271|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyu988|  楼主 | 2014-3-6 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC32模拟spi,读出数据移位了,写正常。
UINT8 SWReadSPI_BCO(void)
{
        UINT8 i;
        UINT8 ReceivedByte;
       
        SET_SPIDO_H;
        ReceivedByte = 0;

        for (i=0; i<8; i++)
        {
                SET_SPICLK_L;

                CLK_LOW_DELAY;

                ReceivedByte <<= 1;

                SET_SPICLK_H;

                if (READ_SPIDI)
                        ReceivedByte |= 0x01;
                else
                        ReceivedByte &= ~0x01;
        }

        SET_SPICLK_H;

        return (ReceivedByte);

}
比如正确的数据是0x01,0x48,0x9f,0x01,但是读出确是0x80,0xa4,0x4f,0x80

相关帖子

沙发
NE5532| | 2014-3-6 12:55 | 只看该作者
没看出来楼主怎么判断是“移位”了,我觉得是没有规律呢。另外提醒楼主看清楚是上升沿读数还是下降沿读数,收发的极性不要搞混了。

使用特权

评论回复
板凳
chenyu988|  楼主 | 2014-3-8 18:58 | 只看该作者
NE5532 发表于 2014-3-6 12:55
没看出来楼主怎么判断是“移位”了,我觉得是没有规律呢。另外提醒楼主看清楚是上升沿读数还是下降沿读数, ...

改成下降沿读数,正常了。
但是我用PIC24模拟spi读一样的模块,是上升沿

使用特权

评论回复
地板
NE5532| | 2014-3-8 21:10 | 只看该作者
chenyu988 发表于 2014-3-8 18:58
改成下降沿读数,正常了。
但是我用PIC24模拟spi读一样的模块,是上升沿

以数据手册说的为准,不一样的机型,指令运行速度不一样,撞对了,不代表你做对了,侥幸心理是出现问题的根源。

使用特权

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

本版积分规则

47

主题

1108

帖子

14

粉丝