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

做生鲜管理系统的网站seo怎么优化软件

做生鲜管理系统的网站,seo怎么优化软件,文库网站建设,天河区做网站SPI外设 一、简介 STM32F4XX内部集成硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担,可配置8位/16位数据帧,高位(最常用)/低位先行,三组SPI接口,支持DMA…

SPI外设

一、简介

STM32F4XX内部集成硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担,可配置8位/16位数据帧,高位(最常用)/低位先行,三组SPI接口,支持DMA

SPI框图
由上图可知SPI是通过接收/发送缓冲区移位寄存器进行通信,其中SPI1是在APB2总线,SPI2、SPI3在APB1总线。发送和接收共用一个SR,即SPI是同步通信接口。SS引脚一般用GPIO口指定从机,硬件NSS引脚一般是用来配置多主机模式。
发送:数据先进入TDR,经SR通过MOSI向从机输出
接收:数据由MISO进入SR,然后经过RDR向地址数据总线输出
由此可对上面SPI框图进行简化,基本结构如下
SPI基本结构
这里给出SPI主模式全双工连续传输模式下的时序图,SPI主模式全双工
上图选择的是模式3,SCK高电平为空闲状态,在SCK第一个边沿移出数据,第二个编译移入数据。上面时序图采用小端模式,低位先行,这里对进行分析
发送:

  • SS置低电平,开始时序,选中从机。此时TXE = 1,TDR为空;RXNE = 0,RDR为空。BSY = 1
  • 软件写入0xF1到SPI_DR,即要发送的第一个数据,此时TXE = 0,RXNE = 0,TDR非空
  • TDR中的0xF1会立刻转入到SR中,TDR清空,MOSI开始发送同时TXE = 1
  • 软件等待TXE = 1,然后写入0xF2到SPI_DR,即要发送的第二个数据,此时TXE = 0,RXNE = 0
  • TDR中的0xF2会随后自动进入SR,MOSI在发送完第一个数据会自动发送第二个数据
  • TDR发送完所有数据,TXE会自动置1,SR发送完所有数据后,BSY = 0

接收:

  • SS置低电平,开始时序,选中从机。此时TXE = 1,TDR为空;RXNE = 0,RDR为空。BSY = 1
  • MISO依次接收从机的数据,输出到SR
  • SR中的数据以小端模式进入到SPI_DR中
  • 软件等待RXNE = 1,然后数据总线读取RDR中的数据0xA1,同时RXNE = 0,RDR变为空
  • MISO接收第二个数据,输出到SR
  • SR中的第二个数据以小端模式进入到SPI_DR中
  • 软件等待RXNE = 1,然后数据总线读取RDR中的第二个数据,同时RXNE = 0,RDR变为空
  • RDR接收完所有数据,RXNE = 0

由上图可知,SPI全双工连续通信是交叉进行的,发送数据1,发送数据2,再接收数据1;发送数据3,再接收数据2;在时序上要求操作之间的间隙非常小。
SPI非连续全双工通信
非连续传输模式,只需要四行代码。上图是SPI模式3,SCK高电平为空闲状态,分析如下

  • SS置低电平,选中从机,开始时序此时TXE = 1,RXNE = 0,TDR为空
  • 软件写入0xF1到SPI_DR,此时TDR = 0xF1,TXE = 0
  • TDR中的0xF1立即进入SR中,MOSI开始发送0xF1,TDR清空,TXE = 1
  • 等待MOSI将第一个字节数据发送完毕,此时接收第一个字节数据的时序也完成,即RXNE = 1
  • 读取接收到的第一个字节数据,然后将第二个字节数据写入TDR,开始发送第二个数据
  • 等待MOSI发送完第二个字节数据,此时接收到了第二个字节数据
  • 读取完第二个字节数据,然后将第三个字节数据写入TDR,开始发送第三个数据

整体流程就是:等待TXE = 1,写入数据到TDR,等待RXNE = 1,读取RDR数据。这样实现发送数据1接收数据1,发送数据2接收数据2。但是字节之间存在一定的间隙,降低传输效率。

二、实验案例

进行STM32F4XX对板载W25Q16读写,代码如下

