dh2964169 发表于 2018-3-15 16:00:29

MrJiu 发表于 2018-3-15 15:58
查询模式,就是手动查询状态标志物。。。然后连续发送4个byte数据。。。。 ...

哦哦,懂了,懂您的意思了。谢谢啊。我先尝试下

dh2964169 发表于 2018-3-15 16:01:57

安 发表于 2018-3-15 15:51
只是这么说,还是要看对方的协议。SCLK和DATA之间的关系,楼主应该要明白。 ...

对的对的,要遵循协议才行。谢谢提醒,:)

toofree 发表于 2018-3-15 16:20:32

dh2964169 发表于 2018-3-15 15:59
谢谢您的指点。意思就是:主要的思想就是需要发送4个字节的数据。
         在我的硬件设计中,是主控 ...

SPI的收发是同时的,发送的同时也在接收。
只是配置成只发送的话,接收数据线上的数据被忽略;要接收的话,也得发送个数,只是这个数并不关心罢了。

Inc_brza 发表于 2018-3-16 18:28:30

需要开启DMA连续发送,CLK才能连续,如果等发等发,绝逼会有间隔得

dh2964169 发表于 2018-3-18 10:38:56

Inc_brza 发表于 2018-3-16 18:28
需要开启DMA连续发送,CLK才能连续,如果等发等发,绝逼会有间隔得

      您说的很对。在我对采样速度有要求的时候,用到SPIx_ReadWriteByte2 ();里面总有查询等待的过程。去掉等待速度能提高,但是又不能产生指定的波形(很矛盾)。
      所以再尝试下,DMA 发送数据的方式,可以避免状态位的查询,同时用另一个DMA接收,希望能成功。谢谢您!!!

(这就是那个写和收的SPI数据传输的函数)
u16 SPIx_ReadWriteByte2 (u16 byte)//SPI双工,收发数据
{

                SPITimeout = SPIT_FLAG_TIMEOUT;

                /* 等待发送缓冲区为空,TXE事件 */
                while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_TXE) == RESET)
               {
                        if((SPITimeout--) == 0) return 0;               
               }
                /*写入数据寄存器,把要写的数据写入发送缓冲区 */
                SPI_I2S_SendData(AD_SPI, byte);
                /* 等待接收缓冲区非空,RXNE事件*/
                  SPITimeout = SPIT_FLAG_TIMEOUT;
                        while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_RXNE) == RESET)
               {
                          if((SPITimeout--) == 0)         return 0;               //等待超时
               }

                return SPI_I2S_ReceiveData(AD_SPI);                     //返回数据
}

dsjsjf 发表于 2018-3-20 09:53:39

CS状态是你自己软件控制的,随便读或者写4个字节的数据,就会产生32个SCLK

stm1024 发表于 2018-3-20 10:55:42

我不知道你为什么要产生32个SCLK,如果是为了传递4个字节,看外设是否支持Dual SPI或者Quad SPI Mode?

dh2964169 发表于 2018-3-21 09:15:42

stm1024 发表于 2018-3-20 10:55
我不知道你为什么要产生32个SCLK,如果是为了传递4个字节,看外设是否支持Dual SPI或者Quad SPI Mode? ...

       谢谢您的回复。我选择标准SPI的方式产生指定的波形。只不过现在还没有实现,正在调试过程中......
这个是为了满足AD芯片的时序:),既然芯片有这个时序,那么就能支持您说的Dual或者Quad MODE吧。

lilei900512 发表于 2018-6-1 14:12:45

一些逻辑或软件上的问题需要自己多思考才可以使自己的能力不断提高。
页: 1 [2]
查看完整版本: 429的spi如何产生32个连续的SCLK?