打印
[STM8]

STM8S的SPI有个严重问题,谁有好办法解决?

[复制链接]
9615|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecd|  楼主 | 2012-5-13 13:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
   用STM8S的SPI功能,做了个从设备,没用到NSS管脚,采用的是软件管理。现在就出现了问题,当主MCU上电慢于STM8S芯片,在主MCU初始化前,CLK脚出现一个脉冲,然后就导致了STM8S的SPI以后的每一个接收数据均是错误的,因为SPI的数据是按照8个时钟计算。上电给了一个干扰脉冲后,就导致了8位脉冲的错误。
   后来就人为让STM8S上电等待延时,等主MCU初始化完成后,再进入SPI状态,虽然这样可以解决表面问题,但如果在强干扰的情况下面,CLK引脚,出现一个干扰,岂不是也会导致STM8的SPI接收不正常么?
   后来尝试读各种出错状态标志位,都不能解决这个问题。关闭SPI功能再开,居然也不能清除掉SPI错误的时钟计数。也是不能解决问题。然后只有采用主MCU一旦于STM8S通讯不上,那么就不停的发送0XFF,让STM8S无论收到多少个干扰脉冲,在多次SPI时钟侦后,总会正确接收到0XFF这个数据,一旦收到0XFF,就让STM8S强制看门狗溢出复位,重启。但这么做真的不是什么好的办法。
   谁有没有好的办法,来解决这个问题?
沙发
yinyehua| | 2012-5-13 14:20 | 只看该作者
从设备,没用到NSS管脚?这个没有做过。但我们做主设备时对从设备的读写操作时,都必须控制从设备的片选引脚!

使用特权

评论回复
板凳
elecd|  楼主 | 2012-5-13 17:07 | 只看该作者
为的是节省IO来用.才用软件管理NSS的。按常理来讲,STM8S的移位寄存器在关闭SPI功能的时候,应该清零才对的。这芯片,居然依旧保持这移位寄存器的值。就导致了一旦一个时钟干扰,就会出现,后面所有接收到的字节全部错乱。这一点真的很恶心。或者他应该高一个时间限制来保护SPI的传送,一旦一帧数据的时钟不足8位,在保护时间间隔后,自动清除SPI的移位寄存器指针。重新捕捉新的一帧数据。

使用特权

评论回复
地板
elecd|  楼主 | 2012-5-14 17:48 | 只看该作者
ST的老大呢?给点建议吧。

使用特权

评论回复
5
seawwh| | 2012-5-14 18:06 | 只看该作者
通过CLK_PCKENR1寄存器将SPI的时钟关闭再打开看看如何。

使用特权

评论回复
6
香水城| | 2012-5-14 18:14 | 只看该作者
请尝试在关闭SPI功能的时候同时关闭SPI的时钟:

STM8S_Peripheral_clock.GIF (24.11 KB )

STM8S_Peripheral_clock.GIF

使用特权

评论回复
7
王紫豪| | 2012-5-15 00:30 | 只看该作者
或者他应该高一个时间限制来保护SPI的传送,一旦一帧数据的时钟不足8位,在保护时间间隔后,自动清除SPI的移位寄存器指针。重新捕捉新的一帧数据。

---------------
这样设计  骂得更多

使用特权

评论回复
8
yudengyun| | 2012-5-18 17:47 | 只看该作者
有知道一种方法,关闭SPI同时关闭时钟:)

使用特权

评论回复
9
shizaigaole| | 2012-5-18 23:11 | 只看该作者
主机发送心跳信号,
从机在一个窗口周期内,连续三次收不到心跳信号,
停止喂狗,从机复位。

这个方法我已经用了N此了

使用特权

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

本版积分规则

4

主题

40

帖子

1

粉丝