采用数字示波器调试嵌入式I2C总线

发布者:二进制心灵最新更新时间:2012-11-23 来源: 电子发烧友关键字:数字示波器  I2C总线  68013A 手机看文章 扫描二维码
随时随地手机看文章

  本文阐述了在实际开发中所遇到的I2C通信问题及使用示波器分析问题和解决问题的方法。

  分析过程中采用了RIGOL公司最新推出的DS6104示波器,其具体特性包括:高达1GHz带宽,足以满足常用标准总线的带宽需求;5GSa/s实时采样率,确保不会遗漏信号细节;每秒18万次的波形捕获率,最大概率捕获感兴趣的信号;标配140M深存储,同时满足总览全局和观察局部的需求;可录制多达18万帧的波形,奇异信号随意回放和分析;提供多种串行触发,RS232、I2C、SPI、CAN、USB等。

  问题探讨

  项目设计中计划采用Cypress 68013A芯片来实现USB器件功能。68013A是Cypress公司出产的一款高速USB器件,该芯片的参考设计是通过I2C总线读取存储在EEPROM中的固件程序来运行的,如图1所示。

图1:Cypress 68013A与EEPROM连接示意图。

  设计中,为进一步减少器件面积、降低功耗,以及便于在后续进行在线升级固件,决定使用DSP来模拟实现EEPROM与68013A之间的通信。同时,通过I2C总线在线下载固件至68013A并运行来完成,如图2所示。

  参考68013A数据手册编程后,却发现在通过DSP模拟EEPROM与68013A通信时无法正确下载固件程序,即DSP怎样通过I2C总线下载固件至68013A?

图2:Cypress 68013A与DSP连接示意图。

  解决方法

  首先,需要确认通信环境无问题,即:总线连接无问题;DSP的I2C通信程序无问题;Cypress 68013A的I2C通信无问题。

  经依次验证后发现以上各项均无问题,那么,只可能是在通信过程中发生了错误。但是,在参考手册中却没有找到关于68013A与EEPROM通信的详细描述。为获取两者间在初始通信阶段的详细数据,使用RIGOL公司的DS6104示波器来捕获初始阶段的通信数据。[page]

  DS6104示波器具有I2C触发及I2C解码套件,为捕获数据需设置如下:设置DS6104示波器触发方式为“I2C”、触发条件为“启动”;设置触发时钟信源、数据信源及合适的触发电平;打开I2C解码并设置解码阈值;设置示波器为单次触发。设置完毕后,通过监测I2C与EEPROM通信即可捕获全部的通信数据头,图3所示为所得解码数据。

图3:Cypress 68013A与EEPROM I2C初始通信数据。

  通过与读入DSP内存的固件数据(图4)对比可知,图中的“0xC2 0x47 ...”及后续数据才是真正的固件数据。因此,导致DSP模拟EEPROM通信失败的原因是从起始数据至固件数据间的I2C通信(后文将称其为握手通信)。使用DS6104的水平时基微调功能将图中波形展开之后,便可更清楚地看到握手通信过程(图5),其描述如下:读地址“0x50”,无数据返回;读地址“0x51”,返回“0xAD”;写地址“0x51”,写两个字节“0x00”。

图4:读入DSP内存的68013A固件程序数据(部分)。

  至此,问题得以简化为:怎样在DSP中模拟这部分的握手通信?通过示波器获取可视化握手通信数据以后,则模拟其通信过程仅需以下三步:设置DSP的I2C总线地址为“0x51”,与地址“0x50”不匹配则无返回;在DSP的I2C通信程序中,下载固件时先发送“0xAD”,满足“0x51”地址上读到的第一个数据为“0xAD”;DSP通过I2C下载固件时,可以接收“0x00”但不进行处理,保证握手通信的完整性。

  如上所述,在DSP的I2C通信程序中包含此部分握手通信处理后,使用DSP模拟EEPROM与Cypress 68013A便可进行正常通信,并可成功地下载68013A固件。

图5:Cypress 68013A与EEPROM I2C通信数据头展开。[page]

  Cypress 68013A支持直接在固件中修改配置字(如图6所示,地址7),从而可在固件下载完毕后配置启动类型。

图6:Cypress 68013A \'C2 Load\'格式。

  我们按照图7所示的Cypress文档提供的寄存器配置格式,配置固件为启动时断开USB连接,并将I2C时钟设置为400KHz(将地址7数据修改为“0x41”)。

图7:Cypress 68013A固件配置字格式。

  同样,在下载固件时可以通过使用DS6104来监测I2C的通信数据,并且可以明显看到时钟频率的变化,如图8所示。

图8:固件配置字为“0x41”时的I2C通信数据频率变化。

  至此,我们通过采用RIGOL推出的DS6104数字示波器,以可视化的方式实现了DSP模拟EEPROM与Cypress 68013A通信和下载固件的功能。同时,在固件下载过程中,我们观测到在固件中配置的I2C通信频率可即时生效。

  在实际项目中,我们还使用I2C作为DSP与68013A间的常规通信通路。显然,在后续调试中,DS6104数字示波器提供的串行总线触发及解码也将成为我们优先选择的调试手段。

  本文小结

  I2C总线在嵌入式系统中得到了广泛应用,在实际开发中不免碰到缺少文档资料的情况,此时,如本文所述采用示波器调试则不失为一种快捷、有效的方法。

  嵌入式系统中应用了越来越多的总线,其开发和调试难度也在相应提高。RIGOL推出的DS6000系列示波器以其领先的指标、创新的技术及提供的多种总线触发及解码套件,可有效降低嵌入式总线调试难度,并极大提高调试效率。

