7248|13

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

I2C总线通信时为什么收不到应答信号[高分求解,如能解决可付RMB] [复制链接]

由于本人第一次利用单片机进行项目设计,在许多方面都是菜鸟,而且公司里没有一个懂单片机编程的工程师,所以我既进行单片机外围硬件电路的设计又进行软件程序的编写。现在遇到一件非常困惑的问题,苦于公司无人指导,故特来此请教各位高手。
   问题大致如下:
   MCU与高频头开始串行通信时有一个START的开始信号,然后送被控器(高频头)的地址到总线,然后再送一个控制字数据后,无法收到被控器的ACK应答信号,程序执行到WAITACKW:        MOV        C,SDA
                JC        WAITASCW
无法继续下去[见后附程序],在这我能确定被控器的地址无误。

   硬件环境如下:
   1、我用的MCU是AT89S51,目的是为实现利用MCU与被控器进行I2C总线串行通信。
   2、定义P3.0与P3.1为SCL与SDA两条总线,MCU的SCL与SDA直接与被控器直连,之间无其他电阻电容元件,然后在两条总线上分别外接4.7K上拉电阻后与+5V连接。
   3、晶振频率为11.0952MHZ

目前我分析此问题如下:
   1、是否为时序问题或时间延时的问题
   2、硬件部分即上拉电阻阻值不对

并有几点疑问:
   1、可否用P3口定义SCL与SDA
   2、如何确定上拉电阻阻值
   3、利用I2C总线进行串行通信前是否需要进行SCON,PCON等寄存器的初始化

附上部分程序代码:

WRITE_TUNER:        ACALL        START          ;开始信号
;---------------
                MOV        A,ADBW         ;送被控器地址
                ACALL        SENDDATE
                ACALL        ACKW
;---------------
                MOV        A,DB1          ;送控制字1
                ACALL        SENDDATE
                ACALL        ACKW       
;---------------
                MOV        A,DB2          ;送控制字2
                ACALL        SENDDATE
                ACALL        ACKW
;---------------
                MOV        A,CB           ;送控制字3
                ACALL        SENDDATE
                ACALL        ACKW
;---------------
                MOV        A,PB           ;送控制字4
                ACALL        SENDDATE
                ACALL        ACKW
;---------------
                ACALL        STOP           ;停止传送
                RET

SENDDATE:        MOV        R2,#8          ;送数据
LOOPW:                RLC         A               
                MOV        SDA,C
                ACALL        DELAY
                SETB        SCL
                ACALL        DELAY
                CLR         SCL
                ACALL        DELAY
                DJNZ        R2,LOOPW
                CLR         SDA
                RET

ACKW:                ACALL        DELAY              /*写被控器时等待ACK信号*/
                SETB        SDA               
                ACALL        DELAY
                SETB        SCL
                ACALL        DELAY
WAITACKW:        MOV        C,SDA
                JC        WAITASCW
                CLR        SCL
                CLR        SDA
                RET

START:                SETB        SCL                /*启动信号*/
                SETB        SDA
                ACALL        DELAY
                CLR         SDA
                ACALL        DELAY
                CLR         SCL
                RET

STOP:                CLR         SCL                /*停止信号*/
                CLR         SDA
                ACALL        DELAY
                SETB        SCL
                ACALL        DELAY
                SETB        SDA
                ACALL        DELAY
                RET

DELAY:                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                RET

最新回复

1、确定高频头AS引脚内部是否悬空?有些高频头内部有电阻到低哦,保险的做法是你外部直接把AS接地,地址选择0xC0。 2、确定高频头供电是否正常?主要是看1677是否有电,也可以另换一只高频头试试。 3、确定SCL、SDA是否正确?你可以把高频头打开自己对比1677的DataSheet测试一下。 4、看高频头内部SCLSDA上是否已经接了上拉了,一般外部接上来,接10k就可以了。 5、关于软件部分:延时应该够了,Start和Stop也应该是对的  详情 回复 发表于 2007-4-26 14:31
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
从你的说明看,是使用普通IO口软件模拟I2C通讯,所以是否设置SCON,PCON与I2C无关。我常写高频头的控制软件,初步看了看你的代码,没有发现什么问题。重点考虑地址,能说说你使用的是哪家公司的什么型号高频头吗?说不定我知道哦!
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
其实,这个具体更要看你高频头的接口说明的...

呵呵,是吧?

现在是高频头不响应,即使你的通信信道接口没问题,但是,如果高频头的程序里拿不到相应的协议它也会丢包,看看你的高频头的协议要求吧
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
懒得看程序,疑为SDA未加上拉。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
从你的说明看,是使用普通IO口软件模拟I2C通讯,所以是否设置SCON,PCON与I2C无关。我常写高频头的控制软件,初步看了看你的代码,没有发现什么问题。重点考虑地址,能说说你使用的是哪家公司的什么型号高频头吗?说不定我知道哦!
---------------------------------------------------------------------------------
用的是深圳齐圣达生产的高频头,要进行控制的IC是SN761677
本人查过该IC的地址为1000XXX 0/1 地址方面应该没错误
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

6
 
其实,这个具体更要看你高频头的接口说明的...

呵呵,是吧?

现在是高频头不响应,即使你的通信信道接口没问题,但是,如果高频头的程序里拿不到相应的协议它也会丢包,看看你的高频头的协议要求吧
--------------------------------------------------------------------------------
你说的协议是不是指高频头是否支持I2C总线协议?
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

7
 
懒得看程序,疑为SDA未加上拉。
------------------------------------
SCL与SDA均接了4.7K的上拉电阻
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
elecqht() ( ) 信誉:100    Blog   加为好友  2007-04-25 16:58:39  得分: 0  


你说的协议是不是指高频头是否支持I2C总线协议?
  
------------------------------------------------
不是IIC,是它的基于IIC的更上层协议
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
俺前几天对付一个32k i2c存储器一直没通,后来发现是SDA、SCL弄反了。。。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
用的是深圳齐圣达生产的高频头,要进行控制的IC是SN761677
本人查过该IC的地址为1000XXX 0/1 地址方面应该没错误
-------------------------------
我确定是地址错了,呵呵!高频头没有规格书吗?为什么使用小厂的高频头呢?
大厂家的高频头都有完整的规格书和技术支持!!!!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
I2C总线协议仔细研究一下,一定会对你有启发!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
关于高频头的大厂有:
1、国外公司:ALPS、PHILIPS、THOMSON。  
2、中外合资公司:北京松下、上海Alps。
3、国产:旭光科技、无锡六厂、庆佳、金龙等。
如果要价廉质量好的话,推荐选择旭光科技的产品,该司是国产高频头的龙头企业哦。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 
我确定是地址错了,呵呵!高频头没有规格书吗?为什么使用小厂的高频头呢?
大厂家的高频头都有完整的规格书和技术支持!!!!
------------------------------------------------------------------------------
不好意思,我疏忽打错地址了,我实际程序中写的地址是11000XX 0/1
这高频头有完整的规格书,另外这地址我是直接参考该IC:SN761677的英文资料的

因为我的高频头的AS端是悬空的,所以确切的说,我写数据时送的地址是11000010B
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
1、确定高频头AS引脚内部是否悬空?有些高频头内部有电阻到低哦,保险的做法是你外部直接把AS接地,地址选择0xC0。
2、确定高频头供电是否正常?主要是看1677是否有电,也可以另换一只高频头试试。
3、确定SCL、SDA是否正确?你可以把高频头打开自己对比1677的DataSheet测试一下。
4、看高频头内部SCLSDA上是否已经接了上拉了,一般外部接上来,接10k就可以了。
5、关于软件部分:延时应该够了,Start和Stop也应该是对的
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11: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
快速回复 返回顶部 返回列表