面向嵌入式系统的I2C总线设计和测试
时间:09-17
来源:互联网
点击:
I2C是一种中低数据速率主/从通信总线。物理层是一种简单的信号交换协议,该协议基于总线设备以及用于驱动或释放总线线路设备之上的集电极开路输出。简单的硬件设计和较低的数据速率使得所有的工程师都能利用I2C作为一种通信解决方案。由于大多数微控制器供应商在其大部分器件上均提供了I2C主控器和从动器功能,因此嵌入式产品设计师在利用I2C时不会遇到任何障碍。
1 测试策略源于设计策略
平稳顺利的设计需要采取有计划的校验策略。当采用主/从通信系统时,这两部分均需进行校验。把校验推迟到主控器和从动器通信操作完成之后进行是错误的策略。下文所述是一种旨在尽可能独立地对主控器和从动器进行有效测试的策略。 在实现成功设计的规则和指导方针中,以下四点支持有效校验:
1)明确定义的接口。
2)主控器初始化所有的转换,并支持从动器的“紧急”调用。
3)使从动器的通信协议与主功能保持独立。
4)从动器始终保持数据相关性。
虽然设计阶段中的每项工作都对校验产生影响,但以上事项是支持测试策略的特殊考虑。该策略可被概括为:
(1)分别测试主控器和从动器;
(2)通过采用尽可能“真实”的环境来提高测试覆盖率;
(3)把从动器和主控器放在一起,以实现早期和经常性的集成。
分别测试主控器和从动器 主控器和从动器被设计成分离、非耦合式的,而且设计过程专注于开发与设计细节没有关联的接口。不管是在物理结构上还是在时间顺序上,主控器和从动器的这种分离设计都支持对每个部分进行单独测试。但为了成功地测试主控器并获得可以信赖的结果,在早期必须存在某种形式的从动器,即测试从动器。这种测试从动器应该是一种设计外壳程序,用于提供商定的接口和一些额外的测试连接程序(如一个环回或一个包含稍有改动的数据的附加寄存器)。
“外壳程序(shell)”从动器使得主控器能够实现并测试其接口。适合这种“外壳程序”或测试从动器的最佳平台是将被用于从动器开发的微控制器。事实上,如果采用相同的设备来测试最终将被用于开发末级从动器的主控器,则该“外壳程序”将提供用于从动器接口的测试平台(从动器的第一级开发)。
为了使从动器的测试侧成为一个单独项,需要比实际主控器所能提供的更多主控器功能。最后需要做的就是为实际主控器开发更多的功能,为测试提供支持。测试主控器应是一个通用主控器,而且,采用一种基于PC并通过PC-I2C总线桥接器件与从动器进行通信的应用程序,将有利于大多数计划的实施。
2 采用“真实”环境提高测试覆盖率
最后是完成主控器和从动器的单独测试,并了解它们何时被放在一起,旨在实现最终集成。在最终集成中,主控器和从动器均未得到“实际”测验。如果在一个与最终结果不相似的环境中对它们进行测试,则至少需要重复某种冗余的测试。事实上,如果测试环境与实际环境不严格近似,则得出的将是一个令人惊讶的糟糕结果。
为避免浪费精力,应先了解测试和设计的相关知识。而且,测试将首先要求接口必须稳固(形式固定)且不变。如果定义精确并得到了严格遵守,则接口将确定“实际”环境,并规定测试环境的设计。某些信令和定时特性只在最终集成时才呈现出来,不过,当主控器和从动器测试均采用接口驱动型测试环境时,则大多数功能测试都能反映出最终结果的特征。在小概率(不受欢迎的、需要避免的、可预防的)事件(接口发生变化)中,必须立即联系到测试环境。
3 提早并经常性地集成从动器和主控器
单独测试的主控器和从动器只在集成和同时测试时才是完整的。如上文所述,某些特性将仅在集成过程中才表现出来。项目截止期限之前的一周(或前夜)并不是第一次遇到这种情况。接口驱动、单独测试型策略还支持早期集成,不是作为覆盖率良好的单独测试的替代方案,而是作为一种保险方案(对接口和器件特性有充分的了解)。为了支持集成,主控器和从动器均必须位于彼此都接受的完成点上,设计计划必须包括这些集成阶段。
这里给出了部分需要制定早期集成计划的阶段或测试场合,并说明需要对其加以注意的原因:
1)基本的总线电气兼容性:虽然I2C具有简单的特性,但这并不能排除诸如上拉电阻器阻值的选择以及即将共用I2C总线的其他设备的总线定时特性等基本问题。重要的是在实际的总线上进行基本的通信操作(并将所有的实际设备与总线相连)。
2)功能定时:主控器需要具有针对从动器中的响应或定时的容限,这是一个现实问题,而且,很难以书面的形式来明确地给出应具有怎样的容限。
3)紧急情况:制定从动器对主控器的紧急调用或中断计划并测试它们的发生方式和响应有可能导致从动器中的功能变化。
1 测试策略源于设计策略
平稳顺利的设计需要采取有计划的校验策略。当采用主/从通信系统时,这两部分均需进行校验。把校验推迟到主控器和从动器通信操作完成之后进行是错误的策略。下文所述是一种旨在尽可能独立地对主控器和从动器进行有效测试的策略。 在实现成功设计的规则和指导方针中,以下四点支持有效校验:
1)明确定义的接口。
2)主控器初始化所有的转换,并支持从动器的“紧急”调用。
3)使从动器的通信协议与主功能保持独立。
4)从动器始终保持数据相关性。
虽然设计阶段中的每项工作都对校验产生影响,但以上事项是支持测试策略的特殊考虑。该策略可被概括为:
(1)分别测试主控器和从动器;
(2)通过采用尽可能“真实”的环境来提高测试覆盖率;
(3)把从动器和主控器放在一起,以实现早期和经常性的集成。
分别测试主控器和从动器 主控器和从动器被设计成分离、非耦合式的,而且设计过程专注于开发与设计细节没有关联的接口。不管是在物理结构上还是在时间顺序上,主控器和从动器的这种分离设计都支持对每个部分进行单独测试。但为了成功地测试主控器并获得可以信赖的结果,在早期必须存在某种形式的从动器,即测试从动器。这种测试从动器应该是一种设计外壳程序,用于提供商定的接口和一些额外的测试连接程序(如一个环回或一个包含稍有改动的数据的附加寄存器)。
“外壳程序(shell)”从动器使得主控器能够实现并测试其接口。适合这种“外壳程序”或测试从动器的最佳平台是将被用于从动器开发的微控制器。事实上,如果采用相同的设备来测试最终将被用于开发末级从动器的主控器,则该“外壳程序”将提供用于从动器接口的测试平台(从动器的第一级开发)。
为了使从动器的测试侧成为一个单独项,需要比实际主控器所能提供的更多主控器功能。最后需要做的就是为实际主控器开发更多的功能,为测试提供支持。测试主控器应是一个通用主控器,而且,采用一种基于PC并通过PC-I2C总线桥接器件与从动器进行通信的应用程序,将有利于大多数计划的实施。
2 采用“真实”环境提高测试覆盖率
最后是完成主控器和从动器的单独测试,并了解它们何时被放在一起,旨在实现最终集成。在最终集成中,主控器和从动器均未得到“实际”测验。如果在一个与最终结果不相似的环境中对它们进行测试,则至少需要重复某种冗余的测试。事实上,如果测试环境与实际环境不严格近似,则得出的将是一个令人惊讶的糟糕结果。
为避免浪费精力,应先了解测试和设计的相关知识。而且,测试将首先要求接口必须稳固(形式固定)且不变。如果定义精确并得到了严格遵守,则接口将确定“实际”环境,并规定测试环境的设计。某些信令和定时特性只在最终集成时才呈现出来,不过,当主控器和从动器测试均采用接口驱动型测试环境时,则大多数功能测试都能反映出最终结果的特征。在小概率(不受欢迎的、需要避免的、可预防的)事件(接口发生变化)中,必须立即联系到测试环境。
3 提早并经常性地集成从动器和主控器
单独测试的主控器和从动器只在集成和同时测试时才是完整的。如上文所述,某些特性将仅在集成过程中才表现出来。项目截止期限之前的一周(或前夜)并不是第一次遇到这种情况。接口驱动、单独测试型策略还支持早期集成,不是作为覆盖率良好的单独测试的替代方案,而是作为一种保险方案(对接口和器件特性有充分的了解)。为了支持集成,主控器和从动器均必须位于彼此都接受的完成点上,设计计划必须包括这些集成阶段。
这里给出了部分需要制定早期集成计划的阶段或测试场合,并说明需要对其加以注意的原因:
1)基本的总线电气兼容性:虽然I2C具有简单的特性,但这并不能排除诸如上拉电阻器阻值的选择以及即将共用I2C总线的其他设备的总线定时特性等基本问题。重要的是在实际的总线上进行基本的通信操作(并将所有的实际设备与总线相连)。
2)功能定时:主控器需要具有针对从动器中的响应或定时的容限,这是一个现实问题,而且,很难以书面的形式来明确地给出应具有怎样的容限。
3)紧急情况:制定从动器对主控器的紧急调用或中断计划并测试它们的发生方式和响应有可能导致从动器中的功能变化。
- 热插拔和缓冲I2C总线 (04-14)
- PCIe总线何时突破Unix服务器坚冰(02-03)
- TMS320VC5402 HPI接口与PCI总线接口设计(04-12)
- 基于Nios II的I2C总线接口的实现(04-09)
- 双口RAM CY7C026在高速数据采集系统中的应用(04-12)
- 计算机在新型多电机同步系统中的应用(07-08)