首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用I2C调试提取STM32CUBEIDE信号内容

利用I2C调试提取STM32CUBEIDE信号内容
EN

Stack Overflow用户
提问于 2022-06-20 08:00:14
回答 1查看 50关注 0票数 0

我想在SDA线路上提取I2C通信的内容/序列,而不使用示波器解密信号,所以我想知道是否可以通过STM32CUBEIDE调试完成它?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-20 11:05:01

不是直接的,也不是整个交流。您可以将发送/接收的数据输出到连接到ST-Link的UART。不要忘记,您必须将数据字节(例如) 0x34转换为" 0x34“字符串,以便UART能够从终端读取数据字节(否则,终端将用代码0x34显示ASCII字符,甚至可能是不可见的),因此必须进行一些数据转换,这是您需要实现的整个功能,这个站点上有多种解决方案来解决这个问题,或者您可以想出自己的解决方案。

您将无法完全跟踪通信,就像看到波形一样。您将无法看到开始和停止位和地址通信物理,但您可以看到I2C状态寄存器,它将有各种标志。您可以使用断点并在I2C中看到标志,但请记住,使用断点进行跟踪通信是非常困难和有限的。您可以在中间破坏数据包,在程序暂停时破坏时间等等。注意你放置断点的地方。您还将无法验证您从主到从发送的数据是否实际被发送到I2C行(因为您可以成功地将其发送到UART,但是您不知道I2C是否发送出去,I2C状态寄存器中的标志就是全部)。但是,通过将数据重定向到UART,您可以完全验证从从服务器传入的数据。

为了访问I2C标志,在STM32CubeIDE中运行调试,当您处于调试模式并处于断点时,转到右上角(默认面板)的特殊功能寄存器(SFR)选项卡,找到您的I2C接口,展开它并找到SR (状态寄存器)或ISR (中断和状态寄存器),两者以存在者为准。您应该有不同的0和1,它们表示外围设备的某些状态(例如,行空闲、繁忙、传输完成、溢出错误等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72683903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档