当前位置: 首页 > 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/news/135375.html

相关文章:

  • 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
  • 详解JS遍历数组的十八种方法
  • 微分方程,含矩阵的指数函数
  • MAC上修改mysql的密码(每一步都图文解释哦)
  • html-网站菜单-点击菜单展开相应的导航栏,加减号可切换
  • LaTex 空行
  • 企业实现员工聊天和转账行为的实时监管
  • 见面礼——图论
  • 01_SHELL编程之变量定义(一)
  • 【Python】12 GPflow安装
  • 大批量合并识别成一个表或文档的方法