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

SPI简介与实例分析

SPI简介

SPI 协议是由Motorola提出的通讯协议 (Serial Peripheral Interface) ,是一种高速全双工的串行通信总线。

SPI 通讯使用 3 条总线 :SCK、 MOSI、 MISO ,以及若干片选线(SS、CS、NSS)。

主机要和哪个从机通信,就把对应的片选线拉低,由高变低是起始信号,由低边高是停止信号



CPOL/CPHA 及通讯模式

时钟极性 CPOL 是指 空闲状态时SCK 的电平信号。CPOL=0 时, SCK 在空闲状态为低电平, CPOL=1 时则反之。

时钟相位 CPHA 是指数据的采样的时刻。当 CPHA=0 时, 信号将会在SCK 时钟线的**“奇数边沿”**被采样, CPOL=1 时则反之。

所以SPI就有4种通讯模式,实际中采用较多的是“模式 0”与“模式 3

模式CPOLCPHASCK空闲状态采样时刻
000低电平奇数边沿
101低电平偶数边沿
210高电平奇数边沿
311高电平偶数边沿



实例分析

逻辑分析仪图示

已知:SPI使用的是模式1,输入的数据是0x58 0x03,收到的数据是0x00 0x00 0x00 0xA4,和图示完全符合。

图片可能不太好放大看,文末提供源文件。

在这里插入图片描述


相关实验代码(ESP32)

void bl0942_init()
{esp_err_t ret;static spi_bus_config_t buscfg={.miso_io_num = PIN_NUM_MISO,.mosi_io_num = PIN_NUM_MOSI,.sclk_io_num = PIN_NUM_CLK,.quadwp_io_num = -1,.quadhd_io_num = -1,.max_transfer_sz = 1024};// 初始化spiret = spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);ESP_LOGI(TAG, "spi_bus_initialize = %d", ret);static spi_device_interface_config_t devcfg={.clock_speed_hz = 500 * 1000,.mode = 1,.spics_io_num = -1,     // 不使用片选.queue_size = 7,.pre_cb = NULL  //传输前的回调};// 添加从设备ret = spi_bus_add_device(SPI2_HOST, &devcfg, &gw_spi);ESP_LOGI(TAG, "spi_bus_add_device = %d", ret);
}int bl0942_spi_r(uint8_t ICAddr, uint8_t cmd)
{int ret;uint8_t CHECKSUM = 0;spi_transaction_t t;memset(spi_tx_buf, 0, sizeof(spi_tx_buf));spi_tx_buf[0] = ICAddr;spi_tx_buf[1] = cmd;memset(&t, 0, sizeof(t));t.length = 8 * 6;t.tx_buffer= spi_tx_buf;t.rx_buffer= spi_rx_buf;t.user=(void*)0;ret = spi_device_polling_transmit(gw_spi, &t);if (ret != 0){ESP_LOGE(TAG, "spi_device_polling_transmit err");return -1;}return 0;
}void bl0942_read_all()
{bl0942_spi_r(0x58, 0x03);ESP_LOG_BUFFER_HEX(TAG, spi_rx_buf+2, 4);// 00 00 00 a4
}



逻辑分析仪源文件

逻辑分析仪型号:Kingst LA1010

软件与源文件点击下载

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

相关文章:

  • 通过基于pgsql的timescaleDB的time_bucket函数实现自定义聚合粒度
  • 一台电脑安装26个操作系统(windows,macos,linux)
  • dockerfile文件
  • 视觉SLAM ch11回环检测
  • 关于Ubuntu20.04文件系统思考
  • 内嵌于球的等边三棱柱
  • 论文解读 | [CVPR2020] ContourNet:向精确的任意形状场景文本检测迈出进一步
  • 干货分享|数据可视化报表制作技巧
  • Longhorn,企业级云原生容器分布式存储 - 备份与恢复
  • 亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana、编写搜索功能、向ES同步数据库商品数据)
  • windwos安装spring-cloud-alibaba-nacos
  • Spring Boot 项目如何统一结果,统一异常,统一日志
  • Ubuntu下用Lean源码编译openwrt及一行命令u盘启动openwrt安装x86硬盘上
  • JavaScript Number 对象
  • 【原创】java+swing+mysql银行ATM管理系统
  • 博弈论--总结
  • AMBA低功耗接口规范(Low Power Interface Spec)
  • matlab-汽车四分之一半主动悬架模糊控制
  • 【安全加密】通信加密算法介绍
  • kubernetes教程 --组件详细介绍
  • 数字化系统使用率低的原因剖析
  • <<Java开发环境配置>>7-Apache Tomcat安装教程环境变量配置IDEA配置
  • 互联网大厂测开面试记,二面被按地上血虐,所幸Offer已到手
  • 网络管理之设备上线技术的发展现状和趋势
  • SQL67 返回固定价格的产品
  • webpack 开发环境的基本配置(webpack打包样式资源、html、图片、devserver、开发环境配置、以及其他资源)
  • 刷题记录:牛客NC14402求最大值
  • javaEE 初阶 — 传输层 TCP 协议 中的延迟应答与捎带应答
  • STM32单片机初学8-SPI flash(W25Q128)数据读写
  • MS-SQL创建查询排序语句总结