• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

PIC32单片机IO口模拟IIC通信

cawyai23 2017-03-02 浏览量:1948

各位大神前辈们,你们有没有使用IO口模拟IIC通信的?PIC32单片机的IIC口不够我用的,所以我想使用模拟的方法实现IIC通信。我用的是RF2和RF3这两个端口,在配置ACK应答,我想用RF2为数据线,想把RF2配置为漏极开路输出,用如下方法配置可以不?还望有经验的前辈指点一二。谢谢!!当然,我也会按照我的方法实验的,尽量不做伸手党。


# define SDA_H PORTFbits.RF2 = 1
# define SDA_L PORTFbits.RF2 = 0            // 数据线

# define ACK_SDA ODCFSET = 0x00000002

# define SCL_H PORTFbits.RF3 = 1            // 时钟线
# define SCL_L PORTFbits.RF3 = 0


1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
其他答案 数量:6
  • 这个写法是可以的,模拟总线写好时序就行
    • 发布于2017-03-03
    • 举报
    • 评论 0
    • 2
    • 0

  • 如果是模拟的I2C,开漏其实就没有什么意义了,因为这种方式下,通常单片机是主机,不存在多个主机,不会有总线冲突。但是上拉电阻还是需要加的,这是从机设备需要的。


    模拟I2C的程序,基本就是通用的,它只需要设置输入输出以及SDA和SCL的时序,其他方面,只要配置好IO状态,正确进行切换就行。

    • 发布于2017-03-03
    • 举报
    • 评论 1
    • 2
    • 0
cawyai23 回复了 shaoziyang :谢谢讲解,对于主机从机还不是特别分得清,之前用STM32模拟过,都是用STM32控制PCF8574,但是抄别人的程序,现在想对着时序图自己写一下 回复

  • 应该没问题,sda和scl都配置为开漏就行,但是总线上要加上拉的

    • 发布于2017-03-03
    • 举报
    • 评论 1
    • 1
    • 0
cawyai23 回复了 afeiafei309 :我用的开发板是自带上拉的。 回复

  • 这个程序可以,但是普通IO口刷新速率较慢,不一定能满足通信需求

    实际上一个I2C可以接入很多个从机,应该不会不够用吧

    • 发布于2017-03-03
    • 举报
    • 评论 1
    • 1
    • 0
cawyai23 回复了 chen0000009 :用模拟个人感觉很方便,不会局限于单片机的IIC模块个数。虽然我用这款单片机,会有2个IIC模块,但我PCF8574,一般情况下,我会用到32+个PCF8574 回复

  • 先为楼主点个赞,不做伸手党,

    模拟IIC 还需要注意 SDA引脚的输入输出切换 可以参考下下面这篇文章 理解一下IO配置相关内容

    强仔教你玩PIC32MZ之IO的配置 http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=445391&fromuid=526124



    • 发布于2017-03-03
    • 举报
    • 评论 1
    • 1
    • 0
cawyai23 回复了 Eagleson :之前自己抄过IIC程序,是基于STM32单片机的。主要是IO输入输出切换上。还有就是时序把握上。现在主要是想自己写一个。看看自己理解是否正确。强仔写的很详细。并且学的也早,不知道现在他还有没有继续玩PIC系列的单片机了。 回复

  • 一、

    在I2C中,SDA是数据线,但是数据是有出有进的,那么你的IO口的方向就要在输出数据时设置为输出,读取数据时设置为输入。

    二、

    什么是I2C口不够用呢?

    你要接几个芯片啊?

    就算接24系统的EEPROM,有两个地址引脚,你可以通过设置地址引脚,设置不同的从机地址,可以接四片呢

    其他的I2C芯片,其地址又是不一样的,完全可以放在同一个总线上的。


    • 发布于2017-03-04
    • 举报
    • 评论 1
    • 1
    • 0
cawyai23 回复了 汉云 :谢谢前辈指点。个人觉得,用模拟,比较方便,我可以除了电源外,任意用IO进行IIC模拟。我用的是PCF8574,但这个芯片要用超过32+个。 回复

相关问题

问题达人换一批

PIC32单片机IO口模拟IIC通信