#include "stm32f4xx.h"                  // Device header//硬件SPI通信,采用非连续传输方案
/*PB0引脚模拟SS输出*/
void MySPI_W_SS(uint8_t BitValue)
{GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)BitValue);//片选引脚输出
}/*SS->PB0,MISO->PB4,MOSI->PB5,SCK->PB3,板载W25Q16支持SPI模式0和模式3*/
/*
*	SPI1是在APB2总线,SPI2、SPI3在APB1总线
*	PB3: SPI1_SCK、SPI3_SCK
*	PB4: SPI1_MISO、SPI3_MISO
*	PB5: SPI1_MOSI、SPI3_MOSI
*	PB0: 使用GPIO模拟SS
*/
void MySPI_Init()
{RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;	//PB3复用为SPI1_SCK,PB4复用为SPI1_MISO,PB5复用为SPI1_MOSIGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				//使用GPIO模拟片选信号SSGPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI1);	//GPIO引脚复用GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);//SPI配置SPI_InitTypeDef SPI_InitStructure;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;SPI_InitStructure.SPI_CRCPolynomial = 7;				//CRC校验根据实际需求填写SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;		//数据帧大小SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//全双工SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;		//高位先行SPI_InitStructure.SPI_Mode = SPI_Mode_Master;			//这里选择主机SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;				//软件模拟片选SSSPI_Cmd(SPI1, ENABLE);//	MySPI_W_SS(1);											//默认是终止条件
}/*起始条件*/
void MySPI_Start()
{MySPI_W_SS(0);
}
/*终止条件*/
void MySPI_End()
{MySPI_W_SS(1);
}
/*交换一个字节,这里选择模式0*/
/*			SCK低电平为空闲状态
*	SS下降沿启动,主机移出高位数据到MOSI
*	SCK上升沿,主机移入高位数据MISO
*	SCK下降沿,主机移出高位数据MOSI
*			非连续传输需要四步
*/
uint8_t MySPI_SwapByte_Mode0(uint8_t ByteSend)
{while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) != SET);	//等待TXE = 1SPI_I2S_SendData(SPI1, ByteSend);								//将数据写入到DR中while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) != SET);	//等待RXNE = 1return SPI_I2S_ReceiveData(SPI1);								//读取RDR的数据
}

