历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | 在Proteus 6.9中调试I2C设备的方法

2020-02-26 来源:eefocus

刚开始调试TWI总线与AT24C02连接时,因为我是第1次以硬件的方式实现I2C,因此走了几天的弯路。今天完全调试通了。写些调试经验,省得以后有人继续走弯路。


可以这么说,利用Proteus调试I2C还是很方便的,比如在图纸上连接好MEGA8和AT24C02后,如果要看I2C调试情况,可以用两种方法:


第1种方法是在I2C总线上多连接一个I2C Debugger仪器,在仿真调试期中,该仪器可以显示I2C数据传送时间、S(START状态)、Sr(ReStart状态)、A(Ask响应)、N (No ask状态)、P(Stop状态)、数据(同时显示数据的16进制值和每位的值)。通过查看I2C Debugger窗口的显示,可以知道I2C总线上发送和接受的数据是否正确。


第2种方法是利用24C系列的I2C EEPROM元件属性设置中的Log功能。这些Log功能默认情况下是No,即不使用。我们可以把它设置成Yes。特别要提到的一点:这些Log功能的最后一项是Log to main Simulation Log,即是否将记录下来的情况写到主窗口仿真Log文件。如果要看到Log的情况,该选项必须选Yes,否则看不到历史记录。如果24C系列的元件接收或者发送标志信息和数据信息,在主窗口的Log文件中可以看到这些信息记录。具体看的方法是在System菜单中单击Text Viewer即可。


下面谈几点Proteus中24c系列元件的调试特点。


原理图中放好的24c系列元件的某地址一旦被正确写入数据,无论是否停止调试或者重新装入数据文件或者重新装入该原理图,该数据仍然保持。很神奇吧。我在Proteus 6.9sp4中发现了这个问题,这个情况和我们想象的情况完全不同。


另外,24c02元件的读写必须按照以下方法进行:


读。AVR必须先发送START位,然后检测总线是否在控制下,很多情况下,TWI_STATUS返回TW_START、TW_REP_START或者都可以继续传送。接下来传送【地址|TW_WRITE】,然后,检查TWI_STATUS,如果正确,应该返回TW_MT_SLA_ACK,然后就可以发送地址字节,如果发送成功,TWI_STATUS返回TW_MT_DATA_ACK,接下来就可以继续发送START位、【地址|TW_READ】,然后 AVR自动切换到主机读状态,等待一点时间后,如果读到东西,就可以在TWI_STATUS中检测到TW_MR_DATA_ACK或者 TW_MR_DATA_NACK,TWDR中得到的就是读出的数据。


值得注意的是,在Proteus仿真时,响应很慢,很多时候TWI_STATUS中得到是TW_NO_INFO(无信息),出现这种情况是因为AVR收到应答信号后,还需要等一点时间TWI_STATUS中的值才会更新。为了读到正确的数据,可以在TWINT置位后,等上了几十个微妙,然后就可以得到正确的TWI_STATUS的值了。


究其原因,我估计是当数据发送出去或者接受完毕后,TWINT就置位了,但是ACK/NACK还需要一点时间才能收到,这样就差了一点时间才能收到正确的 TWI_STATUS的值。这个问题搞了我很久,也和想象中的不一样,而且MEGA8的手册中也没有提到这个事,最后搞了好久,脑袋突然灵光起来才试出来的。


写下此文,与君共勉。

推荐阅读

史海拾趣

AnDAPT__Inc.公司的发展小趣事

AnDAPT Inc.是一家专注于可编程电源管理解决方案的创新型公司。以下是关于该公司发展的相关故事:

  1. 公司成立与初期阶段:AnDAPT Inc.成立于2014年,总部位于美国加利福尼亚州圣何塞。公司的创始人之一是Raghunandan "Raghu" Anandan,他在可编程电源管理领域拥有丰富的经验和专业知识。公司成立之初,致力于开发一种新型的可编程电源管理解决方案,以满足日益复杂和多样化的电子设备对电源管理的需求。

  2. 技术创新与产品开发:AnDAPT Inc.在其成立初期即开始着手开发基于可编程电源管理技术的解决方案。公司团队结合了数字信号处理(DSP)和模拟电路设计等领域的专业知识,不断推动技术创新和产品开发。他们的主要产品是基于可编程电源管理器件的芯片,能够根据应用需求动态调整电源管理参数,提供高效、灵活和智能的电源解决方案。

  3. 市场拓展与合作伙伴关系:随着公司技术的不断成熟和产品的不断推出,AnDAPT Inc.开始加大对市场的拓展力度。公司与电子设备制造商、系统集成商以及电源管理解决方案提供商建立了紧密的合作关系,共同推动可编程电源管理技术的应用和推广。通过与行业领先的合作伙伴进行合作,AnDAPT Inc.不断拓展产品的应用领域和市场份额。

  4. 技术认证与市场认可:AnDAPT Inc.的产品经过严格的技术认证和市场测试,在业界获得了良好的口碑和市场认可。公司的可编程电源管理解决方案被广泛应用于各种电子设备,包括消费类电子产品、工业自动化设备、汽车电子系统等。其技术创新和产品性能得到了行业专家和客户的一致好评。

  5. 持续发展与未来展望:作为一家专注于可编程电源管理技术的创新型公司,AnDAPT Inc.将继续致力于技术创新和产品开发。公司将不断推出新的产品和解决方案,满足客户不断变化的需求,并积极参与行业标准的制定和技术进步的推动。在未来,AnDAPT Inc.将继续保持敏锐的市场洞察力和技术领先地位,助力客户实现产品创新和市场竞争优势。

