打印

请教:dsPIC33F系列单片机的I2C总线的编程问题

[复制链接]
5223|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
由于这是自己第一次做PIC的设计,没有经验,因此在硬件设计里,为了布线的方便,我把I2C总线的两根线接在通用IO口,打算用程序仿真I2C总线,但实际做的时候,遇到的问题就是dsPIC33F的IO口可以说是半双工的,任意时刻,只能设置输入或输出,而且调了好几小时就是调不通,请教各位前辈,如果这样dspIC33F仿真I2C总线编程,需要注意那些问题?
沙发
asspeed| | 2012-1-7 18:38 | 只看该作者
I2C本来就是半双工的。

使用特权

评论回复
板凳
klchang|  楼主 | 2012-1-7 18:48 | 只看该作者
我的意思是PIC的IO口需要先设置输入或输出,才可以读写,而普通51单片机无需进行输入输出的设置。可能我的表述有问题。
请教:
如果使用这样的IO口去仿真I2C总线实际上是否可行?若可行,需要注意哪些问题?

使用特权

评论回复
地板
XIEYUANBIN| | 2012-1-7 20:53 | 只看该作者
IIC总线有个特点就是开漏输出,这是总线竞争的需要,如果要做到开漏输出,有些IO口本来有这样的功能,如果用这样的IO口去仿真就比较方便。但如果IO口没有开漏输出功能,那就只能在输入和输出之间切换。所以还是比较烦的。当在需要输出低电平的时候将IO口设置成输出并输出0,输出高电平时将IO口设置成输入(高阻状态),让外部上拉电阻将电平拉高。

使用特权

评论回复
5
klchang|  楼主 | 2012-1-9 09:52 | 只看该作者
谢谢XIEYUANBIN前辈回帖!
到目前为止,此程序还未调通,先把我的主程序传上来,敬请各位前辈指教!

还有由于MPLAB C30无bit,我把校验位ack设为char,不知是否合适?

使用特权

评论回复
6
klchang|  楼主 | 2012-1-11 09:09 | 只看该作者
本帖最后由 klchang 于 2012-1-11 09:10 编辑

先把帖子结了,在PIC上仿真I2C总线确实能实现(有人调通过),但我还是没调通,除了需要注意时序问题之外,其他的方面,正如2楼所说的,至于是否有其他的地方需要注意,等我在想想办法把程序调通再说吧!

我觉得I2C时钟频率降到25KHz以下,时序方面应该没问题!至于输入输出口的设定,已经检查并重写了好几遍,不解!只能先放一放,先把其他模块调通,再调试这个程序!

使用特权

评论回复
7
asspeed| | 2012-1-11 10:31 | 只看该作者
Microchip有大把AN是介绍软件模拟I2C时序的,去搜一搜。

使用特权

评论回复
8
klchang|  楼主 | 2012-1-12 09:27 | 只看该作者
回7楼:
我找过了,大把AN是使用dsPIC芯片上自带的I2C Module,而我没有把I2C分配到这些特殊引脚上,只是分配到普通的IO口。至于Microchip官方网站中,使用dsPIC的I2C总线仿真的AN,我没搜到,如果asspeed前辈能提供一些信息,在此深表感谢!

使用特权

评论回复
9
asspeed| | 2012-1-12 11:29 | 只看该作者

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
klchang + 1 正解!
10
klchang|  楼主 | 2012-1-13 09:19 | 只看该作者
正解,谢谢asspeed前辈!

使用特权

评论回复
11
n85gzj| | 2015-9-17 18:18 | 只看该作者
请问楼主模拟I2C的问题解决了吗

使用特权

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

本版积分规则

个人签名:个人理解,若有错误,敬请指正!

0

主题

606

帖子

3

粉丝