物联网AI MicroPython学习之语法 SPI串行外设通信
学物联网,来万物简单IoT物联网!!
SPI 介绍
- 模块功能:
SPI串行外设驱动
接口说明
SPI - 构建SPI对象
- 函数原型:SPI(id, baudrate,polarity, phase,sck, mosi, miso)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| id | int | Y | spi通道,可为1或2 |
| baudrate | int | N | spi 波特率 |
| polarity | int | N | spi极性 polarity是指 SCK 空闲时候的状态 |
| phase | enum | N | spi相位 phase=0 表示SCK在第1个边沿开始取样 phase=1 表示SCK在第2个边沿开始取样 |
| sck | object | Y | sck引脚对象 |
| mosi | object | Y | mosi引脚对象 |
| miso | object | Y | miso引脚对象 |
- 返回值:
构建的SPI对象。
SoftSPI - 构建软SPI对象
- 函数原型:SoftSPI(baudrate,polarity, phase,sck, mosi, miso)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| baudrate | int | N | spi 波特率 |
| polarity | int | N | spi极性 polarity是指 SCK 空闲时候的状态 |
| phase | enum | N | spi相位 phase=0 表示SCK在第1个边沿开始取样 phase=1 表示SCK在第2个边沿开始取样 |
| sck | object | Y | sck引脚对象 |
| mosi | object | Y | mosi引脚对象 |
| miso | object | Y | miso引脚对象 |
- 返回值:
构建的软SPI对象。
read - 从SPI接收指定字节数的数据
- 函数原型:read(size)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| size | int | Y | 读取指定字节长度数据 |
- 返回值:
buffer - 读取的数据区,长度为参数size
write - 从SPI发送指定字节数的数据
- 函数原型:write(buffer)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| buffer | array[] | Y | 发送数据的缓冲区,期待发送的字节数为buffer的长度 |
- 返回值:
无
readinto - 从SPI接收指定字节数的数据,并放在缓冲区
- 函数原型:readinto(buffer)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| buffer | array[] | Y | 读取数据并存放在缓冲区 |
- 返回值:
buffer - 读取的数据区,长度为参数size
write_readinto - SPI先发送数据再接收数据
- 函数原型:write_readinto(sendbuf, recvbuf)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| sendbuf | array[] | Y | 发送数据的存储数组,期待发送的字节数为sendbuf的长度。 |
| recvbuf | array[] | Y | 接收数据的存储数组,期待接收的字节数为recvbuf的长度。 |
- 返回值:
无 - 案例代码
from machine import Pin, SoftSPI, SPI# 软SPI创建对象
spi = SoftSPI(baudrate=100000, polarity=1, phase=0, sck=Pin(0), mosi=Pin(2), miso=Pin(4))
# 硬件SPI创建对象
spi = SPI(1, 10000000, sck=Pin(14), mosi=Pin(13), miso=Pin(12))buf = bytearray(10) # 建立缓冲区
buf = spi.read(10) # 读取10字节数据spi.readinto(buf) # 读取数据并存放在缓冲区 (这里读取10个字节)spi.write(b'12345') # 在MOSI引脚上写5字节数据sendbuf = bytearray(40) # 建立缓冲区
recvbuf = bytearray(40) # 建立缓冲区
spi.write_readinto(sendbuf, recvbuf) # 先发送再接收数据
相关文章:
物联网AI MicroPython学习之语法 SPI串行外设通信
学物联网,来万物简单IoT物联网!! SPI 介绍 模块功能: SPI串行外设驱动 接口说明 SPI - 构建SPI对象 函数原型:SPI(id, baudrate,polarity, phase,sck, mosi, miso)参数说明: 参数类型必选参…...
电动汽车充放电V2G模型MATLAB代码
微❤关注“电气仔推送”获得资料(专享优惠) 主要内容: 本程序主要建立电动汽车充放电V2G模型,采用粒子群算法,在保证电动汽车用户出行需求的前提下,为了使工作区域电动汽车尽可能多的消纳供给商场基础负荷…...
【大数据Hive】hive 优化策略之job任务优化
目录 一、前言 二、hive执行计划 2.1 hive explain简介 2.1.1 语法格式 2.1.2 查询计划阶段说明 2.2 操作演示 2.2.1 不加条件的查询计划分析 2.2.2 带条件的查询计划分析 三、MapReduce属性优化 3.1 本地模式 3.1.1 本地模式参数设置 3.1.2 本地模式操作演示 3.2 …...
OpenAI再次与Altman谈判;ChatGPT Voice正式上线
11月22日,金融时报消息,OpenAI迫于超过700名员工联名信的压力,再次启动了与Sam Altman的谈判,希望他回归董事会。 在Sam确定加入微软后,OpenAI超700名员工签署了一封联名信,要求Sam和Greg Brockman&#x…...
【JS】Chapter15-高阶技巧
站在巨人的肩膀上 黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 (十五)高阶技巧 1. 深浅拷贝 开发中我们经常需要复制一个对象。如果直接用赋值会有下面问题:/…...
Google Chrome 任意文件读取 (CVE-2023-4357)漏洞
漏洞描述 该漏洞的存在是由于 Google Chrome 中用户提供的 XML 输入验证不足。远程攻击者可以创建特制网页,诱骗受害者访问该网页并获取用户系统上的敏感信息。远程攻击者可利用该漏洞通过构建的 HTML 页面绕过文件访问限制,导致chrome任意文件读取。Li…...
psql 模式(SCHEMA)
模式是数据库领域的一个基本概念,有些数据库把模式和用户合二为一了,而postgresql则是有清晰的模式定义。 模式是数据库中的一个概念,可以理解为一个命名空间或目录,不同模式下可以有相同名称的表、函数等对象而不会产生冲突。提出…...
网络吞吐量 公网带宽有关吗?
环境: 华为交换机 深信服防火墙 问题描述: 网络吞吐量 公网带宽有关吗? 解决方案: 网络吞吐量网络吞吐量是指在特定时间内通过网络传输的数据量。它衡量了网络设备(如防火墙、交换机、路由器)或网络连…...
Linux设置静态IP
Linux设置静态IP 使用ip addr查看ip,如下所示就是动态IP 1、什么是静态IP? 静态ip就是固定的ip,需要手动设置。静态IP地址(又称固定IP地址)是长期分配给一台计算机或网络设备使用的 IP 地址。一般来说,一…...
六、Big Data Tools安装
1、安装 在Jetbrains的任意一款产品中,均可安装Big Data Tools这个插件。 2、示例 下面以DadaGrip为例: (1)打开插件中心 (2)搜索Big Data Tools,下载 3、链接hdfs (1࿰…...
数据结构【DS】特殊二叉树
完全二叉树 叶子结点只能出现在最下层和次下层, 最下层的叶子结点集中在树的左部完全二叉树中, 度为1的节点数 0个或者1个【计算时可以用这个快速计算, 配合𝑛0𝑛21】若n为奇数,则分支节点每个都有左右孩子;若n为偶数࿰…...
【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包
在Linux系统中先安装java的JDK 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可 # 配置运行日志输出的路径 export log_path/usr/local/project/study-pro/logs # 当前服务运行的脚本命令 export exec_cmd"nohup /u…...
交替最小二乘法
前置概念导入 协同过滤(Collaborative Filtering):这是一种推荐系统的方法,依据用户之间或物品之间的相似性来进行推荐。协同过滤通常分为两种主要类型:用户基于(user-based)和物品基于…...
封面从这里取好啦
文章目录 前端NPMViteNode.js 后端JavaMavenPython 数据库算法 前端 NPM Vite Node.js 后端 Java Maven Python 数据库 算法...
DM8共享集群DSC初始化DB实例报错
DM8共享集群DSC初始化DB实例报错 问题描述 启动dmcss和dmasmsvr服务启动后,初始化DB实例提示如下报错: [dmdbalocalhost DSC0]$ /dmdb8/dmdbms/bin/dminit control/dmdb8/dmdbms/dsc_config/DSC0/dminit.ini initdb V8 db version: 0x7000c file dm.k…...
大师学SwiftUI第18章Part1 - 图片选择器和相机
如今,个人设备主要用于处理图片、视频和声音,苹果的设备也不例外。SwiftUI可以通过Image视图显示图片,但需要其它框架的支持来处理图片、在屏幕上展示视频或是播放声音。本章中我们将展示Apple所提供的这类工具。 图片选择器 Swift…...
【电子通识】USB3.0和USB2.0有什么区别?
版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别,还是以前的那个样子,使用黑色颜色用标识 USB3.0它有一个S…...
在VSCode创建vue项目,出现“因为在此系统上禁止运行脚本”问题
问题:vue : 无法加载文件 C:\Users\***\***\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 ht tps:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 解决ÿ…...
OpenCV快速入门:目标检测——轮廓检测、轮廓的距、点集拟合和二维码检测
文章目录 前言一、轮廓检测1.1 图像轮廓的概念1.2 轮廓检测算法简介1.3 轮廓检测基本步骤1.4 轮廓检测函数说明1.4.1 轮廓发现1.4.2 轮廓面积1.4.3 轮廓周长1.4.4 轮廓外接多边形1.4.5 点到轮廓距离1.4.6 凸包检测 1.5 轮廓检测代码实现 二、轮廓的距2.1 几何距2.2 中心距2.3 H…...
基于STM32的烟雾浓度检测报警仿真设计(仿真+程序+讲解视频)
这里写目录标题 📑1.主要功能📑2.仿真📑3. 程序📑4. 资料清单&下载链接📑[资料下载链接](https://docs.qq.com/doc/DS0VHTmxmUHBtVGVP) 基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 仿真图prot…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
