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

【经验分享】SPI 接口发片选信号导致死机

[复制链接]
STMCU小助手 发布时间:2022-2-19 17:00
问题:+ q$ f7 s0 r9 ^$ q1 R  w
该问题由某客户提出。据其工程师描述:其产品设计中,使用了 STM32F103VDT6 器件。该器件的 SPI2通信接口外接一个 EEPROM,如下图所示。 在其进行软件调试时,发现当程序发起对 EEPROM 的读写时会导致 STM32 死机。用示波器进一步观测,发现 STM32 只发出了片选信号(/CS),没有 SPI 时钟送出。于是断定 STM32 送出片选信号(/CS)之后,未及做实质的数据传输,即已死机,缘由不详。
' D! r, S) V& Z7 f" t 78}GRQ0MA)VRD9_QVE1{P0W.png
- @8 k4 c! h% N+ D  b
' l: A8 \2 @8 D5 O6 |6 r) X8 J2 D& H
: L. {' w( Q- i/ w/ \- g调研:0 q% Q: b8 h2 u
检测相关电路的设计,包括电源、地、复位电路、时钟电路、BOOT 模式处理等,未见异常。重新核对该 SPI 接口对外连接,确认如图。修改软件,去除对片上其它的外设的操作,只对该 SPI 接口进行通信测试。结果显示,该接口可以正常通信。将原程序中的代码逐步加入测试程序。在将与 I2C2 相关代码加入后,问题重现。详细检查程序中对 I2C2 接口的设置与驱动,发现其程序对 I2C2 接口启用了 SMBus 模式,而 SMBA 信号恰与 SPI2 的片选信号(/CS)位于同一管脚。
/ n3 b+ R3 ]8 V- @  \8 K+ e) @/ u6 p5 \( F: Y. K- @0 f$ m' l) u
结论:# o. Y& z$ e4 |8 x! q; `$ L
当程序通过 SPI2 接口访问 EEPROM 时,片选信号(/CS)意外的触发了 I2C2 的 SMBA 信号,于是I2C2 发出中断请求,进而程序跳入相关的中断处理程序。而该中断处理程序并未对这一事件做任何处理,所以中断请求得不到清除,从而无法退出该中断处理程序,STM32 表现出死机状。- @8 l. o, T* p& I# d! A. O+ d) q

! m8 K# u; ~" s. ^1 I处理:
9 n" k: ~' \  Y对 I2C2 不启用 SMBus 模式,而使其工作在 I2C 模式,问题得以解决。
, E. O. p, M3 s0 W
! C0 V. L7 e  b: F$ r建议:1 Q! d/ w9 K2 I4 t$ k
该问题属于典型的管脚资源分配冲突问题,同类问题在实际应用中出现频率较高。对于 STM32 系列MCU 来说,其管脚多数为多功能复用管脚,所以在分配时管脚一定要仔细斟酌,认真检查; J+ V- X0 O% r6 I. ~

6 N- o( [( r: e. v; p. k
赞 收藏 评论0 发布时间:2022-2-19 17:00

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版