本文论述了在实践开发中所遇到的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示波器来捕获初始阶段的通讯数据。
DS6104示波器具有I2C触发及I2C解码套件,为捕获数据需设置如下:设置DS6104示波器触发办法为“I2C”、触发条件为“发动”;设置触发时钟信源、数据信源及适宜的触发电平;翻开I2C解码并设置解码阈值;设置示波器为单次触发。设置结束后,经过监测I2C与EEPROM通讯即可捕获悉数的通讯数据头,图3所示为所得解码数据。
经过与读入DSP内存的固件数据(图4)比照可知,图中的“0xC2 0x47 …”及后续数据才是真实的固件数据。因而,导致DSP模仿EEPROM通讯失利的原因是从开始数据至固件数据间的I2C通讯(后文将称其为握手通讯)。运用DS6104的水平常基微调功用将图中波形打开之后,便可更清楚地看到握手通讯进程(图5),其描绘如下:读地址“0x50”,无数据回来;读地址“0x51”,回来“0xAD”;写地址“0x51”,写两个字节“0x00”。
至此,问题得以简化为:怎样在DSP中模仿这部分的握手通讯?经过示波器获取可视化握手通讯数据今后,则模仿其通讯进程仅需以下三步:设置DSP的I2C总线地址为“0x51”,与地址“0x50”不匹配则无回来;在DSP的I2C通讯程序中,下载固件时先发送“0xAD”,满意“0x51”地址上读到的第一个数据为“0xAD”;DSP经过I2C下载固件时,能够接纳“0x00”但不进行处理,确保握手通讯的完整性。
如上所述,在DSP的I2C通讯程序中包括此部分握手通讯处理后,运用DSP模仿EEPROM与Cypress 68013A便可进行正常通讯,并可成功地下载68013A固件。
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系列示波器以其抢先的目标、立异的技能及供给的多种总线触发及解码套件,可有用下降嵌入式总线调试难度,并极大进步调试功率。