调试嵌入式系统设计中的低速串行总线:并行与串行比较在并行结构中,总线的每个组件都有自己的信号路径。可能有16 条地址线、16 条数据线、一条时钟线和各种其它控制信号。通过总线发送的地址或数据值会通过所有并行线路同时传送。因此,使用大多数示波器和逻辑分析仪中的状态触发或码型触发功能触发感兴趣的事件相对简便。同时,可以简便地一目了然地了解在示波器或逻辑分析仪显示屏上捕获的数据。例如,在图1 中,我们使用逻辑分析仪从微控制器中采集时钟线、地址线、数据线和控制线。通过使用状态触发,我们隔离了我们查找的总线。为“解码”总线上发生的情况,我们需要查看每条地址线、数据线和控制线的逻辑状态。在串行总线中,所有这些信息都必须以串行方式在相同的少数导线(有时是一条)上发送。这意味着一个信号可能包括地址信息、控制信息、数据信息和时钟信息。例如,看一下图2中所示的控制器区域网(CAN)串行信号。这条消息包含帧头、标识符(地址)、数据长度代码、数据、CRC 和帧尾及少量其它控制位。时钟嵌入在数据中,使用填充位保证接收设备拥有数量充足的边沿锁定时钟,这使情况变得进一步复杂化。即使是经过训练的眼睛,也很难迅速了解这一消息的内容。现在想象一下这是一条有问题的消息,一天只发生一次,您需要触发采集这条消息。传统示波器和逻辑分析仪不能有效处理这类信号。即使是比较简单的串行标准,如I2C,与并行协议相比,观察总线上传输的内容仍要明显困难得多。I2C 采用分开的时钟线和数据线,因此至少在本例中,您可以使用时钟作为参考点。但是,您仍需要找到消息开头(数据变低,时钟为高),手动检查和记下每个时钟上升沿上的数据值,然后把各个位整理成消息结构。在长采集中解码一条消息就会需要几分钟时间,而您不知道这是不是实际要找的消息。
工作方式
I2C的物理两线接口由双向串行时钟(SCL)和数据(SDA)线组成。I2C 支持总线上多个主从设备,但一次只能激活一个主设备。任何I2C 设备可以连接到总线上,允许任何主设备与从设备交换信息。每台设备都使用唯一的地址识别,它可以作为发射机或接收机操作,具体取决于设备功能。在开始时,I2C 只使用7 位地址,但随着时间推移,它演变成也支持10 位地址。它支持三种位速率:100 kb/s (标准模式), 400 kb/s (快速模式)和3.4Mb/s (高速模式)。最大设备数量取决于400 pf 的最大容量,或大约支持20-30 台设备。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !