打印
[PIC®/AVR®/dsPIC®产品]

求助:I2C接口输出时序的起始信号和停止信号有问题

[复制链接]
2019|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shuiketu|  楼主 | 2013-10-13 00:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

本人初次使用PIC单片机做一个项目,使用16F877A单片机I2c接口时遇到如下问题:

i2c接口输出的起始信号和停止信号不正确(红线圈出部分,前者是stop信号,后者是下一次发送的起始信号)。
起始信号根本不是SCL 高电平时SDA产生一个下降沿沿,停止信号也不是在SCL高电平时产生一个上升沿。
而我在代码中完全是按照datasheet中的步骤,通过分别设置寄存器SSPCON2的SEN位和PEN位,产生的,为什么信号会不对呢?

(图片是我对一个存储芯片的地址0xa0做循环发送,然后用示波器捕捉到的。)
补充: 我配置的是主机模式,100K的波特率。

希望在这方面的大虾们不吝赐教,先谢谢了!
沙发
NE5532| | 2013-10-13 11:01 | 只看该作者
有可能你抓错位置了,你先不要用数据发送,只发送启动位,然后来抓波形,然后加入停止位,再来抓波形,最后再加入数据,不要去怀疑单片机内部的模块对不对,那是人家验证了N次才出来的。另外你的波形上升沿都很圆,请注意检查你的总线上拉电阻是不是太大了。

使用特权

评论回复
板凳
shuiketu|  楼主 | 2013-10-13 11:14 | 只看该作者
好的 ,我试一试,上拉电阻是4.7K的

使用特权

评论回复
地板
shuiketu|  楼主 | 2013-10-13 14:50 | 只看该作者
NE5532 发表于 2013-10-13 11:01
有可能你抓错位置了,你先不要用数据发送,只发送启动位,然后来抓波形,然后加入停止位,再来抓波形,最后 ...

我将上拉电阻改为了2.3k(又并了个4.7K),波形上升沿有所改善。然后如你所说,我单独抓取了启动信号,信号正常,但没能抓取到停止信号,我的板子就出了其他问题:L,暂时不能再调试了。不过仍可以说明我的配置是没问题的。
非常感谢!

使用特权

评论回复
5
NE5532| | 2013-10-13 17:11 | 只看该作者
弄好了再调就是了,但是上拉电阻2.3k太小了,你的总线不应该有这么大的等效电容,楼主需要检查一下硬件,一般来说4.7k的,上升沿已经不会这么糟糕了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

38

帖子

0

粉丝