Proteus VSM I2C专题


Proteus VSM有大量的虚拟工具和调试工具,I2C Debugger就是其中之一。
[url=]I2C[/url]调试器

             1
[url=]概述[/url]I2C协议调试器提供了监视I2C接口、与I2C接口交互的功能。该调试器有两个目的:一是用户查看沿I2C总线发送的数据,二是以主器件或从器件向总线发送数据。在编写I2C程序时既可以作为调试工具又可以作为开发和测试的辅助手段
2
[url=]器件引脚界面说明[/url]I2C调试器在ISIS中器件界面非常简单,如下图:

                                                      
SCL引脚:双向引脚,用于连接I2C总线的时钟线。
SDA引脚:双向引脚,用于连接I2C总线的数据线。
TRIG引脚:输入引脚。用于触发一系列连续的储存数据到输出队列
3 [url=]I2C[/url]调试窗口当仿真暂停或运行时,I2C调试器界面将会出现(如果界面没自动弹出,可以通过Debug菜单调出)。界面可以分为几个区域。它不仅可以监视I2C总线上的数据还可以以主机或从机的身份仿真总线。
注意:当仿真的有很多I2C总线活动的电路时,I2C调试器会导致很大的仿真消耗。

a.
输入数据的显示

主窗口区域显示在总线上所有活动记录。从上图可以知道,用户可以查看数据每一位的传输。
l
当以字节或更长数据为单位观察时,序列起止时间被记录。当以位为单位观察时,引脚的逻辑状态和位标号记录在时间旁。
l
当箭头上显示不可见时表明传输是双向的。如果有非法的序列,箭头上会出现问号标志。

b.
预定义序列表

预定义序列表在对话框的右上角。该表显示了在SCL引脚控制下的SDA引脚传送的预编制的一系列数据。用户可以在序列输入窗增加预编数据(利用ADD按钮完成向序列表添加数据)。
当仿真正在进行时,双击事先定义的序列会把该序列添加到缓冲器/队列表后用于总线上的传输。注意传送的时间决定于总线的特性,例如此时的总线是主机还是从机等。

c.
缓冲/队列的序列表

缓冲序列表位于窗口的左下角。用于显示在下一个有效时机I2C将要传送的一系列数据。用户可以用户可以在序列输入窗增加预编数据。(利用Queue按钮完成向序列表添加数据序列)。

d.
序列输入窗口

该窗口(位于界面的右下角)允许用户输入序列,既可以放在预编程的序列窗或立即放在输出列队以便在下一个有效的时机传送到SDA引脚。支持以下语法规则:

语法

描述

‘0x’

表示十六进制值的前缀,例如0xFE

‘<# WebPartBody #>rsquo;

表示十六进制值的前缀, 例如$FE

‘h’

表示十六进制值的后缀, 例如FEh

‘%’

表示二进制值的前缀, 例如%1101b

‘b’

表示二进制值的后缀, 例如1101b

‘d’

表示十进制值的后缀, 例如47d

注意十六进制和二进制必须有限定的前缀或后缀。十进制的后缀是可忽略的。以上字符必须要用单引号或双引号括住。
控制按钮

控制按钮用于激励I2C总线。该调试器既可以作为主机又可以从机,此特性提供了一种强大的测试I2C执行情况的功能。


ADD
按钮:向预定义序列表输送在Sequence Entry Box定义的序列,为以后的操作使用。


Delete
按钮:删除在预定义序列表中的序列。


Queue
按钮:从Sequence Entry Box或 Pre-defined Sequence List中排列已被选项。被排列的选项在会出现在Buffered/Queued案Sequences List.

4
[url=]发送和接收数据[/url]1.
发送数据

将SDA和SCL引脚连接到电路的相应引脚。
在按钮的上方的终端窗口输入要传输的数据。数据可以是单字,逗号或空格隔离的一系列字节,或用双引或单引号括起来的文本字符串。一个字可以是具体的数字或是具体的控制信号。
一旦完成了传输序列的输入,则可以直接排列数据准备发送或者将数据放到预定义序列表以便后面使用。点击queue按钮即可以立即将传输序列放到缓冲序列表中;点击add按钮即可以将传输序列放在预定义序列表里。
要想从预定义序列表中删除一个输入的数据,可以先在预定义序列表中选中要删除的数据然后按delete。

2.
接收数据

将SDA和SCL引脚连接到电路的相应引脚。在I2C总线上的数据将以十六进制和特定的格式显示在调试窗口的左上方。
5
[url=]模型的特性[/url]
ADDRESS1
地址1。如果使用此终端来仿真一个从元器件,则这一属性用于指定从元器件地址的第一个地址字节。主机使用最低有效位作为系统进行读操作或写操作的标志位,而在寻址时,这一位被忽略。如果属性设置框为默认值,或为空,此终端将不被认为是从元器件。
ADDRESS2
如果使用此终端来仿真一个从元器件并且期望10位的地址,则本属性用于指定从元器件的第二个地址字节。如果属性设置框为空,则假定地址为7位。
STOPONEMPTY
指示表明当输出缓冲器为空和一个字节需发送时,仿真是否应该暂停。
CLOCKFREQ
当处于主元器件时,用于控制SCL的时钟频率
SEQUENCE_FILE
用于指定存储预先定义的输出序列的文本文件名
如果此属性框为空,序列将被当做器件属性的一部分而保存
AUTOLOAD

TIMEPREC
定义十进制的数量以显示时间
WRAPLENGTH
定义在新线创建之前在单一线上允许的项目的数量。

6
[url=]语法参考[/url]以下内容详细介绍了调试器用到语法

语法

描述

S
表示开始条件
Sr
表示重新开始条件
P
表示停止条件
N
表示负应答条件
A
表示应答条件
L
表明仲裁已经丢失,转入到主机模式
*
表示接收到局部的数据
?
表示检测到无效的逻辑电平

I2C EEPROM的例子

i2c_eeprom.rar
(2008-10-07 12:57:47, Size: 13.2 KB, Downloads: 7)


我也来说两句 查看全部回复

最新回复

  • hebin939 (2008-10-19 17:38:53)

    好资料 !  一直也用I2C这个模型,苦于不知怎么用,终于弄懂了!

    学习了!

    谢谢分享!
  • fujinggui (2008-10-20 09:12:32)

    BKQ```````````````````````````````````````````````````````
  • 61FENG (2008-10-20 10:18:33)

    不错啊!
    仿真看看去!