视觉识别模块
0、学前先看&供电说明
1、固件下载与烧录
2、安装编程环境
3、调试运行例程
4、离线运行例程
5、Micropython 快速入门
6、GUI程序使用说明
7、二维云台安装教程
8、FPIOA引脚分配
9、RGB灯
10、蜂鸣器
11、按键
12、串口通信
13、I2C通讯
14、PWM
15、WDT看门狗
16、定时器计时
17、傅里叶变换
18、SHA256加密
19、AES加密
20、多线程
21、文件读写
22、图像显示
23、触摸显示
24、摄像头显示
25、图像翻转
26、照相机
27、绘制圆形
28、绘制矩形
29、绘制椭圆
30、绘制箭头
31、绘制十字准心
32、绘制文字
汝城县职业中等专业学校知识库-信息中心朱老师编辑
-
+
首页
13、I2C通讯
 ## 简介 本节教程中,我们将学习如何使用K230的 I2C 接口进行通信 我们会用K230的IIC1,点亮一块128\*32的OLED屏幕作为IIC的使用示例  > 什么是IIC (I2C, I²C) ? > > 和前一节我们学过的UART一样,IIC(I²C)也是一种串行通信协议。这节教程的最后我们会简单了解一下这两种通信协议的区别 ## 接线 我们按照如图所示的方法接线:  实拍图如下:  ## 驱动OLED 将下面的代码复制到CanMV IDE中并运行 \# 导入 machine 模块中的 I2C 和 FPIOA 类 \# (Import the I2C and FPIOA classes from the machine module) from machine import I2C from machine import FPIOA \# 导入 ssd1306 模块中的 SSD1306\_I2C 类 \# (Import the SSD1306\_I2C class from the ssd1306 module) from ybUtils.ssd1306 import SSD1306\_I2C \# 导入时间模块 \# (Import the time module) import time \# 实例化 FPIOA 对象 \# (Create an instance of the FPIOA object) fpioa = FPIOA() \# 创建 I2C 实例,使用 I2C 通道 1 \# (Create an I2C instance, using I2C channel 1) i2c = I2C(1) \# 配置引脚功能: \# - 将 GPIO 引脚 34 映射到 I2C1\_SCL 功能 \# - 将 GPIO 引脚 35 映射到 I2C1\_SDA 功能 \# (Configure pin functions: \# - Map GPIO pin 34 to I2C1\_SCL function \# - Map GPIO pin 35 to I2C1\_SDA function) fpioa.set\_function(34, FPIOA.IIC1\_SCL, oe\=1, ie\=1, pu\=1, st\=1, ds\=15) fpioa.set\_function(35, FPIOA.IIC1\_SDA, oe\=1, ie\=1, pu\=1, st\=1, ds\=15) \# 创建 SSD1306 OLED 显示器实例 \# (Create an SSD1306 OLED display instance) \# 设置 OLED 显示器的分辨率为 128x32 \# (Set the OLED display resolution to 128x32) oled = SSD1306\_I2C(128, 32, i2c) \# 清除 OLED 显示器的内容 \# (Clear the content of the OLED display) oled.fill(0) \# 在 OLED 显示器上显示文字 "Hello Yahboom",在坐标 (0, 10) 处 \# (Display the text "Hello Yahboom" on the OLED display at coordinates (0, 10)) oled.text('Hello Yahboom', 0, 10) \# 遍历 OLED 显示器的所有像素 \# (Iterate through all the pixels of the OLED display) for x in range(128): for y in range(32): \# 获取指定像素的值 \# (Get the value of the specified pixel) a = oled.pixel(x, y) \# 如果像素值为 1(亮起),则打印坐标 \# (If the pixel value is 1 (lit up), print the coordinates) if a == 1: print(x, y) \# 更新 OLED 显示器的内容 \# (Update the content of the OLED display) oled.show() 可以看到OLED屏幕上显示出了如图所示的效果  代码执行的流程图如下:  ## 扩展内容 ### SSD1306 SSD1306是一款单色OLED显示控制器芯片,广泛应用于小型显示模块中。 > 驱动SSD1306显示中文需要做额外的处理,在K230固件里的SSD1306驱动库未做支持 ### UART 和 IIC IIC(I²C)是一种串行通信总线,由飞利浦公司开发,用于连接低速外围设备和微控制器。 它只需要两根线:串行数据线(SDA)和串行时钟线(SCL),可支持多主设备和多从设备。 IIC与UART的主要区别: * IIC使用两根线(SDA和SCL),而UART使用两根线(TX和RX) * IIC支持多设备总线,UART通常是点对点通信 * IIC有主从设备之分,UART两端设备地位平等 * IIC有地址寻址机制,UART没有 * IIC由时钟同步,UART使用固定波特率 **怎么选择使用IIC还是UART**? 使用UART的场景: * 需要简单的点对点通信 * 通信距离较远(可达几十米) * 需要全双工通信(同时收发数据) * 不需要太多连接设备 * 对通信速度要求较高但不苛刻(通常115200bps以内) * 例如:与PC通信、调试输出、连接GPS模块、蓝牙模块等 使用IIC的场景: * 需要在单板上连接多个设备(多主多从) * PCB空间有限,需要节省IO口 * 通信距离短(通常在板内或相邻板之间) * 连接低速外设如传感器、EEPROM、实时时钟等 * 通信速度要求不高(标准模式100kbps,快速模式400kbps) * 例如:连接温湿度传感器、加速度计、OLED显示屏等
admin
2025年12月30日 14:14
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期
AI