5295|1

473

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

freescale s08单片机i2c的一个问题 [复制链接]

转自我的博客
http://blog.ednchina.com/bluehacker/1917095/message.aspx

这是我们组最近无意中发现的一个问题,是在NSS08Kit-R1开发板上玩的时候发现的。说明下,该开发板采用的是freescale的s08系列中的mc9s08ac16单片机,它的i2c接口连接了一个at24c02 eeprom,我们发现如果不断的复位单片机,时不时会导致eeprom在复位重新启动后,再也无法读写。最后定位问题原因是:在SDA处于0状态时,由于受到干扰或者复位,使IIC进入SDA为0,SCL为1的状态,复位后,初始化程序会再次初始化IIC模块,在刚初始化完成IIC就检测到总线状态时忙的状态(IIC1S_BUSY位),因此,即使复位N多次也不能解决总线的问题,因为问题出在从器件eeprom上,在初始化程序加上器件复位操作可以完成复位清总线忙信号。

解决的办法是:每次初始化i2c,不仅仅初始化单片机的i2c控制器,还要初始化从设备eeprom,确保两者均处于正确的初始状态。

大体步骤:

1、初始化连接AT24CXX的WP脚的端口为输出,并且置位该端口,进行写保护。

2、复位AT24CXX,这个步骤包括在SDA为1的时候,从SCL送出9个时钟,随后再给出一个启动信号,完成它的复位工作。

3、MC9S08AC16为主机,写入IICF,操作波特率

4、使能IIC,有选择的禁止或者使能中断

5、IIC1C_TXAK设为不发送应答信号,即置1。

查看本帖全部内容,请登录或者注册
此帖出自NXP MCU论坛

最新回复

值得关注  详情 回复 发表于 2010-11-20 22:25
点赞 关注(1)
个人签名Nicrosystem专业提供freescale、TI和STM32高性价比开发板、解决方案
http://nicrosystem.taobao.com
 

回复
举报

41

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
值得关注
此帖出自NXP MCU论坛
 
个人签名Nicrosystem专业提供freescale高性价比开发板、解决方案,设计服务
http://nicrosystem.taobao.com
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
ADI 中国30周年,与你一起走过的那些精彩瞬间!
即日起-4月30日,阅读资料,您可以参与ADI真爱粉大考验,同时为ADI中国30周年送上祝福!我们将从参与者中随机抽取精美礼品送出!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

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

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