当前位置: 首页 > news >正文

从零玩转CanMV-K230(7)-I2C例程

文章目录

  • 前言
  • 一、IIC API
  • 二、示例
  • 总结


前言

K230内部包含5个I2C硬件模块,支持标准100kb/s,快速400kb/s模式,高速模式3.4Mb/s。 通道输出IO配置参考IOMUX模块。
在这里插入图片描述


一、IIC API

I2C类位于machine模块下。
i2c = I2C(id, freq=100000)

【参数】id: I2C ID, [0~4] (I2C.I2C0~I2C.I2C4)freq: I2C时钟频率

i2c.scan()

扫描I2C总线上的从机【参数】无【返回值】list 对象, 包含了所有扫描到的从机地址

i2c.readfrom(addr, len, True)

从总线读取数据【参数】addr: 从机地址len: 数据长度stop: 是否产生停止信号,保留,目前只能使用默认值Ture【返回值】读取到的数据,bytes 类型

i2c.readfrom_into(addr, buf, True)

读取数据并放到制定变量中【参数】addr: 从机地址buf: bytearray类型, 定义了长度,读取到的数据存放在此stop: 是否产生停止信号,保留,目前只能使用默认值Ture【返回值】无

i2c.writeto(addr, buf, True)

发送数据到从机【参数】addr: 从机地址buf: 需要发送的数据stop: 是否产生停止信号,保留,目前只能使用默认值Ture【返回值】成功发送的字节数

i2c.readfrom_mem(addr, memaddr, nbytes, mem_size=8)

读取从机寄存器【参数】addr: 从机地址memaddr: 从机寄存器地址nbytes: 需要读取的长度mem_size: 寄存器宽度, 默认为8位【返回值】返回bytes类型的读取到的数据

i2c.readfrom_mem_into(addr, memaddr, buf, mem_size=8)

读取从机寄存器值到指定变量中【参数】addr: 从机地址memaddr: 从机寄存器地址buf: bytearray类型, 定义了长度,读取到的数据存放在此mem_size: 寄存器宽度, 默认为8位【返回值】无

i2c.writeto_mem(addr, memaddr, buf, mem_size=8)

写数据到从机寄存器【参数】addr: 从机地址memaddr: 从机寄存器地址buf: 需要写的数据mem_size: 寄存器宽度, 默认为8位【返回值】无

i2c.deinit()

释放i2c资源【参数】无【返回值】无

二、示例

from machine import I2Ci2c4=I2C(4)     # init i2c4a=i2c4.scan()     #scan i2c slave
print(a)i2c4.writeto_mem(0x3b,0xff,bytes([0x80]),mem_size=8)    # write hdmi page address(0x80)
i2c4.readfrom_mem(0x3b,0x00,1,mem_size=8)   # read hdmi id0 ,value =0x17     
i2c4.readfrom_mem(0x3b,0x01,1,mem_size=8)    # read hdmi id1 ,value =0x2 i2c4.writeto(0x3b,bytes([0xff,0x80]),True)  # write hdmi page address(0x80)
i2c4.writeto(0x3b,bytes([0x00]),True)   #send the address0 of being readed
i2c4.readfrom(0x3b,1)   #read hdmi id0 ,value =0x17 
i2c4.writeto(0x3b,bytes([0x01]),True)   #send the address1 of being readed
i2c4.readfrom(0x3b,1)   #read hdmi id0 ,value =0x17 i2c4.writeto_mem(0x3b,0xff,bytes([0x80]),mem_size=8)    # write hdmi page address(0x80)
a=bytearray(1)
i2c4.readfrom_mem_into(0x3b,0x0,a,mem_size=8)   # read hdmi id0 into a ,value =0x17     
print(a)    #printf a,value =0x17 i2c4.writeto(0x3b,bytes([0xff,0x80]),True)  # write hdmi page address(0x80)
i2c4.writeto(0x3b,bytes([0x00]),True)   #send the address0 of being readed
b=bytearray(1)
i2c4.readfrom_into(0x3b,b)   #read hdmi id0 into b ,value =0x17
print(b)    #printf a,value =0x17 

总结

本章提供了IIC的API和基本用法例程

http://www.lryc.cn/news/508892.html

相关文章:

  • n阶Legendre多项式正交性的证明
  • HarmonyOS NEXT - Dialog 和完全自定义弹框
  • 内容与资讯API优质清单
  • 开源 JS PDF 库比较
  • AnaPico信号源在通信测试中的应用案例
  • 《智启新材:人工智能重塑分子结构设计蓝图》
  • 进阶岛-L2G5000
  • 单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
  • PaddlePaddle飞桨Linux系统Docker版安装
  • 一款基于.NET开发的简易高效的文件转换器
  • Spring Boot教程之三十一:入门 Web
  • 青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
  • 概率论 期末 笔记
  • Typesense:开源的高速搜索引擎
  • 【vue】圆环呼吸灯闪烁效果(模拟扭蛋机出口处灯光)
  • 飞牛 fnos 使用docker部署 Watchtower 自动更新 Docker 容器
  • 《信管通低代码信息管理系统开发平台》Linux环境安装说明
  • 基于物联网的车辆定位和防盗报警系统(论文+源码)
  • 京东零售数据可视化平台产品实践与思考
  • Vue中使用a标签下载静态资源文件(比如excel、pdf等),纯前端操作
  • ensp 基于EASY IP的公司出口链路配置
  • 方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]
  • 零知识证明:区块链隐私保护的变革力量
  • 解决:el-select可输入时失焦会失去输入框中值
  • ollama-webui - Ollama的ChatGPT 风格的 Web 界面
  • 「下载」智慧产业园区-数字孪生建设解决方案:重构产业全景图,打造虚实结合的园区数字化底座
  • 使用Grafana中按钮插件实现收发HTTP请求
  • 【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容
  • Elasticsearch介绍及安装部署
  • 物理层知识要点