SSD1306 屏幕使用-Micropython
1、I2C总线是什么?
I2C:俗称集成电路总线,是一种简单、双向二线制同步串行通信总线,使用多主从架构。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。
2、I2C总线由什么构成?
I2C分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻构成。
通信原理:通过控制SCL和SDA高低电平来产生I2C总线协议所需要的信号进行数据传输。在总线空闲时,SCL和SDA会上拉电阻拉高,保持着高电平。
3、I2C总线的特征?
IC总线上的每一个设备都会对应这唯一的I2C地址,部分从设备可以通过外围电路来改变I2C地址,主从设备之间就是通过这个地址来确定与哪个器件进行通信。主设备和从设备之间以字节(8位)位单位进行双向的数据传输。
4、I2C总线的通讯频率?
标准模式(Standard):100kbps
快速模式(Fast):400kbps
快速模式+(Fast-Plus):1Mbps
高速模式(High-speed):3.4Mbps
超快模式(Ultra-Fast):5Mbps(单向传输)
注:高速设备可以向下兼容,如支持快速模式的设备也可以在标准模式下进行通信。
5、RP2040的(I2C)主要参数:
支持主模式和从模式(默认主模式)
支持标准模式、快速模式和快熟模式+
默认从地址为0x55
主模式下支持10bit地址
16位接收缓冲区
16位发送缓冲区
可使用DMA驱动
可生成中断
1、machine.I2C(id,scl ,sda ,freq = 40000)
#I2C对象构造函数,作用为初始化对应的I2C通道和引脚
#id :标识特定的 I2C 外设。如果填入 id = -1,即选择软件模拟的方式实现 I2C,这时可以使用任意引脚来模拟 I2C 总线 ,这样在初始化时就必须指定 scl 和 sda 。 软件 I2C 的初始化方式可参考 软件 I2C 示例。 可为0或1
#scl : 应该是一个 Pin 对象,指定为一个用于 scl 的 Pin 对象。(I2C0默认为9,I2C1默认为7)
#sda : 应该是一个 Pin 对象,指定为一个用于 sda 的 Pin 对象。(I2C0默认为8,I2C1默认为6)
#freq :应该是为 scl 设置的最大频率
2、I2C.scan()
#扫描所有 0x08 和 0x77 之间的 I2C 地址,然后返回一个有响应地址的列表。如果一个设备在总线上收到了他的地址,就会通过拉低 SDA 的方式来响应
3、I2C.readfrom(addr,nbytes,stop = True)
#readfrom函数其作用为通过I2C总线从设备读取数据并返回字节串
#addr :从设备地址
#nbytes :读取字符长度
#stop :是否在接收完成数据后发送结束信号
4、I2C.readfrom_into(addr, buf, stop=True)
#readfrom_into :可以将读取数据存放在指定的字符数组中
#buf :字符数组,用于存放数据
5、I2C.writeto(addr, buf, stop=True)
#writeto :函数其作用为向从设备写入数据
内存操作
1、I2C.readfrom_mem(addr, memaddr, nbytes, *, addrsize=8)
#readfrom_men :函数其总用为读取从设备的寄存器中数据
#addr :从设备地址
#memaddr :寄存器地址
#nbytes :读取字节长度
#addrsize :寄存器地址长度
2、I2C.readfrom_mem_into(addr, memaddr, buf, *, addrsize=8)
#从 addr 指定的从设备中 memaddr 地址读取数据到 buf 中,,读取的字节数是 buf 的长度。 这个方法没有返回值。
3、I2C.writeto_mem(addr, memaddr, buf, *, addrsize=8)
#将 buf 里的数据写入 addr 指定的从机的 memaddr 地址中。 这个方法没有返回值。
# @Time : 2022.3.28
# @Author : Xa_L
# @FileName: I2C_1.py
from machine import I2C,Pin
#初始化I2C通道1 ,使用GPIO6和GPIO7 分别作为SDA 和SCL 引脚,频率为10KHZ
i2c = I2C(id = 1 ,scl = Pin(7) ,sda = Pin(6), freq = 10000)
#扫描I2C总线下所有设备地址,并返回对应的列表
addr_list = i2c.scan()
if len(addr_list) == 1:
#尝试读取该设备的0x00寄存器
who = i2c.readfrom_mem(addr_list[0],0x00,1)
#如果读取数值为0xEA
if who[0] == 0xEA:
print("Just a ICM20948 connected")
else:
print("Have a device connected but it is not ICM20948")
elif len(addr_list) == 0:
print("Nothing connected")
else:
print("More than one device is conneted ")
————————————————
版权声明:本文为CSDN博主「Xa_L」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39530692/article/details/123803531
SSD1306 屏幕使用-Micropython的更多相关文章
- 深入学习 OLED Adafruit_SSD1306库(8266+arduino)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 SSD1306屏幕驱动库,最出名应该就是u8g2,读者可以参考 玩转u ...
- U8g2图形库与STM32移植(I2C,软件与硬件)
U8g2图形库 简介 U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并可以很方便地移植到 Arduino .树莓 ...
- 2022-08-12-esp32把玩记-②_用Micropython点ssd1306_oled屏幕
layout: post cid: 8 title: esp32把玩记-② 用Micropython点ssd1306 oled屏幕 slug: 8 date: 2022/08/12 15:12:39 ...
- esp32驱动SSD1306的oled显示汉字(micropython)
1.完整源码: 主函数oled.py from ssd1306 import SSD1306_SPI from ssd1306 import SSD1306 import font import ma ...
- micropython驱动sh1106点亮oled
继上一帖给esp32刷入micropython之后,忍不住给以esp12e也刷了micropython 这里先说一下webrepl: 通过wifi可以和esp8266交互,以及便携的传输文件 首次使用 ...
- 树莓派 PICO基础教程(基于MicroPython)
目录 1 树莓派 PICO 简介 1.1 简介 1.2 配置 [^2] 1.3 引脚图 1.4 尺寸 2 安装 2.1 烧录固件 2.2 安装IDE(Thonny IDE) 2.3 离线运行程序 3 ...
- SSD1306驱动的OLED实验
[转]http://bbs.21ic.com/icview-434543-1-1.html 前面几章的实例,均没涉及到液晶显示,这一章,我们将向大家介绍OLED的使用.在本章中,我们将使用战舰STM3 ...
- MicroPython之TPYBoard v102开发板控制OLED显示中文
转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近 ...
- 玩转X-CTR100 l STM32F4 l OLED显示-SSD1306无字库
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] OLED显示屏具有自发光特性,不需要背光, ...
- oled屏幕模块
oled屏幕模块似乎是厂家提供的 也许可以根据屏幕驱动芯片去写 根据现在了解的芯片一般有两个:SH1106和SSD1306 不过这次我们用的是SSD1306芯片驱动的屏幕 下面是从裸屏到模块的pcb: ...
随机推荐
- JZOJ 4744.同余
\(\text{Problem}\) \(\text{Solution}\) 考虑 \(60\) 分 设 \(f_{i,j,k}\) 表示前 \(i\) 个数,模 \(j\) 同余 \(k\) 的个数 ...
- Hexo系列(四):Hexo写文章
作者:独笔孤行 官网: http://anyamaze.com 公众号:云实战 可以执行下列命令来创建一篇新文章或者新的页面. $ hexo new [layout] <title&g ...
- OpenMediaVault5.6(OMV) 安装omv-extras - 2022.1.12
openmediavault 5.6 安装 omv-extras 转载: csdn:https://blog.csdn.net/Yu1441/article/details/116140034 先ss ...
- pip使用阿里云镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip config set install.trust ...
- VSCode 自动编译 typescript 为 javascript
1.我们默认你已经安装了node.js通过npm安装typescript npm install -g typescript 2.VSCode 里,点击"终端" "新建终 ...
- 常用的基本Dos命令
Windows+R: 输入cmd,运行控制台 #盘符切换: 盘名+: #查看当前目录下的所有文件: dir #切换目录: cd+文件名 #返回上一级: cd.. #清理屏幕: cls #退出终端: e ...
- scrapy 爬取酷狗热门歌手音乐
目录 声明 Hello,酷狗! 创建一个Scrapy项目 spider模块 分析前端界面 注意 items模块 pipeline模块 处理音频文件自定义下载路径 自定义下载图片路径 异步存入到数据库 ...
- JS中面向对象的多种继承方式
JS本身是基于面向对象开发的编程语言,面向对象开发中最重要的一个概念就是类. 类具有三大特性:封装.继承.多态 封装:类也是个函数,函数的目的是把一个功能代码进行封装,以此实现"低耦合高内聚 ...
- CryptoKit 实现 椭圆曲线ECC加密
1.有没有一种方式让两个人的对话绝对安全呢?答案是肯定有的 那就是使用 椭圆曲线ECC加密 2.椭圆曲线ECC加密原理 假设有两个用户A和B .A随机生成一个密码对包含了公钥和私钥 同理B也随机生成一 ...
- RabbitMQ Linux安装与启动服务
本文转载自 https://blog.csdn.net/chengmin123456789/article/details/124710277 1.先下载 erlang-23.2.3-1.el7.x8 ...