打印

2颗21434之间用SPI通信的问题

[复制链接]
2720|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fcymk2|  楼主 | 2010-1-7 01:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fcymk2 于 2010-1-7 09:22 编辑

我现在用一颗21434 做SPI_Master, 另一颗做SPI_Slave和senser扫描
想扫描完一次senser后 把得到的数据一次全部发送到SPI_M, 扫描时间大概是15ms...
SPI_M在这15ms内发送数据后..为什么会收到0xff的返回值呢? 这时间内rxBuff应该没东西吧?  我是想让SPI_M发送数据后, 就一直等着 SPI_S扫描结束后返回数据, 现在的结果是 SPIS的扫描数据可以返回...还多返回了一堆0xff...
SPI_M代码:(我用TX输出看的数据)
while(1)
{
    for (i=0; i<8; i++)
    {
        while (!(SPIM_bReadStatus()&SPIM_SPIM_TX_BUFFER_EMPTY));
        SPIM_SendTxData( 0x00 );    //dump data

        //while (!(SPIM_bReadStatus()&SPIM_SPIM_SPI_COMPLETE));
        while (!(SPIM_bReadStatus()&SPIM_SPIM_RX_BUFFER_FULL));
        rxData = SPIM_bReadRxData();
        TX8_PutSHexByte( rxData );
        TX8_PutChar(' ');
    }   

    TX8_PutCRLF();        
}
SPI_S代码:
    while(1)
    {
        //scan senser
        //...           //15 ms

        for (i=0; i<20; i++)
        {
            SPIS_EnableSS();
            while (!(SPIS_bReadStatus() & SPIS_SPIS_SPI_COMPLETE));
            rxData = SPIS_bReadRxData();
            
            while (!(SPIS_bReadStatus() & SPIS_SPIS_TX_BUFFER_EMPTY));
            SPIS_SetupTxData(i);
            SPIS_DisableSS();
        }
    }
沙发
rocky_bian| | 2010-1-7 12:39 | 只看该作者
如需例程 可以加我

使用特权

评论回复
板凳
贾君鹏子| | 2010-1-8 22:50 | 只看该作者
处女贴啊……

使用特权

评论回复
地板
god_like| | 2010-1-10 00:06 | 只看该作者
我现在也一直在调SPI,发现这个接口不是很好调,麻烦死了,老出问题

使用特权

评论回复
5
love_life| | 2010-1-10 09:51 | 只看该作者
可以用示波器看一下波形,可以看出问题出在哪

使用特权

评论回复
6
fcymk2|  楼主 | 2010-1-12 10:54 | 只看该作者
波形 都正常.就是slave响应慢的时候 master自己会收到 自己发出去的数据+_+ 而不是在等待slave的响应.
我现在是是master发送个特定的数据(如0xaf), 如果slave回应个 响应的数据(如0xa0), 就开始正常通信, 否则就继续 发0xaf, 这样做通信是正常了..就是不知道 会不会有其他的问题

使用特权

评论回复
7
lwb_2888| | 2010-1-14 13:40 | 只看该作者
本帖最后由 lwb_2888 于 2010-1-14 13:43 编辑

2# rocky_bian
   加你,你直接上传一个例程不是更加好。
有什么大家讨论,毕竟人多力量大。
PSOC3讨论群:37727183

使用特权

评论回复
8
chen.david| | 2010-1-14 22:52 | 只看该作者
用逻辑分析仪看SPI时序比较好调,否则可以通过TX8输出信息调试。

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