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

SPI主机只接收模式关闭SPI使能后为什么还有时钟输出?

[复制链接]
huahuahnu 提问时间:2022-2-18 15:25 / 未解决

使用STM32G070,一个板子实现主机只接收,另一个板子实现从机只发送,通信波形上发现主机SPI关闭使能后,片选信号已经置高,仍然有8个时钟输出,如图所示,是要注意什么吗?

image.png

image.png
收藏 评论5 发布时间:2022-2-18 15:25

举报

5个回答
butterflyspring 回答时间:2022-2-18 21:01:50
以前刚好遇到过。主要是这种模式下的时钟是连续发出来的。所以只要判断数据接收后关掉时钟就可以了。
SPI CLOCK.jpg
废鱼 回答时间:2022-2-18 16:29:29

楼主,您好。这个要看您的使用了,虽然CS拉高了,如果还是执行了SPI READ操作,还是会产生波形的。

huahuahnu 回答时间:2022-2-18 16:45:04
代码如下:

        while(ubReceiveIndex<ubNbDataToReceive)
        {
                while(RESET ==LL_SPI_IsActiveFlag_RXNE(SPI1));
                aRxBuffer[ubReceiveIndex++] = LL_SPI_ReceiveData8(SPI1);
        }
         LL_SPI_Disable(SPI1);
         LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_0);
        LL_mDelay(1);

huahuahnu 回答时间:2022-2-18 16:47:54
废鱼 发表于 2022-2-18 16:29
[md]楼主,您好。这个要看您的使用了,虽然CS拉高了,如果还是执行了SPI READ操作,还是会产生波形的。
[/m ...

没有执行读操作了
huahuahnu 回答时间:2022-2-21 13:32:26
butterflyspring 发表于 2022-2-18 21:01
以前刚好遇到过。主要是这种模式下的时钟是连续发出来的。所以只要判断数据接收后关掉时钟就可以了。
...

只要主器件处于只接收模式,停止连续时钟的唯一方式就是通过 SPE=0 来关闭外设。这必 须在最后一个数据帧传输内的特定时间段,即第一位采样与最后一位传输开始之间完成(以便接收全部数量的预期数据帧并防止在最后一个有效数据帧后读取任何其他的“空”数据)。在该模式下关闭 SPI 时必须遵循特定步骤。 while(ubReceiveIndex<ubNbDataToReceive)
        {
                while(RESET ==LL_SPI_IsActiveFlag_RXNE(SPI1));
                aRxBuffer[ubReceiveIndex++] = LL_SPI_ReceiveData8(SPI1);
        }
         LL_SPI_Disable(SPI1);



写代码的话就是接收最后一笔数据就关闭使能,但是还是会有时钟输出
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版