无锡友达公司的发展小趣事

无锡友达注重企业文化建设和团队建设,致力于为员工创造一个良好的工作环境和发展空间。公司设有完善的培训及考核晋升制度,员工上升空间广阔。同时,无锡友达还积极与省内各大高校合作,建立产学研基地,培养出一二级工程师50余名。这些优秀的人才为公司的发展提供了有力的人才保障。

请注意,以上故事均为根据公开信息概括的框架性内容,具体细节可能因实际情况而有所不同。

FOSLINK公司的发展小趣事

为了进一步扩大市场份额,FOSLINK公司积极实施全球化战略。公司先后在多个国家和地区设立了研发中心、生产基地和销售网络,形成了覆盖全球的业务布局。通过全球化的资源配置和市场拓展,FOSLINK成功打入了多个国际知名企业的供应链体系,为其提供了优质的产品和服务。这一系列的全球化举措,不仅提升了FOSLINK的品牌影响力,还为其未来的发展奠定了坚实的基础。

Eurofarad公司的发展小趣事

Eurofarad始终将品质管理作为公司发展的重要保障。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Eurofarad还注重持续改进,不断优化生产流程和提高生产效率,确保产品的品质和性能始终保持在行业领先水平。

Hirose公司的发展小趣事

Eurofarad始终将品质管理作为公司发展的重要保障。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Eurofarad还注重持续改进,不断优化生产流程和提高生产效率,确保产品的品质和性能始终保持在行业领先水平。

ADTech公司的发展小趣事

AdTech公司深知人才是企业发展的核心动力。因此,公司一直致力于培养和引进高素质的人才,打造了一支具有丰富经验和专业技能的团队。公司通过提供良好的工作环境和福利待遇,吸引了一批优秀的研发、市场和管理人才。同时,公司还注重员工的培训和成长,为员工的职业发展提供了广阔的空间。这些措施使得公司的团队更加稳定和高效,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

简易数控稳压电源

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 简易数控稳压电源  …

查看全部问答>

新人求助,关于学习的路应该怎么走?

原来是做软件开发的,C系的语言学的还可以。 C语言 C++ VC++ C# 都学过,java VB PHP ASP之类的也学了一些。   有一点电子基础,能看懂简单一点的线路图。  关于与非门 或非门的有点晕。   现在学C51 弄了一个学习板,已经可以 ...…

查看全部问答>

Wince智能设备C#开发中,如何把byte[]装换为Bitmap或者Image??[

网上通常的转换都是.net的,在.net Compact中Image没有 FromStream函数。 我目前用的代码是: MemoryStream ms = new MemoryStream(byteArrayIn,index,count);             Bitmap returnImage = nu ...…

查看全部问答>

请问在WINCE中如何实现输入法的自动切换呢?

现在我的WINCE环境下有日文的输入法,但是日文输入法中还有几种的输入法,比如直接英文输入,全角平假输入,半角平假输入等等. 我现在下当打开系统的软键盘时,输入法自动设置为半角平假输入状态.该如何设置呢? 我想通过调用\"keybd_event\"这个API,向 ...…

查看全部问答>

求助led显示拖尾问题

以下的显示小程序在实验板上为什么总有拖尾,请大家帮忙看看.谢谢 #include #define uchar unsigned char uchar table[10]={0xf9,0xa4,0xb0,0x99}; char act[4]={0xfe,0xfd,0xfb,0xf7}; char disp[4]; void dl_ms(int t) {uchar j, i; for( ...…

查看全部问答>

verilog代码怎么错了?

WHEN s0 => DX_red<=\'0\';NB_yellow<=\'0\';DX_green<=\'1\' ;  NB_red<=\'1\';            IF  clk_1s\'EVENT AND clk_1s=\'1\' THEN       &n ...…

查看全部问答>

【重要新闻】意法半导体正式发布超低功耗的STM32L系列产品

STMicroelectronics Unveils STM32L Ultra-Low-Power ARM Cortex?-M3 based Microcontrollers for ‘Energy-Lite’ Applications Efficient STM32L series leverages ST’s 130nm low-power technology platform to deliver excellent 32-bit ...…

查看全部问答>

关于音频解码器LM567的应用

我按lm567的典型选频电路搭建,5、6脚的电阻电容分别为10k、104,根据给出的中心频率计算公式f=1/(1.1rc)可得f=900hz左右,1、2脚电容我选223和103,理论上是不是应该在输入为900Hz、幅度>25mv时,在8脚有低电平信号输出(已接上拉)。但现实情况是 ...…

查看全部问答>

关于数字型加速度计指标的问题

大家好,我想问一下,有人了解数字型加速度计吗? 不知道数字型加速度计的灵敏度的单位从count/g或者g/digit转换成v/g该如何转换! 还有数字型的加速度计分辨率的单位如何从Bit转换成ug呢?…

查看全部问答>