1755浏览
查看: 1755|回复: 1

[官方教程] 【新手基础教程】片上外设之 SPI 的使用

[复制链接]

SPI 的使用

关于 SPI 详细介绍请参考SPI-API 文档.

1. 使用方法

1.1. 主机模式

  • 从 machine 导入 SPI 模块
from machine import SPI
  • 配置使用到的 pin 脚为片选 GPIO 功能和 SPI 功能.
fm.register(25,fm.fpioa.GPIOHS10, force=True)#cs
cs = GPIO(GPIO.GPIOHS10, GPIO.OUT)

fm.register(28,fm.fpioa.SPI1_D0, force=True)#mosi
fm.register(26,fm.fpioa.SPI1_D1, force=True)#miso
fm.register(27,fm.fpioa.SPI1_SCLK, force=True)#sclk
  • 创建 SPI 对象
spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=10000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB)
  • 使用片选 GPIO 选中从机, 通过 SPI 读写数据
cs.value(0)
spi1.write_readinto(w, r)
cs.value(1)

1.2. 从机模式

K210 SPI 从机模式只支持三线通信,因此 MaixPy 中并没有实现该模式,需要从机模式可参考SPI_SLAVE 裸机实现

2. 示例

  • 选中片选 GPIO 对应从机并收发数据
from machine import SPI
from fpioa_manager import fm
from Maix import GPIO

m.register(25,fm.fpioa.GPIOHS10, force=True)#cs
cs = GPIO(GPIO.GPIOHS10, GPIO.OUT)

fm.register(28,fm.fpioa.SPI1_D0, force=True)#mosi
fm.register(26,fm.fpioa.SPI1_D1, force=True)#miso
fm.register(27,fm.fpioa.SPI1_SCLK, force=True)#sclk

spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=10000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB)

w = b'\xFF'
r = bytearray(1)

cs.value(0)
print(spi1.write_readinto(w, r))
cs.value(1)

empty  版主

发表于 2021-3-30 11:09:13

顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail