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

IO模拟I2C的话,用什么模式?

[复制链接]
1422|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangcunxiake|  楼主 | 2024-9-27 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是配置成准双向模式,还是配置成输入输出来回切换,或者开漏?

使用特权

评论回复
沙发
huangcunxiake|  楼主 | 2024-9-27 10:46 | 只看该作者
有没有人做过的

使用特权

评论回复
板凳
hu9jj| | 2024-9-27 11:10 | 只看该作者
通常是将SDA引脚配置为输入输出模式来回切换,SCL引脚则固定为输出模式。

使用特权

评论回复
地板
banbanban| | 2024-9-27 15:00 | 只看该作者
根据通信设备的时序图来设置呗

使用特权

评论回复
5
huangcunxiake|  楼主 | 2024-9-27 21:48 | 只看该作者
hu9jj 发表于 2024-9-27 11:10
通常是将SDA引脚配置为输入输出模式来回切换,SCL引脚则固定为输出模式。

好的,懂了。看来我是模式设置错了,读数据一直有问题。

使用特权

评论回复
6
哈根达斯uz| | 2024-9-30 16:08 | 只看该作者
配置成准双向模式,还是配置成输入输出来回切换

使用特权

评论回复
7
sesefadou| | 2024-10-7 12:41 | 只看该作者
通常会使用通用I/O口(GPIO)来模拟I2C的时钟线(SCL)和数据线(SDA)。

使用特权

评论回复
8
eefas| | 2024-10-7 13:59 | 只看该作者
正确配置PIC单片机的IO口对于成功模拟I2C通信至关重要。通过将SDA引脚配置为输入输出模式来回切换,以及将SCL引脚固定为输出模式,可以确保数据的准确读写

使用特权

评论回复
9
51xlf| | 2024-10-7 15:55 | 只看该作者
在多设备共享 I2C 总线时,开漏输出模式避免了多个设备输出高电平时可能出现的冲突。因为每个设备的 IO 口在输出高电平时都处于高阻态,只有上拉电阻起作用,从而确保了 I2C 总线的正常运行。

使用特权

评论回复
10
ingramward| | 2024-10-7 17:36 | 只看该作者
完全通过软件控制GPIO引脚的状态。

使用特权

评论回复
11
ulystronglll| | 2024-10-7 19:19 | 只看该作者
单片机的处理速度足够快以处理I2C总线的时序要求。

使用特权

评论回复
12
qiufengsd| | 2024-10-7 21:22 | 只看该作者
对于SCL引脚,一般将其配置为输出模式。在I2C协议中,时钟信号是由主设备产生并控制的。因此,无论何时,SCL都应由主设备控制,以驱动数据传输的节奏。这意味着在任何情况下,SCL都必须保持为输出模式,以便主设备可以准确地控制时钟信号。

使用特权

评论回复
13
lihuami| | 2024-10-8 11:23 | 只看该作者
将用于SCL和SDA的GPIO设置为输出模式(用于发送数据)和输入模式(用于接收数据)。在PIC单片机中,通常使用TRIS寄存器来设置GPIO的方向。

使用特权

评论回复
14
dspmana| | 2024-10-8 13:15 | 只看该作者
在 I2C 总线上,数据的传输需要通过上拉电阻将信号拉高。例如,当 SDA(数据线)或 SCL(时钟线)为高电平时,就是依靠上拉电阻来实现的。而开漏输出模式正好可以满足这种需求,它可以方便地实现 I2C 总线上的电平转换,特别是在多设备共享 I2C 总线的情况下。

使用特权

评论回复
15
gygp| | 2024-10-8 15:10 | 只看该作者
开漏输出模式能够适应不同的电源电压情况。由于外部上拉电阻可以连接到不同的电源电压,所以在与不同工作电压的 I2C 设备进行通信时,可以灵活调整上拉电压,提高了电平兼容性。例如,当 PIC 单片机与一个 3.3V 供电的 I2C 设备通信时,可以将上拉电阻连接到 3.3V 电源;当与 5V 供电的 I2C 设备通信时,可以将上拉电阻连接到 5V 电源。

使用特权

评论回复
16
maudlu| | 2024-10-8 16:53 | 只看该作者
对于PIC单片机模拟I2C通信,通常会选择开漏输出(Open Drain)或推挽输出(Push-Pull)模式,并配合外部上拉电阻。这是因为I2C通信要求在总线上能够产生稳定的低电平(通过开漏或集电极开路输出实现),并且在不传输数据时保持高电平(通过外部上拉电阻实现)。

使用特权

评论回复
17
elsaflower| | 2024-10-8 18:41 | 只看该作者
与开漏输出模式类似,在将 IO 口设置为输入模式时,为了确保能够正确读取高电平信号,通常需要外部上拉电阻。如果没有上拉电阻,当总线上没有设备主动拉低电平(例如在总线空闲状态或者从设备无应答状态)时,输入引脚可能会读到不确定的电平,导致通信错误。

使用特权

评论回复
18
mollylawrence| | 2024-10-8 20:32 | 只看该作者
需要将用于模拟I2C总线的SDA(数据线)和SCL(时钟线)的IO口配置为适当的输入输出模式。
在某些情况下,可能需要使能上拉电阻以确保总线在空闲时保持高电平。

使用特权

评论回复
19
fengm| | 2024-10-8 22:14 | 只看该作者
在PIC单片机的编程中,可以根据需要选择作为I2C的主机或从机,并通过编写相应的软件代码来实现I2C通信。

使用特权

评论回复
20
chenqianqian| | 2024-10-9 07:53 | 只看该作者
用开漏输出模式

使用特权

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

本版积分规则

205

主题

3522

帖子

11

粉丝