通信协议的一些想法

CM Lv3
  • 终于顿悟了I2C的协议为什么要求必须配置GPIO引脚为开漏输出模式。(我认为如果是要用硬件I2C的话,还要配置为复用开漏输出模式,复用的意思就是GPIO引脚的控制权交给了片上外设。)为什么是开漏输出呢?因为!开漏输出不能输出高电平,只能输出低电平,所以只能释放SCL或者SDA,注意是释放。而不是拉到高电平。

    所以I2C的规定就是必须外接上拉电阻和一个VDD,(开漏输出想要输出高电平,必须这样子,并且!STM32F103C8T6是不能输出5V的,所以想要输出5V也得像这样子操作。)所以你释放的时候,GPIO就被上拉到高电平了。一般情况下我们不需要自己去外接上拉电阻和VDD,因为我用到现在,只要这个模块是I2C的通信协议,内部都自己做好了上拉电阻的,至于VDD,我认为就是,模块接了电源以后,这个电源就是VDD,一起用了!

并且,GPIO选择的是开漏输出的话,输入也不影响,还是可以输入的。

  • 学了这么多的通信协议。我个人感觉,不一定是对的,只是一个猜测:主机和从机都按照规定好的通信协议进行相应的时序操作以后就可以通信,主机如果是单片机的话,那么单片机可以用软件模拟各种时序,实现各种通信协议I2C,SPI,串口通信等等。那么从机比如一块OLED屏幕,它会细分为SPI的和I2C的,也就是说从机只能使用具体的某一个通信协议进行通信,我认为应该是,生产的时候,厂家在内部就通过硬件去让这块屏幕在接收到某个特定的时序的时候就执行对应的操作,也就是厂家把通信协议通过硬件实现,然后做出了这块OLED屏幕。你之所以可以通过I2C去驱动这块屏幕是因为它内部的硬件的构造使得这块屏幕在SCL和SDA这两个引脚收到I2C的对应时序以后,会去解析这个时序,然后执行对应的操作。

绕来绕去讲了半天,不知道有没有说清楚。大概就是这么个想法。

  • Title: 通信协议的一些想法
  • Author: CM
  • Created at: 2023-07-30 20:00:20
  • Updated at: 2023-07-30 21:36:47
  • Link: https://redefine.ohevan.com/2023/07/30/通信协议/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
通信协议的一些想法