跟着b站up江科大学习32单片机,但是不是在他家买的硬件。学习I2C总线OLED显示屏时遇到了问题,买的显示屏无论如何都点不亮。
51开发板和32最小系统板一个很大的区别就是32最小系统板引脚没有上拉电阻。而I2C协议传输数据时,数据总线上必须有上拉电阻,并且所有器件设置为开漏输出,才可控。从而推测,“良好”的屏幕内部自带了上拉电阻,当用户使用它时候,就相当于把上拉电阻接在了数据总线上,因此如果将“损坏”的屏幕也接上,相当于“损坏”的屏幕使用了”良好“屏幕的上拉电阻,所以可以正常显示。
方法一,做出这些推测后,我给数据线SDA和SCK接了上拉电阻,果然,屏幕可以正常显示了。
方法二,江老师的代码中将OLED端口配置定为了开漏输出的模式(GPIO_Mode_Out_OD ),经过尝试无法正常显示,经过试错之后,我改为了推挽输出的模式(GPIO_Mode_Out_PP),屏幕可以正常显示