打印
[DSP编程]

请问谁有DSP作为SPI从机,与主机进行收发数据的程序?

[复制链接]
4998|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaodou886|  楼主 | 2015-1-16 08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xiaodou886|  楼主 | 2015-1-16 08:48 | 只看该作者
E:\实验室\配水项目\上位机设计\ST7538及其应用

使用特权

评论回复
板凳
鸿盛数控| | 2015-1-16 11:51 | 只看该作者
学习一下。

使用特权

评论回复
地板
zhangmangui| | 2015-1-16 23:34 | 只看该作者
一般都是MCU这边作为主机来工作的   可以配置为从机
28068从机的代码是没有

使用特权

评论回复
5
xiaodou886|  楼主 | 2015-1-17 09:46 | 只看该作者
从机都是接收数据的,没有主动发送数据,但是我的主机是电力线调制解调器ST7538,它必须做SPI通信主机

使用特权

评论回复
6
xiaodou886|  楼主 | 2015-1-17 16:52 | 只看该作者
zhangmangui 发表于 2015-1-16 23:34
一般都是MCU这边作为主机来工作的   可以配置为从机
28068从机的代码是没有 ...

           for(k=0;k<8;k++)
          {
               Uint16 dummy;
               GpioDataRegs.GPACLEAR.bit.GPIO27 = 1; //选中TXD,SPISTEB=0
               SpibRegs.SPICTL.bit.TALK = 1; // Enable Transmit path
               SpibRegs.SPITXBUF = sdata[k]; // Slave transmits data
               while(SpibRegs.SPISTS.bit.INT_FLAG==0) {} // Wait until data rx’d
               //while(SpibRegs.SPISTS.bit.INT_FLAG !=1) {} // Wait until data rx’d
               dummy = SpibRegs.SPIRXBUF; // Clears junk data from itself
                           //for(c=0;c<5;c++);
          }
为什么我一运行程序,后暂停老是停在while循环出,从机无数据发出

使用特权

评论回复
7
aresc| | 2015-1-17 19:35 | 只看该作者
从机主动发是不行的,因为SPI的CLK只能由主机给出来。换成从机被动发不行吗?就是当主机需要的时候,给个命令给从机,然后从机解析这个命令之后向主机发送数据。

使用特权

评论回复
8
xiaodou886|  楼主 | 2015-1-17 20:35 | 只看该作者
zhangmangui 发表于 2015-1-16 23:34
一般都是MCU这边作为主机来工作的   可以配置为从机
28068从机的代码是没有 ...

版主好:
我通过SPI想修改一个24位寄存器的值,这个寄存器收到数据保存的最高位MSB,如果接收数据超过24位,最后24位有效。
请问,我DSP通过SPI发送数据sdata[2]={0x003E,0xA2DF},若采用16位发送,第一个数据发送的是0038还是38A2?
怎样才能让寄存器完整接收这24位数据

使用特权

评论回复
9
zhangmangui| | 2015-1-18 20:49 | 只看该作者
xiaodou886 发表于 2015-1-17 20:35
版主好:
我通过SPI想修改一个24位寄存器的值,这个寄存器收到数据保存的最高位MSB,如果接收数据超过24 ...

如果DSP内部寄存器的配置位数没有24位的   那我觉得最好的办法就是IO口模拟SPI
效果会比较好   根据你需要的判断 读书  存储

使用特权

评论回复
10
xmuhwei| | 2015-1-23 09:45 | 只看该作者
28335做从机,stm32做主机的程序。是因为28335有fifo不用处理收发过程,拿来做从机。又想主动获取数据,发一个IO中断通知主机发数据
#define SPI_start (GpioDataRegs.GPBCLEAR.bit.GPIO57)
#define SPI_stop (GpioDataRegs.GPBSET.bit.GPIO57)
void MCCI_s_send_rec_data(void)
{
Uint16 i,count_wait;
        SpiaRegs.SPICCR.bit.SPISWRESET = 0;
        time_delay(5);
        SpiaRegs.SPICCR.bit.SPISWRESET = 1;
        for(i=0;i<6;i++)
        {
                SpiaRegs.SPITXBUF= mcci_cmd_arm.send_data[i];
                time_delay(5);
        }
        SPI_start = 1;
        count_wait = 0;
        while(SpiaRegs.SPIFFRX.bit.RXFFST <6)
        {
                count_wait++;
                if(count_wait>1000)
                {
                        SPI_stop = 1;
                        return;
                }
        }

        SPI_stop = 1;
        for(i=0;i<6;i++)
        {
                mcci_rpl_arm.rec_data[i] = SpiaRegs.SPIRXBUF;
                time_delay(5);
        }
       
       
        return;
}

使用特权

评论回复
11
18706745575| | 2016-1-28 11:43 | 只看该作者
谁有28335和单片机的SPI通信程序?

使用特权

评论回复
12
18706745575| | 2016-3-10 11:22 | 只看该作者
18706745575 发表于 2016-1-28 11:43
谁有28335和单片机的SPI通信程序?

我有一个简单地程序

使用特权

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

本版积分规则

个人签名:知识从未如此性感!

4

主题

58

帖子

2

粉丝