查看: 69|回复: 0

STC8 IIC从机库

[复制链接]

29

主题

69

帖子

1249

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1249
发表于 2024-5-8 11:28:41 | 显示全部楼层 |阅读模式
本帖最后由 LZY825597017 于 2024-5-8 11:40 编辑

                       IIC从机扩展库

    I²C(Inter-Integrated Circuit,集成电路总线),通常称为IIC,是一种由NXP(前身为PHILIPS)公司设计的简单、高效、双线式的串行通信协议。在I²C总线系统中,存在主设备和从设备的概念。从机是I²C通信中的被动参与者,它们不能主动发起通信,而只能响应由主机发起的命令。
IIC从机概述要点:
    地址识别:每个IIC从机都有一个唯一的地址,通常为7位或10位(通过地址扩展机制),以便主机能够识别并选择要与之通信的特定从机。如AT24cxx系列EEPROM芯片,默认地址的前4位通常是1010,后3位则根据硬件连接或设置的不同而变化,以区分不同的设备。

    双向通信:尽管IIC总线定义了SDA(Serial Data Line,串行数据线)和SCL(Serial Clock Line,串行时钟线)两条线,但数据传输是半双工的,意味着同一时间内数据只能在一个方向上传输。SDA用于传输数据,SCL用于同步时钟。

    响应机制:从机在接收到地址匹配的信号后,会通过拉低SDA线(ACK,Acknowledgement)来响应主机,表明它已准备好接收或发送数据。如果不响应(即无ACK),则主机认为通信未成功。

    数据传输:数据传输由主机控制,包括读写操作。在写操作中,主机发送数据到从机;在读操作中,主机先发送一个读命令和从机地址,然后从机开始发送数据。

    多主机多从机支持:I²C总线设计允许连接多个主机和多个从机,但同一时刻只能有一个主机控制总线,从机则可以同时挂载多个,通过各自的地址进行区分。



扩展库图形化介绍:
1、IIC从机初始化

image.png
参数1:IIC从机地址,这里地址为iic8位地址,即实际7位地址(0-127)左移一位。

参数2:寄存器数量,IIC主机能访问的寄存器地址为0  ~(参数2 - 1),超出地址范围可能产生很多奇怪的问题。
注意:默认引脚SDA->P1_4    SCK->P1_5


2、设置寄存器的值

image.png
参数1:寄存器地址,范围:0  ~ (寄存器数量-1)
参数2:设置值,范围0-255
当所需要数值超过255时,可以将两个寄存器合并成一个16位或者更高位数据,例如地址0用作低8位,地址1用作高8位,主机读取两个寄存器后 高地址数据左移8位|地址数据。
3、读寄存器的值
image.png
参数1:寄存器地址,范围:0  ~ (寄存器数量-1)


扩展库图形化范例STC8H:从机串口打印,仅用于观察各个寄存器数值
image.png
主机测试TW32F003:
两个测试方法(单个读写以及连续读写测试)
image.png

注意事项:
1、IIC主机地址请确保和从机一致,无法连接可以尝试使用7或8位地址
2、IIC总线,主机两个引脚需要设置成开漏模式并且添加上拉电阻。库中使用P14、P15引脚已经开启內部弱上拉,当有多个IIC从设备时可能会存在问题,最好添加外部上拉电阻。
3、IIC主机连读读操作时,最后一个字节必须发送非应答信号,否则整个IIC总线报错。建议读操作都用单个字节读取







STC IIC从机测试程序.zip

5.26 KB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-5-20 05:45 , Processed in 0.099232 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表