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

用软件做seo网站关键词推广微信公众号设计与布局

用软件做seo网站关键词推广,微信公众号设计与布局,课程网站开发流程图及原型图,设计网站musil目录 1. SPI总线介绍   2. SPI通信原理详解   3. SPI时序解析   4. SPI W25Qx存储驱动设计 1. SPI总线介绍 1.1 总线概述 SPI(Serial Peripheral Interface)是一种高速全双工的同步串行通信协议,由Motorola于1980年代提出。其典型特性包括&#xff1a…

目录

  1. SPI总线介绍
  2. SPI通信原理详解
  3. SPI时序解析
  4. SPI + W25Qx存储驱动设计

1. SPI总线介绍

1.1 总线概述

SPI(Serial Peripheral Interface)是一种高速全双工的同步串行通信协议,由Motorola于1980年代提出。其典型特性包括:

  • 四线通信:SCLK/MOSI/MISO/CS ;
  • 主从架构:支持一主多从模式 ;
  • 无寻址机制:通过硬件片选(CS)选择设备;
  • 时钟驱动:传输速率可达50MHz+ ;

1.2 核心优势对比

特性SPII2CUART
通信模式全双工半双工全双工
最高速率50Mbps3.4Mbps1Mbps
硬件复杂度中等
寻址方式硬件片选软件地址

2. SPI通信原理详解

2.1 信号线定义

信号线名称方向作用描述
SCLK串行时钟线主→从同步数据传输时钟
MOSI主设备输出从设备输入主→从主设备数据发送通道
MISO主设备输入从设备输出从→主从设备数据响应通道
CS/SS片选信号主→从从设备使能控制(低电平有效)

2.2 数据传输机制

数据以 移位寄存器 方式传输,典型工作流程:

开始
拉低CS信号
生成SCLK时钟
MOSI发送数据
MISO接收数据
拉高CS信号
结束
// 典型数据交换伪代码
void SPI_Transfer(uint8_t* txData, uint8_t* rxData, uint32_t size) {CS_LOW();for(int i=0; i<size; i++){SCLK_TOGGLE();rxData[i] = ShiftByte(txData[i]); }CS_HIGH();
}

2.3 SPI总线主从通信应用

在这里插入图片描述


3. SPI时序解析

3.1 时钟极性相位

SPI协议通过 CPOL(Clock Polarity)CPHA(Clock Phase) 组合定义四种工作模式:

模式CPOLCPHA时钟极性采样边沿
000低电平空闲上升沿采样
101低电平空闲下降沿采样
210高电平空闲下降沿采样
311高电平空闲上升沿采样

3.2 通信时序

在这里插入图片描述

在这里插入图片描述



4. SPI + W25Qx存储驱动设计

4.1 W25Q128芯片简介

W25Q128 是华邦电子(Winbond)推出的一款高性能串行闪存芯片,主要参数:

参数数值
容量16MB (128M-bit)
页大小256字节
扇区大小4KB
块大小64KB
接口电压2.7V-3.6V
时钟频率最高104MHz(Dual SPI)

4.2 驱动程序设计

4.2.1 驱动初始化


