搜索
bottom↓
回复: 7

请教马老师书中twi设置为何前后矛盾?

[复制链接]

出0入0汤圆

发表于 2008-3-3 15:12:46 | 显示全部楼层 |阅读模式
马老师的<<AVR单片机嵌入式系统原理与应用实践>>书中478页的IIC_INIT()函数中有一句TWBR=0X00;(书中的该函数好像都是).
可是在书中的453页提到 TWBR的值应大于10.在M16的中文说明书166页也由介绍.
不知马老师为什么这样初始化?有什么优缺点?请指教!

另外 START+SLA+R/W 是什么意思? 启动 然后 *** 然后 读写?不明白

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2008-3-3 15:19:07 | 显示全部楼层
是为了到达一定的速度吗?
怎么才能避免TWBR小于10 可能产生的错误呢?

出0入0汤圆

发表于 2008-3-3 23:54:21 | 显示全部楼层
1。首先,我已经在书中讲了,要真正会使用I2C,必须掌握I2C的协议,这是真正能看懂我的例子的基础。仔细、认真的学习I2C的协议是必须的。可惜,我的书中不可能去详细介绍I2C的协议。

2。通常在符合标准的I2C接口中,I2C的SCL为400K。那么当最极端情况下TWPS=0,AVR的系统时钟为最高为16M。按P453页的公式:
Fsck = 16000000/(16+2*10*1) = 16000000/36 = 444444hz,已经大于400K了,所以手册给出TWBR要大于10。

3。在我的例子中,AVR的系统时钟使用4M,TWPS = 0,TWBR=0,按P453页公式计算:
Fsck = 4000000/16 = 250000,也就是250K,小于协议规定的400K,当然可以了。

4。关于START+SLA+R/W的意思,请你仔细学习I2C协议规程吧。

出0入0汤圆

 楼主| 发表于 2008-3-6 14:22:45 | 显示全部楼层
马老师的意思是 只要SCL的频率在400K以内.就不存在TWBR大于10 的约束是吗?
可是在 M16中文说明书中 有一下文字
Note:    TWI 工作在主机模式时,TWBR 值应该不小于 10。否则主机会在 SDA 与 SCL 产生错误输出作为提示信号。问题出现于TWI 工作在主机模式下,向从机发送 Start + SLA + R/W 的时候 ( 不需要真的有从机与总线连接 )。
其中并未提及16M的最高频率的问题,个人觉得会不会是有什么BUG?

非常感谢马老师的指导.您书中的代码可移植性非常好.MAGE16 跑8M TWI跑 400K 非常顺利的调试过了.更重要的是提到了24C256不能跨页写的问题.在阅读说明书的时候很容易被忽略.我用的24C16也有相同的问题.是不是24CXXX系列的串行存储芯片都有类似问题?

还有一点,马老师的程序并未考虑 器件损坏 的情况.不知道在这种嵌入式系统中容错问题是怎么处理的?这种问题书上很少讲,但实际必须用.望马老师赐教.

出0入0汤圆

发表于 2008-3-6 15:47:41 | 显示全部楼层
Bit Rate Generator Unit

This unit controls the period of SCL when operating in a Master mode. The SCL period
is controlled by settings in the TWI Bit Rate Register (TWBR) and the Prescaler bits in
the TWI Status Register (TWSR). Slave operation does not depend on Bit Rate or Prescaler
settings, but the CPU clock frequency in the Slave must be at least 16 times higher
than the SCL frequency. Note that Slaves may prolong the SCL low period, thereby
reducing the average TWI bus clock period. The SCL frequency is generated according
to the following equation:

        这里是公式

&#8226; TWBR = Value of the TWI Bit Rate Register
&#8226; TWPS = Value of the prescaler bits in the TWI Status Register
Note: Note: Pull-up resistor values should be selected according to the SCL frequency and the
capacitive bus line load. See Table 120 on page 297 for value of pull-up resistor.

以上是最新英文中的说明,我没有找到关于你所说中文翻译的原本,在英文中也没看到相关的说明.

早先的英文手册中有这样的说明,主要是那时的I2C器件的SCL多为400K的,现在可以高多了,要根据你使用的I2C器件决定.

TWBR主要是设置主机控制的SCL的频率,当然与系统时钟有关,它相当一个可以微调的分频参数.在Start + SLA + R/W中,Start是DATA线上的下降沿,要比SCL的下降沿提前发出.当频率太高时,两者之间太小的话,经过I2C总线后,如果从机器件不能识别,从机就不能识别和响应主机的命令和控制了.所以不希望SCL太高.但SCL太低时,传送效率降低了.因此现在手册上给出的说明是根据I2C总线的电容选择合适的上拉电阻.这些都是细节的东西,如果彻底了解I2C的规程,就知道手册为何这样变化了.早先,I2C的器件SCL比较低,为了保险,提出了>10的简单方案.现在I2C器件的速度上去了,要提高SCL,当然强调>10就不合适了,所以要注意上拉电阻的使用.

具我所知,对EEPROM,FLASH写操作都是按页操作的,不同的是页的大小不同,AVR内部的EEPROM一页就是一个字节,而其它的器件可能一页为32\64\128\256等不同.如果你明白了我的例子,稍微修改程序,就可以对24C16操作了,原理相同.

你是否指挂在I2C总线上的器件损坏问题?如果主机发出命令后,在ACK位得不到正确的响应,说明I2C总线有问题,或器件损坏了.

出0入0汤圆

 楼主| 发表于 2008-3-10 11:25:38 | 显示全部楼层
我看的中文手册版本是: 2466G–AVR–10/03 (双龙给的).学生刚接触这行.不了解以前的I2C器件.I2C的协议也没有完全搞清楚,下来我在仔细看下.

对,I2C总线的器件损坏或者有问题,不能正确收到ACK时(马老师书上的程序好像没有考虑这方面.程序就死在那一直等),实际设计中一般都如何响应或如何处理这种错误?

出0入0汤圆

发表于 2008-3-10 12:33:14 | 显示全部楼层
书中的程序是没有考虑这方面的问题,主要是为了说明I2C的基本应用.如果所有的都讲的话,书价要100元了,毕竟是教材.

但实际上书中提供的函数已经考虑到这个问题了,作为主机端可以从I2C_START()和I2C_WRITE()两个函数的返回值,配合器件具体通信协议来判断是否正确收到了ACK,然后做相应的处理.在我的例子中,上层没有对ACK进行判断,但不会死的(里面没有死循环的结构).

在应用中,对I2C总线的器件损坏或者有问题的判断,必须是建立在你的程序本身是能完全正确的操作和控制I2C总线和总线上器件的基础上的.如果你不熟悉I2C协议规程,编写程序的逻辑本身就有错误,那么你就无法判断是器件问题还是你的代码问题.

你自己讲是刚接触这行,那么就先静下心来,踏踏实实把基础打牢.

出0入0汤圆

 楼主| 发表于 2008-3-16 07:14:40 | 显示全部楼层
我用AVR STUDIO调试的时候(软件仿真),程序就困在一个WHILE(****)的地方.要手工置位程序才能继续执行.现在手底下没有环境回头我在去试验一下.

另外:马老师在楼上的帖子里提到:EEPROM,FLASH写操作都是按页操作的.

可是我用过的EEPROM 有24C16和28C64.这两种都可以将某字节写入某地址的方法.(自己已经试验过,资料上也有相应介绍).FLASH从来没用过,看介绍好像写法和特别.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 20:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表