打印

SPI双机通信的问题

[复制链接]
916|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Denzelll|  楼主 | 2016-6-3 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,请教一个问题,两个DSP的进行SPI通信,从机接收没问题,但是发现主机发送有个问题:
while(1)
{
    delay();------------------------(1)
    SpiSendData(0xAA);-------(2)
    delay();------------------------(3)
    SpiSendData(0x55);-------(4)
}
代码执行顺序为:12341231234123 ...... 为何有一段中间会跳过(4)

Uint16 SpiSendReady(void)
{
        if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1) {
                return 0;
        }
        else{
                return 1;
        }
}

void SpiSendData(Uint16 data)
{
        if(SpiSendReady()==1)
        {
                SpiaRegs.SPITXBUF = data;
        }
        while(SpiSendReady()!=1);
}

相关帖子

沙发
Denzelll|  楼主 | 2016-6-3 14:57 | 只看该作者
我把代码改成这样去测试:
            delay();
            SpiSendData(0xA1);
            delay();
        SpiSendData(0xA2);
        delay();
        SpiSendData(0xA3);
        delay();
        SpiSendData(0xA4);
        delay();
        SpiSendData(0xA5);
        delay();
        SpiSendData(0xA6);
        delay();
        SpiSendData(0xA7);
        delay();
        SpiSendData(0xA8);
并且在发送数据是用串口打印出来,发现结果是:A1 A2 A3 A1 A2 A3 A1 A2 A3 ......
单步调试运行到SpiSendData(0xA3);就不往下运行了,真奇怪。大家遇到过吗,是不是SPI复位还是怎么滴?

使用特权

评论回复
板凳
wangdezhi| | 2016-6-6 21:51 | 只看该作者
你的延时程序在哪里呢

使用特权

评论回复
地板
wangdezhi| | 2016-6-6 21:52 | 只看该作者
如果没有发送成功,你试试计时推出。

使用特权

评论回复
5
xietingfeng| | 2016-6-7 22:10 | 只看该作者
为什么不使用串口通信呢

使用特权

评论回复
6
xietingfeng| | 2016-6-7 22:13 | 只看该作者
spi有中断响应函数吗

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