关键字:数字示波器  I2C总线  68013A 引用地址:采用数字示波器调试嵌入式I2C总线

上一篇:基于AFDX的跨总线ARINC615协议软件设计及实现
下一篇:1553总线测试仿真系统设计与实现

推荐阅读最新更新时间:2024-05-02 22:27

51单片机I2C总线代码
I2C总线相关函数: void I2Cstart()//开始标志 { SDA=1; SCL=1; SDA=0; delay1ms(4); SCL=0; delay1ms(4); } void I2Cstop()//结束标志 { SCL=0; delay1ms(4); SDA=0; delay1ms(4); SCL=1; delay1ms(4); SDA=1; delay1ms(4); } unsigned char I2Creadack() { unsigned char i,byte; byte=0; for(i=0;i 8;i++) { SCL=0; SDA=1; delay1ms(4
[单片机]
Matlab与数字示波器的通信
    摘要: Windows环境下Matlab与TDS系列数字示波器的通信过程,给出了相关的通信程序,并在Matlab中对示波器读取的波形数据进行了频域处理。从而表明它们之间的通信在数字信号处理方面具有重要的实际意义。     关键词: Matlab 串行通信 示波器 数字信号处理 Tektronix公司的TDS系列数字实时示波器在国内已经得到广泛的应用,与其配套的扩展模块TDS2CM和TDS2MM模块具有与外部设备双向通讯的能力,可直接与打印机、微机连接,使波形的存储打印等工作变得十分方面,其中TDS2MM还具有FFT功能,可以对波形进行实时的频谱分析。同机配送的Wavestar软件提供了PC机与示波器双向
[测试测量]
I2C总线时序模拟(二)-加深理解总线协议
view plain copy print ? /******************************************************************** 此程序是I2C操作平台(主方式的软件平台)的底层的C子程序,如发送数据 及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,它很方便的 与用户程序连接并扩展..... 注意:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器周期,即晶振频率要小于12MHZ) *********************************************
[单片机]
I2C总线EEPROM实现
开发板是fl2440板子。。跑的Linux3.0内核 这里的EEPROM只是初步的实现。。并没有具体的分析函数。。以后会具体的分析。。 1.修改内核 改make menuconfig Device Drivers --- * I2C support --- --- I2C support Enable compatibility bits for old user-space
[单片机]
基于FPGA的数字示波器波形合成器研究
引言 波形刷新率是评判数字示波器性能优劣的重要指标之一,它直接体现了示波器抓取波形细节的能力,刷新率越高意味着捕获异常的能力越强。目前国内示波器的最高波形刷新率在200000wfms/s左右,而高于200000wfms/s的基本上依赖进口。国内示波器刷新率做不高的主要原因有2个: ①波形合成技术和国际先进水平相比,差距还比较大; ②波形存储采用外部存储器。 本文通过对示波器波形合成技术的深入研究,提出一种基于FPGA的高刷新率的波形合成器,刷新率可达到400000wfms/s,该波形合成器已经成功应用在高刷新率示波器中。 1、波形三维映射模型 波形数据的三维信息包括:时间,幅度和幅度命中次数。在现代DSO中,可将多次触发后
[测试测量]
基于FPGA的<font color='red'>数字示波器</font>波形合成器研究
模拟示波器和数字示波器的各自特点
示波器是观察波形的窗口,它让设计人员或维修人员详细看见电子波形,达到眼见为实的效果。因为人眼是最灵敏的视觉器官,可以明察秋毫之末,极为迅速地反映物体至大脑,作出比较和判断。因此,示波器亦誉为波形多用表。 早期示波器只显示电压随时间的变化,作定性的观察。随后,改进的示波器具备定量的功能,测量幅度和时间,以及它们的变化情况。同时,为了记录和比较偶发事件,要借助照相机和示波管的长余辉效应。 模拟示波器的频率特性由垂直放大器和阴极示波管来决定。八十年代示波器引入数字处理和微处理器,出现数字示波器,现在把模拟示波器称为模拟实时示波器(ART),数字示波器称为数字存储示波器(DSO)。 ART需要与带宽相适应的放大器和阴极射线示波管,随着频
[测试测量]
I2C总线读写E2PROM
这一篇介绍I2C存储器的使用。主要是介绍AT24CXX系列器件,它分为两类,主要是通过被存储容量地址来分的,一类是AT24C02-AT24C16,它的存储容量从256字节到2048字节。另一类是AT24C32-AT24C1024,容量从4K-128K。(理论上好像可以达到最高512K字节容量,但现在网上最高也就能看到AT24C1024也就是128K字节容量) 原理:   I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。 I2C总线接口电路结构如图所示。 SDA和SCL
[单片机]
<font color='red'>I2C总线</font>读写E2PROM
利用数字示波器完成视频信号基本测量
  视频信号的波形非常复杂,而且图像信号与时序信号还经常混合在一起,各种信号采用不同的标准和制式,并各有自己的特点。某些视频测量要求采用专门仪器,如工业用波形监视器、视频测量器以及矢量显示器等,但是多数还是可以采用通用示波器快速简便地完成测量,本文介绍利用TDS5000数字示波器进行视频信号的基本测量。   目前的设计人员和工程师只能在两种示波器之间进行选择,即模拟实时示波器和数字存储示波器(DSO)。由于两种各有其明显优势,所以许多用户希望能同时拥有两种仪器。   模拟示波器可以快速捕捉信号,显示器能显示出信号强度的不同,为波形提供一个实时的大小尺寸。不同的亮度清楚地显示出信号不同部分的频率,使得有经验的用户在调试系统时能迅
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved