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

物联网AI MicroPython学习之语法 SPI串行外设通信

学物联网,来万物简单IoT物联网!!在这里插入图片描述

SPI 介绍

  • 模块功能:
    SPI串行外设驱动

接口说明

SPI - 构建SPI对象

  • 函数原型:SPI(id, baudrate,polarity, phase,sck, mosi, miso)
  • 参数说明:
参数类型必选参数?说明
idintYspi通道,可为1或2
baudrateintNspi 波特率
polarityintNspi极性
polarity是指 SCK 空闲时候的状态
phaseenumNspi相位
phase=0 表示SCK在第1个边沿开始取样
phase=1 表示SCK在第2个边沿开始取样
sckobjectYsck引脚对象
mosiobjectYmosi引脚对象
misoobjectYmiso引脚对象
  • 返回值:
    构建的SPI对象。

SoftSPI - 构建软SPI对象

  • 函数原型:SoftSPI(baudrate,polarity, phase,sck, mosi, miso)
  • 参数说明:
参数类型必选参数?说明
baudrateintNspi 波特率
polarityintNspi极性
polarity是指 SCK 空闲时候的状态
phaseenumNspi相位
phase=0 表示SCK在第1个边沿开始取样
phase=1 表示SCK在第2个边沿开始取样
sckobjectYsck引脚对象
mosiobjectYmosi引脚对象
misoobjectYmiso引脚对象
  • 返回值:
    构建的软SPI对象。

read - 从SPI接收指定字节数的数据

  • 函数原型:read(size)
  • 参数说明:
参数类型必选参数?说明
sizeintY读取指定字节长度数据
  • 返回值:
    buffer - 读取的数据区,长度为参数size

write - 从SPI发送指定字节数的数据

  • 函数原型:write(buffer)
  • 参数说明:
参数类型必选参数?说明
bufferarray[]Y发送数据的缓冲区,期待发送的字节数为buffer的长度
  • 返回值:

readinto - 从SPI接收指定字节数的数据,并放在缓冲区

  • 函数原型:readinto(buffer)
  • 参数说明:
参数类型必选参数?说明
bufferarray[]Y读取数据并存放在缓冲区
  • 返回值:
    buffer - 读取的数据区,长度为参数size

write_readinto - SPI先发送数据再接收数据

  • 函数原型:write_readinto(sendbuf, recvbuf)
  • 参数说明:
参数类型必选参数?说明
sendbufarray[]Y发送数据的存储数组,期待发送的字节数为sendbuf的长度。
recvbufarray[]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) # 先发送再接收数据

http://www.kler.cn/a/135375.html

相关文章:

  • 【QT常用技术讲解】优化网络链接不上导致qt、qml界面卡顿的问题
  • Gartner发布安全平台创新洞察:安全平台需具备的11项常见服务
  • C 语言 【模拟实现内存库函数】
  • 今日 AI 简报 | 开源 RAG 文本分块库、AI代理自动化软件开发框架、多模态统一生成框架、在线图像背景移除等
  • 密码学的基本原理
  • Java面向对象编程进阶之包装类
  • Kotlin 知识体系
  • 4-5学生分数对应的成绩
  • electron使用better-sqlite3打包失败(electron打包有进程没有界面)
  • 起立科技(起鸿)在第25届高交会上展示透明OLED技术创新
  • 22年+21年 计算机能力挑战赛初赛C语言程序题 题解
  • linux结束 java jar
  • Cesium 问题:输出的 纬度 latitude 是 0
  • 可以自己实现的Python小游戏,共十四个可收藏可直接拿走~
  • 大数据时代,怎样通过日志分析保护我们的数据!
  • 一篇博客读懂双向链表
  • 电机应用开发-PID控制器参数整定
  • Git使用指南
  • 2023前端大厂高频面试题之CSS篇(2)
  • JVM中的 -Xms参数 设置 JVM 的初始堆大小
  • 【数据结构】——双链表(增删查改)
  • Django_学习_02
  • GO 抽象工厂模式设计
  • 『亚马逊云科技产品测评』活动征文|通过lightsail一键搭建Drupal VS 手动部署
  • 快速集成Skywalking 9(Windows系统、JavaAgent、Logback)
  • Django学习日志08