SPI双机通信的问题

[复制链接]
1079|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 | 显示全部楼层
如果没有发送成功,你试试计时推出。
xietingfeng 发表于 2016-6-7 22:10 | 显示全部楼层
为什么不使用串口通信呢
xietingfeng 发表于 2016-6-7 22:13 | 显示全部楼层
spi有中断响应函数吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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