3348|5

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

avr中的twi协议有误???(状态码0x40) [复制链接]

avr中的twi协议有误么??
  在主机接收模式的状态码里:的0x40 .。
No TWDR action or
No TWDR action
我认为应该是
Read data byte or
Read data byte。。
这个时候是来了一个ack信号,但是紧接着来了个8个字节的数据在twdr中。。如果不读取twdr肯定不对。
,,,但是如果读能读到完成的twdr??要延时么????这里有点晕。。有高手指点下不???????????????????????????????????????????????/

最新回复

duojinian,说的很好,就是因为我做模拟的i2c做的多了。。才知道其底层的协议。。因为先写的是模拟的,后来用twi的东西,理解的时候出了点问题。。  详情 回复 发表于 2009-9-21 14:20
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶。
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
TWI其实就是I2C。为了专利费的缘故,所以另起炉灶。有兴趣仔细看看Microchip的I2C的资料。
0x40状态时,当前 SLA+R已经发出,并收到ACK,此时刻包括之前,没有对TWDR进行任何读/写操作。
此时刻之后,TWI将要进行的动作是接收数据,发送ACK信号;或者是将要进行接收数据,发送NACK信号。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
经过仔细的分析,以上的想法错误。。

在主机接收模式的状态码里:的0x40 .。
No TWDR action or
No TWDR action 。。是这样的。因为
0x40状态时,当前 SLA+R已经发出,并收到ACK,此时刻包括之前,没有对TWDR进行任何读/写操作。
虽然在实际的总线上,SLA+R发出后,如0xa1,收到了ACK。。总线上会马上传来data,不过此时传过来的data并没有装在TWDR中,只有当TWCR中的TWINT置位时(下一个SEND ACK 时)才将总线上的data传到TWDR中。这时我们才能读到TWDR中的data。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
其实很多时候,追究一些为什么会很累,官方为了开发者加快开发进度,也为了他们尽快产生效益,会给出DEMO代码。我们只要根据需要裁减过来就可以了。这不涉及到版权。硬件级的问题,做软件的没有太多必要通晓。其实我们自己用IO做模拟I2C一样很稳定。增加校验就是了。节约代码,又清楚其中的所以然。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
duojinian,说的很好,就是因为我做模拟的i2c做的多了。。才知道其底层的协议。。因为先写的是模拟的,后来用twi的东西,理解的时候出了点问题。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表