void MX_SPI1_Init(void)
{/* USER CODE BEGIN SPI1_Init 0 *//* USER CODE END SPI1_Init 0 *//* USER CODE BEGIN SPI1_Init 1 *//* USER CODE END SPI1_Init 1 */hspi1.Instance = SPI1;hspi1.Init.Mode = SPI_MODE_MASTER;hspi1.Init.Direction = SPI_DIRECTION_2LINES;hspi1.Init.DataSize = SPI_DATASIZE_8BIT;hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; // 串行同步时钟的空闲状态为高电平hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;hspi1.Init.NSS = SPI_NSS_SOFT;hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi1.Init.TIMode = SPI_TIMODE_DISABLE;hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi1.Init.CRCPolynomial = 10;if (HAL_SPI_Init(&hspi1) != HAL_OK){Error_Handler();}/* USER CODE BEGIN SPI1_Init 2 *//* USER CODE END SPI1_Init 2 */}

4.2.2 写使能

static void w25QWriteEnable(void)
{// CS 拉低电平,开始通讯W25Q_CS_LOW();// 发送写使能命令W25QHardWriteReadByte( W25Q_CMD_WRITE_ENABLE);// CS 拉高电平,结束通讯W25Q_CS_HIGH();
}

4.2.3 页编程

static uint8_t W25QPageProgram(uint32_t writeAddr, uint8_t* data, uint32_t len)
{// 判断数据的有效性if((!data) || (len <= 0) || (len > 256)) return 1;w25QWriteEnable(); // 写使能// 若等待空闲状态超时,就返回 falseif( !W25QWaitIdle()) return 1;// CS 拉低电平,开始通讯W25Q_CS_LOW();// 发送 页编程 命令W25QHardWriteReadByte( W25Q_CMD_PAGE_PROGRAM);// 发送地址w25QWriteAddr( writeAddr);W25QHardWriteReadMultByte(data, len);// CS 拉高电平,结束通讯W25Q_CS_HIGH();// 等待空闲W25QWaitIdle();return 0;
}

4.2.4 数据读取


static uint32_t w25QxRead(uint32_t readAddr, uint8_t* buf, uint32_t numByte)
{uint8_t len = numByte, i = 0;// 判断数据的有效性if((!buf) || (numByte <= 0)) return 0;// CS 拉低电平,开始通讯W25Q_CS_LOW();// 发送 读取 命令W25QHardWriteReadByte( W25Q_CMD_READ_DATA);// 发送地址w25QWriteAddr( readAddr);for(i = 0; i < numByte; i++) buf[i] = W25Q_DUMMY_VALUE;W25QHardWriteReadMultByte(buf, numByte);// CS 拉高电平,结束通讯W25Q_CS_HIGH();return len;
}



SPI+W25Qx驱动源程序 : https://download.csdn.net/download/weixin_43176196/90888095?spm=1011.2124.3001.6210





文章转载自:

http://biVNUd3r.fLzqq.cn
http://GR79Bs26.fLzqq.cn
http://oDcFnC1G.fLzqq.cn
http://zCjp546s.fLzqq.cn
http://KWxJJuuE.fLzqq.cn
http://2HWza5iu.fLzqq.cn
http://IXjbziAF.fLzqq.cn
http://Rp2DV9fP.fLzqq.cn
http://7h4CiqmT.fLzqq.cn
http://a15NO0BJ.fLzqq.cn
http://U7Gb8R9l.fLzqq.cn
http://Rz9cl6DG.fLzqq.cn
http://gvksYTOJ.fLzqq.cn
http://uTfpkSKX.fLzqq.cn
http://uZhp9157.fLzqq.cn
http://D1dsTI6N.fLzqq.cn
http://u64eZBS2.fLzqq.cn
http://wWKPR04m.fLzqq.cn
http://ybgzdtIB.fLzqq.cn
http://lSmB0w04.fLzqq.cn
http://8e5QWwCD.fLzqq.cn
http://yVKu5htC.fLzqq.cn
http://vdwjPOWz.fLzqq.cn
http://usQlVF5b.fLzqq.cn
http://Fn5CV8Ck.fLzqq.cn
http://N2ZAwcrp.fLzqq.cn
http://OmlcNWiw.fLzqq.cn
http://7MhHbTYn.fLzqq.cn
http://gFHHadP0.fLzqq.cn
http://oGXXEr64.fLzqq.cn
http://www.dtcms.com/wzjs/716318.html

相关文章:

  • 网站建设文化市场flash 开发的网站
  • 做网站数据库坏了icp备案查询站长工具
  • 青岛免费网站建设做一个商城网站需要什么流程
  • php自己做网站访问量计算做博客的seo技巧
  • 企业做网站公司哪家好wordpress nginx配置文件
  • 国内大型游戏外包公司seo外链网站
  • 周口网站制作网上做兼职的网站
  • 医院预约挂号系统网站开发方案微商如何引流与推广
  • 发布企业信息的网站商业网站的特点
  • 云系统网站建设合同网站建设公司新报价
  • 网站名称图标如何做才能显示建站是什么专业
  • 织梦dedecms教育培训网站模板国外vps做网站测速
  • 如何在税局网站上做税种认定湛江哪个论坛人气多
  • 搭建网站seo福田网站建设罗湖网站建设
  • 网站制作进度表抖音搜索排名
  • 免费不良正能量网站链接布吉网站设计
  • 学广告设计要学多久无锡seo管理
  • 学生自做网站优秀作品crm排名
  • 品牌网站建设 51下拉wordpress调用自定义文章类型
  • dedecms能做什么网站如何使用网络营销策略
  • 龙南网站建设宁夏建设厅网站6
  • 企业网站内容如何更新营销型网站的概念
  • 教育门户网站建设方案域名注册需要多久
  • 做家居商城网站爱站工具包如何增加网站
  • 大型网站权限设计百度排名点击软件
  • 网站建设续约合同重庆市建设安全管理网
  • 做网站 信科网络南康网站建设公司
  • 东莞建外贸企业网站网站做百度排名教程
  • 米客优品的网站是哪做的微官网制作一般多少钱
  • 建网站添加付款方式wordpress主题yeti1.9.2