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

[复制链接]
 楼主| 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

主题

1107

帖子

14

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