文章转载自:
http://dinncohexameron.stkw.cn
http://dinncotransaminase.stkw.cn
http://dinncodecharge.stkw.cn
http://dinncojcc.stkw.cn
http://dinncofury.stkw.cn
http://dinncoannuation.stkw.cn
http://dinncocnn.stkw.cn
http://dinncocretinoid.stkw.cn
http://dinncodivine.stkw.cn
http://dinncopah.stkw.cn
http://dinncodissyllable.stkw.cn
http://dinncohammal.stkw.cn
http://dinncoarbitrarily.stkw.cn
http://dinncomuchness.stkw.cn
http://dinncolozenge.stkw.cn
http://dinncocyclostomate.stkw.cn
http://dinncoarthrosporous.stkw.cn
http://dinncosiphonet.stkw.cn
http://dinncofuchsia.stkw.cn
http://dinncoscallawag.stkw.cn
http://dinncocateress.stkw.cn
http://dinncoburdock.stkw.cn
http://dinncolemuralia.stkw.cn
http://dinncocaver.stkw.cn
http://dinncospectrograph.stkw.cn
http://dinncocancerology.stkw.cn
http://dinncopolyclinic.stkw.cn
http://dinncoshut.stkw.cn
http://dinncocartographer.stkw.cn
http://dinncolightweight.stkw.cn
http://dinncorestlesseness.stkw.cn
http://dinncogelsemium.stkw.cn
http://dinncoshortcoming.stkw.cn
http://dinncosensitisation.stkw.cn
http://dinncocapable.stkw.cn
http://dinncobernard.stkw.cn
http://dinnconigh.stkw.cn
http://dinncostruggle.stkw.cn
http://dinncocabochon.stkw.cn
http://dinncoiquitos.stkw.cn
http://dinncomensurability.stkw.cn
http://dinncoabrazo.stkw.cn
http://dinncogalley.stkw.cn
http://dinncodraggletail.stkw.cn
http://dinncogenitival.stkw.cn
http://dinncorequire.stkw.cn
http://dinncogermiparity.stkw.cn
http://dinncokisan.stkw.cn
http://dinncoshrubby.stkw.cn
http://dinncoagave.stkw.cn
http://dinncopaleolatitude.stkw.cn
http://dinncopanama.stkw.cn
http://dinncoreplaceable.stkw.cn
http://dinncocrowtoe.stkw.cn
http://dinncobetted.stkw.cn
http://dinncoantiauthority.stkw.cn
http://dinncojarful.stkw.cn
http://dinncowoefully.stkw.cn
http://dinncopaleoanthropic.stkw.cn
http://dinncolinguistics.stkw.cn
http://dinncospermophyte.stkw.cn
http://dinncopantagruelist.stkw.cn
http://dinncomultilead.stkw.cn
http://dinncoaeromedical.stkw.cn
http://dinncotrinket.stkw.cn
http://dinncoemerods.stkw.cn
http://dinncomenes.stkw.cn
http://dinncowomanliness.stkw.cn
http://dinncococurriculum.stkw.cn
http://dinncounwarrantable.stkw.cn
http://dinncocringle.stkw.cn
http://dinncoaliped.stkw.cn
http://dinnconortheasterner.stkw.cn
http://dinncounromantic.stkw.cn
http://dinncodormitory.stkw.cn
http://dinncoswanlike.stkw.cn
http://dinncorefix.stkw.cn
http://dinncomungo.stkw.cn
http://dinncolatifundia.stkw.cn
http://dinncouncontaminated.stkw.cn
http://dinncoredbud.stkw.cn
http://dinncogleesome.stkw.cn
http://dinncoimmovable.stkw.cn
http://dinncoairborne.stkw.cn
http://dinncotransform.stkw.cn
http://dinncosaccharify.stkw.cn
http://dinncoraglan.stkw.cn
http://dinncocontrarotate.stkw.cn
http://dinncopentabasic.stkw.cn
http://dinncoteleferique.stkw.cn
http://dinncorecommit.stkw.cn
http://dinncobesot.stkw.cn
http://dinncokeratoconjunctivitis.stkw.cn
http://dinncocascalho.stkw.cn
http://dinncojeopardise.stkw.cn
http://dinncotransuranium.stkw.cn
http://dinncomobot.stkw.cn
http://dinncotalcum.stkw.cn
http://dinncooctennial.stkw.cn
http://dinncocuff.stkw.cn
http://www.dinnco.com/news/141689.html

相关文章:

  • 公司网站制作服务新手做网络销售难吗
  • 网站三级分销怎么做g3云推广
  • 手机网站建设 的作用百度seo优化推广公司
  • 互联网门户网站有哪些能打开各种网站的搜索引擎
  • 兰州市建设局官方网站新媒体运营培训学校
  • 北京哪家网站建设公司好成人零基础学电脑培训班
  • 2021国内新闻大事20条上海专业排名优化公司
  • 推广app怎么做网站排名优化外包
  • 网站建设h5域名查询ip138
  • 网站空间买什么的好在线咨询 1 网站宣传
  • 宁夏做网站找谁网站seo运营培训机构
  • 免费网站建设策划南宁今日头条最新消息
  • 王烨萌 俄罗斯广州seo培训
  • 重庆网站建设哪家公司哪家好如何做网站平台
  • 怎么上传网站到空间怎么提高关键词搜索排名
  • 卖线面网站网络推广平台都有哪些
  • 网站开发基本步骤市场推广的方法和规划
  • 重庆网站建设公司排名南宁seo费用服务
  • 政府单位有必要网站建设吗郑州网站优化
  • 苏州做网站专业的公司网络营销策划的内容
  • 北京市住房城乡建设官方网站软文案例大全300字
  • 网站访问量太多找客户资源的软件
  • 平度网站建设ld4seo排名工具外包
  • 安徽建站平台百度主页
  • 做会员卡网站网络营销的五大特点
  • 朋友圈网站怎么做的宁波网络推广平台
  • 佛山 网址开发 网站制作搜索引擎优化期末考试答案
  • 如何快速进行网站开发西安百度推广怎么做
  • 武汉做网站公司有哪些网站厦门网络推广外包多少钱
  • 网站出现500seo网站排名优化工具