请选择 进入手机版 | 继续访问电脑版
查看: 160|回复: 10

[已解决] 板子电压不稳会导致SPI通信不稳吗?

[复制链接]

该用户从未签到

37

主题

276

帖子

31

蝴蝶豆

金牌会员

最后登录
2018-10-13
发表于 2018-10-11 19:59:49 | 显示全部楼层 |阅读模式
我们自己的板子,板子正常通电时程序运行正常,但是一旦进行安检操作或者插拔串口就会造成SPI卡死在读状态忙不忙的死循环中。
  1. void Flash_WaitforWriteEnd(void)
  2. {
  3.         u8 Flash_sta = 0;
  4.        
  5. //        SPI2_SetSpeed(SPI_BaudRatePrescaler_4);
  6.        
  7.         SPI2_Flash_CS_LOW();
  8.         delay_us(2);

  9.         SPI_FLASH_SendByte(READ_STATUS_REGISTER_1);
  10.        
  11.         do
  12.         {
  13.                 Flash_sta = SPI_FLASH_SendByte(0xFF);
  14.         }while((Flash_sta&0x01) == 0x01);
  15.        
  16.         SPI2_Flash_CS_HIGH();
  17. }
复制代码
就是一直读到的就是忙,出不来。
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

15

主题

202

帖子

26

蝴蝶豆

高级会员

最后登录
2018-10-19
发表于 2018-10-12 09:00:24 | 显示全部楼层
做个超时处理或者故障报告,然后添加重试机制

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

113

帖子

93

蝴蝶豆

高级会员

最后登录
2018-10-19
发表于 2018-10-12 09:05:29 | 显示全部楼层
硬件需要做防干扰处理

评分

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

查看全部评分

  ST全新域名已上线,大家奔走相告>>                    
回复 支持 反对

使用道具 举报

该用户从未签到

66

主题

2188

帖子

735

蝴蝶豆

社区小助手

最后登录
2018-10-21
发表于 2018-10-12 09:35:19 | 显示全部楼层
带电拔插串口是违规操作了,串行通讯因此失败就难免了。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

2

蝴蝶豆

新手上路

最后登录
2018-10-19
发表于 2018-10-12 10:01:47 | 显示全部楼层
1.插拔串口一般不会影响SPI,你可以参考看看电源电压输入输出是否稳定,且供电足够,以及电容是否匹配
2.产品开发中,通讯不要使用这种死循环的方式,而使用超时+打印log,即保证模块出问题不影响产品其它功能,也方便后期追踪

评分

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

查看全部评分

  ST全新域名已上线,大家奔走相告>>                    
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

1

蝴蝶豆

初级会员

最后登录
2018-10-12
发表于 2018-10-12 10:26:39 | 显示全部楼层
会,加超时退出

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

116

帖子

10

蝴蝶豆

中级会员

最后登录
2018-10-19
发表于 2018-10-12 10:28:59 | 显示全部楼层
电压不稳会导致各种异常,先解决稳压问题啊。

评分

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

查看全部评分

  ST全新域名已上线,大家奔走相告>>                    
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

318

帖子

390

蝴蝶豆

版主

最后登录
2018-10-19
发表于 2018-10-12 11:43:52 | 显示全部楼层
你可以将电源问题描述清楚一点,这样方便大家了解

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

276

帖子

31

蝴蝶豆

金牌会员

最后登录
2018-10-13
 楼主| 发表于 2018-10-13 10:53:52 | 显示全部楼层
butterflyspring 发表于 2018-10-12 11:43
你可以将电源问题描述清楚一点,这样方便大家了解

谢谢,找到问题了,是我读取忙状态的函数写的有点问题,我的读指令就发了一遍,在循环中也应发读指令。
  1. void Flash_WaitforWriteEnd(void)
  2. {
  3.         u8 Flash_sta = 0;
  4.        
  5. //        SPI2_SetSpeed(SPI_BaudRatePrescaler_4);
  6.        
  7.         SPI2_Flash_CS_LOW();
  8.         delay_us(2);

  9.         do
  10.         {
  11.                 SPI_FLASH_SendByte(READ_STATUS_REGISTER_1);
  12.                 Flash_sta = SPI_FLASH_SendByte(0xFF);
  13.         }while((Flash_sta&0x01) == 0x01);
  14.        
  15.         SPI2_Flash_CS_HIGH();
  16. }
复制代码
  ST全新域名已上线,大家奔走相告>>                    
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

276

帖子

31

蝴蝶豆

金牌会员

最后登录
2018-10-13
 楼主| 发表于 2018-10-13 10:54:18 | 显示全部楼层
结贴。方法参考楼上回复。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|意法半导体STM32/STM8技术社区

GMT+8, 2018-10-21 14:44 , Processed in 0.109726 second(s), 8 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表