你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

429的spi如何产生32个连续的SCLK?

[复制链接]
dh2964169 提问时间:2018-3-15 14:41 /
阅读主题, 点击返回1楼
收藏 评论18 发布时间:2018-3-15 14:41
18个回答
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才能连续,如果等发等发,绝逼会有间隔得

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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吧。

AD数据传输32时序

AD数据传输32时序
lilei900512 回答时间:2018-6-1 14:12:45
一些逻辑或软件上的问题需要自己多思考才可以使自己的能力不断提高。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版