MicroPython驱动OLED
- 实验效果请见:
- 本教程使用的OLED型号为
SSD1315(SSD1315与SSD1306兼容)。
IIC总线底层
I2C是一种串行、半双工的总线,主要用于低速、近距离的芯片之间的传输。物理层面I2C总线主要由两根信号线组成,一根
SCL为时钟信号线,用于通信双方的时钟同步;另一根SDA为串行数据线,用于传输通信内容。I2C通信中设备分为主机和从机两种身份。主机有权发起和结束一次通信,从机只能被动呼叫。每个挂载在I2C总线上的从机都有一个唯一的地址用于进行标识,主机与从机进行通信时需要检验从机的地址以判断是否进行响应。
总线时序
I2C的数据读取与写入均在时钟线SCL为高时产生,否则被视为无效。因此数据线SDA的电平只能在SCL为低时发生跳转,在SCL为高时SDA的电平应保持不变以保证数据与时序的准确性
开始信号
START:SCL为高时,SDA从高跳变为低,产生开始信号
结束信号STOP:SCL为高时,SDA从低跳变为高,产生结束信号
字节型数据信号:SDA数据线上的数据以8bit字节形式进行传输,每个字节传输完毕后需要紧跟一个应答信号,数据顺序为高位在前。
应答信号ACK/NACK:ACK信号在第9位将电平拉高,响应成功传送1Byte数据,NACK信号在第9位将电平拉低,不响应,数据传送失败。
I2C通信的主要步骤:
1.当总线处于空闲状态时,主机发送开始信号,启用总线
2.主机发送一个字节数据指明所要通信的从机地址和后续字节传送的方向
3.被寻址的从机发送应答信号响应主机
4.主从机通信,数据传送
5.通信完毕,主机发送停止信号,释放总线
在OLED上显示图片和视频
在只有黑白两种颜色的显示屏上,每个像素占1bit。对每个字符与图片,只要知道为了显示图片需要点亮哪些像素点,就可以实现字符与图片的显示。
MicroPython提供的machine库允许用户对硬件或软件I2C进行实现,并通过相应的类定义对象。
最后编辑:admin 更新时间:2024-07-17 11:01