先回答你的最后一问: 答 你说的很对,SCL脉冲永远都是由
主机来提供,从机在SCL线上永远都是输入状态。再回答你的第二问:答 你的第二句话是错误的。正确的说法是:I2C主机可以发送SDA, 也可以从SDA上接收;从机可以根据主机的要求发送SDA数据,也可以从SDA上接收数据(当然这一过程要按照I2C通信协议规定的数据帧进行)发送和接收数据并不会改变主机和从机的区别。以上是I2C技术标准里规定死的,和
单片机型号无关。最后回答你的第一个问题:答: 在弄清了I2C主机和从机的本质区别是看谁能提供SCL信号以后,我们再看看PIC单片机所谓 主
模式---从模式是什么意思。早期的PIC单片机,没有I2C的硬件模块支持,要完成I2C的通信,必须通过两根普通I/O线,完全用软件来模拟。既然是软件模拟,自然是可以模拟成主机运行,也可以模拟成从机。由于大量外围I2C器件都是制造成从机的,所以,软件模拟主机的情况居多。现今的PIC新型单片机,从物理硬件、中断、串行数据字节等,都有专门的I2C模块。这些模块如果是工作在从机状态下,就叫做从模式,工作在主机状态下,就是主模式。在一个I2C总线上,遵守一主多从的规定。最简情况下:
I2C:SDA数据线、SCL时钟线。
SPI:DI输入线、DO输出线、CS片选先、CLK时钟线。
可能不能写到一个驱动中。
但是好在一般很少用到这么简单的情况,厂家会对其扩展和改进。
比如 W25Q128FB/W25R128FV 系列闪存,支持 SPI、Dual SPI、Quad SPI 和 QPI。就拿 Quad SPI 来说,有 6 个引脚:
Quad SPI:D0-D3 输入输出线、CS片选先、CLK时钟线。
其中 输入为一位串行输入 D0,输出为四位串行输出 D0-D3。(四位仍少于一个字节,可姑且称为串行)
Winbond华邦 这么做是为了加快闪存读取速度(四位串行相比一位串行提高了四倍)。
因此关键在于 要进行怎样的 IO。至于是否将二者写到一个驱动看来并不重要。
评论列表(0条)