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

板子电压不稳会导致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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版