请选择 进入手机版 | 继续访问电脑版

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

板子电压不稳会导致SPI通信不稳吗?

[复制链接]
watercici 提问时间:2018-10-11 19:59 /
我们自己的板子,板子正常通电时程序运行正常,但是一旦进行安检操作或者插拔串口就会造成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. }
复制代码
就是一直读到的就是忙,出不来。
收藏 评论10 发布时间:2018-10-11 19:59

举报

10个回答
shenxiaolin_mai 回答时间:2018-10-12 09:00:24
做个超时处理或者故障报告,然后添加重试机制

评分

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

查看全部评分

huangyanga 回答时间:2018-10-12 09:05:29
硬件需要做防干扰处理

评分

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

查看全部评分

wenyangzeng 回答时间:2018-10-12 09:35:19
带电拔插串口是违规操作了,串行通讯因此失败就难免了。

评分

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

查看全部评分

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

评分

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

查看全部评分

wwwicq 回答时间:2018-10-12 10:26:39
会,加超时退出

评分

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

查看全部评分

zjczm 回答时间:2018-10-12 10:28:59
电压不稳会导致各种异常,先解决稳压问题啊。

评分

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

查看全部评分

butterflyspring 回答时间:2018-10-12 11:43:52
你可以将电源问题描述清楚一点,这样方便大家了解

评分

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

查看全部评分

watercici 回答时间: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. }
复制代码
watercici 回答时间:2018-10-13 10:54:18
结贴。方法参考楼上回复。
watercici 回答时间:2018-10-13 11:07:54
zc1107473010 发表于 2018-10-12 10:01
1.插拔串口一般不会影响SPI,你可以参考看看电源电压输入输出是否稳定,且供电足够,以及电容是否匹配
2.产 ...

哦,明白了。谢谢指点。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版