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

广州网页设计网站建设网站建设备案多长时间

广州网页设计网站建设,网站建设备案多长时间,郑州五合一网站建设,wordpress 内存溢出一、概述 SPI#xff08;Serial Peripheral Interface#xff0c;串行外围设备接口#xff09;#xff0c;是Motorola公司提出的一种同步串行接口技术#xff0c;是一种高速、全双工、同步通信总线#xff0c;在芯片中只占用四根管脚用来控制及数据传输#xff0c;节约…一、概述 SPISerial Peripheral Interface串行外围设备接口是Motorola公司提出的一种同步串行接口技术是一种高速、全双工、同步通信总线在芯片中只占用四根管脚用来控制及数据传输节约了芯片pin的数目同时为PCB在布局上节省了空间。正是由于这种简单易用的特性现在越来越多的芯片上都集成了SPI技术。这4根线分别是MOSI主机输出从机输入、MISO主机输入从机输出、SCLK时钟同步、CS片选线。 寻址方式和IIC不同的是IIC采用的是通过广播目标从机ID的方式来找到想要通信的从机设备。而SPI里面则是通过使能片选线CS即chip select的方式来选择目标从机至于片选信号是高电平还是低电平则需视实际情况而定通常采用较多的是低电平进行片选操作。还需要注意一点同一时刻主机只能与一个从机进行通信。 二、特点 采用主从模式Master-Slave的控制方式支持单Master多Slave SPI规定了两个SPI设备之间通信必须由主设备Master来控制从设备Slave。一个Master可以通过提供clock以及对Slave进行片选Slave Select来控制多个Slave但同一时刻只能选择一个从机进行通信。SPI协议还规定Slave设备的clock由Master通过SCK管脚提供给SlaveSlave本身不能产生或控制clock没有clock则Slave不能正常工作。 2、采用同步方式Synchronous传输数据 Master会根据将要交换的数据产生相应的时钟脉冲组成时钟信号时钟信号通过时钟极性CPOL和时钟相位CPHA控制两个SPI设备何时交换数据以及何时对接收数据进行采样保证数据在两个设备之间是同步传输的。 3、数据交换 SPI设备间的数据传输被称为数据交换因为SPI协议规定一个SPI设备不能在数据通信过程中仅仅充当一个发送者Transmitter或者接受者Receiver。在每个clock周期内SPI设备都会发送并接收1 bit数据相当于有1 bit数据被交换了。数据传输高位在前低位在后MSB first。 在数据传输过程中每次接收到的数据必须在下一次数据传输之前被采样也就是要马上从信号线中读取过来可以理解为一个只能存放一个快递的快递站中的快递到了得马上去取不然会影响接下来的快递如果之前接收到的数据没有被读取那么这些已经接收完成的数据将有可能被丢弃导致SPI物理模块最终失效。因此在程序中一般都会在SPI传输完数据后读取SPI设备里的数据即使这些数据在程序里是无效的。 SPI总线四种工作方式  SPI 模块为了和外设进行数据交换根据外设工作要求其输出串行同步时钟极性和相位可以进行配置时钟极性CPOL对传输协议没有重大的影响。 时序详解 CPOL时钟极性选择为0时SPI总线空闲为低电平为1时SPI总线空闲为高电平 CPHA时钟相位选择为0时在SCK第一个跳变沿采样为1时在SCK第二个跳变沿采样 通信过程举例  比如当CPOL 1,CPHA1的时候此时SCK空闲电平状态为高电平并在第二个时钟沿开始采样第一个时钟沿开始进行输出。 在时钟线第一个跳变沿发送器将会在数据线上发送一位数据如果要发送1则将数据线拉高如果要发送0则将数据线拉低过段时间以后此时数据线上的状态已经确定即数据已经发出了紧接着在第二个跳变沿接收器将会从数据线上接收一位数据。一个字节占8位所以只需要8个时钟周期一个时钟周期有两个边沿即可完成一个字节数据的传输。与IIC不同的是SPI是没有应答信号的。 三、数据传输 SPI是一个环形总线结构由SS (CS)、SCK、SDI、SDO构成时序很简单在SCK的控制下两个双向移位寄存器进行数据交换。寄存器中的内容全部移出时相当于完成了两个寄存器内容的交换。SSPSR控制数据移入移出SSPBUFcontroller确定SPI总线的通信模式。 SSPBUFSynchronous Serial Port Buffer泛指SPI设备里面的内部缓冲区一般在物理上是以FIFO的形式保存传输过程中的临时数据 SSPSRSynchronous Serial Port Shift Register泛指SPI设备里面的移位寄存器根据设置好的数据位宽把数据移入或移出SSPBUF Controller泛指SPI设备里面的控制寄存器通过配置寄存器来设置SPI总线的传输模式。 通常情况下只需要对四个pin进行编程即可控制SPI设备之间的数据通信 SCKSerial Clock主要作用是Master向Slave传输时钟信号控制数据交换的时机和速率 SS/CSSlave Select/Chip Select用于Master片选Slave使被选中的Slave能够被Master访问 SDO/MOSISerial Data Output/Master Out Slave In在Master上也被称为Tx-channel作为数据的出口主要用于SPI设备发送数据 SDI/MISOSerial Data Input/Master In Slave Out在Master上也被称为Rx-channel作为数据的入口主要用于SPI设备接收数据。 四线制SPICSSCK同步时钟MOSImaster out slaver inMISO全双工 三线制SPICSSCKDIO半双工只能分时进行收发 注意在主机开始接收从机数据的时候同时要发一个0xFF给从机。 原来是spi 主机在接收的时候也把移位寄存器中的数据通过mosi发送出去了从slave看它通过miso发送数据给master的同时也接收来自master mosi上的数据。因为spi协议是没有反馈信号的所以slave在发送数据的同时接收到的数据如果是slave能够识别的一个命令值的话那么这时就会对slave产生影响了。这时slave就会按照新的命令运行然而这个命令是master在接收slave数据时不经意发送出去的它本身是不打算发送出去的。为了解决master在接收数据的同时误发命令所以在接收数据之前先写0xff进入移位寄存器。这样master在接收来自slave的数据的同时发送0xff给slaveslave不识别0xff这个命令自然就不会影响它本身的运行了。 上面说了一大堆东西现在你就会发送其实也不一定要写0xff是不是啊是的只要接收数据之前往移位寄存器写一个slave无法识别的数据就行了。 四、IIC和SPI协议之间的异同 相同点 均采用串行同步的通信方式均采用TTL电平传输举例和应用场景较为类似。RS232则采用负逻辑电平均采用主从工作方式。 不同点 IIC为半双工SPI为全双工也可配置为半双工模式IIC有应答机制、SPI无应答机制IIC通过总线广播从机设备地址方式进行寻址SPI通过片选线进行寻址IIC空闲电平状态固定为高电平上拉电阻SPI的SCLK空闲电平状态取决于时钟极性CPOL。 五、STM32F1芯片上的SPI 1、STM32F1的SPI 接口提供两个主要功能支持 SPI 协议或 I2S 音频协议。STM32F1的SPI时钟最高可以到 36MHz支持 DMA功能。STM32F1的SPI内部结构图 标号1 SPI接口引脚其中有MOSI、MISO、SCK、NSS即CS。 我们在配置的时候需要查看原理图其中MOSI、MISO、SCK需要单独配置至于片选线NSS我们通常使用一个普通IO口就可以了具体引脚参考电路原理图通过软件拉高拉低来产生片选信号。 我们可以查看中文参考手册关于芯片架构章节发现SPI1是挂接在APB2总线上的SPI2和SPI3挂接在APB1总线上根据SPI工作频率特性SPI理论最大频率是其所在总线的一半即SPI1理论最大工作频率可达72/236MHzSPI2和SPI3理论最大工作频率可达36/218MHz。 标号2 是用于产生SCK频率的波特率发生器我们是SCK时钟信号是波特率发生器根据SPI_CR1寄存器的BR0~BR2这几个位进行控制的。这几个位可以绝对时钟分频因子。 具体可以查看中文参考手册 标号3 数据控制逻辑。SPI的MOSI和MISO都连接在数据移位寄存器当中。数据移位寄存器内容来源于接收缓冲区和发送缓冲区还有MOSI和MISO。 假设将此SPI设备即单片机配置为主模式如果是发送数据则数据通过发送缓冲区进入到移位寄存器再通过MOSI将数据发送出去。接收数据则是通过MISO将数据接收进来接收到移位寄存器并进入接收缓冲区再进入到总线进行传输。 标号4 寄存器单元。用于控制SPI的相关工作模式包括主从模式低位先行还是高位先行波特率分频是多少一次传送8位还是16位等等具体的参考中文参考手册。 SPI配置步骤只是例子具体的还得看实际芯片原理图和手册 1使能SPI及对应GPIO端口时钟并配置引脚的复用功能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE ); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;  //PB13/14/15复用推挽输出 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOB, GPIO_InitStructure); 2初始化SPI包括数据帧长度、传输模式、MSB和LSB顺序等 void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); typedef struct { uint16_t SPI_Direction;   //设置SPI的单双向模式 uint16_t SPI_Mode;       //设置 SPI 的主/从机端模式 uint16_t SPI_DataSize;  //设置 SPI 的数据帧长度可选 8/16 位 uint16_t SPI_CPOL;     //设置时钟极性 CPOL可选高/低电平 uint16_t SPI_CPHA;    //设置时钟相位可选奇/偶数边沿采样 uint16_t SPI_NSS;  //设置 NSS 引脚由 SPI 硬件控制还是软件控制 uint16_t SPI_BaudRatePrescaler;//设置时钟分频因子 uint16_t SPI_FirstBit;   //设置 MSB/LSB 顺序 uint16_t SPI_CRCPolynomial; //设置 CRC 校验的表达式 }SPI_InitTypeDef; SPI_Direction用于设置 SPI 的通信方向可设置为双线全双工(SPI_Direction_2Lines_FullDuplex)双线只接收(SPI_Direction_2Lines_RxOnly)单线只接收(SPI_Direction_1Line_Rx)、单线只发送模式(SPI_Direction_1Line_Tx)。 SPI_Mode用于设置 SPI 工作在主机模式(SPI_Mode_Master)或从机模式(SPI_Mode_Slave )这两个模式的最大区别为 SPI 的 SCK 信号线的时序 SCK 的时序是由通讯中的主机产生的。若被配置为从机模式 STM32 的 SPI 外设将接受外来的 SCK 信号。 SPI_DataSize用于设置SPI通信的数据帧长度可以选择8位(SPI_DataSize_8b)或者 16 位(SPI_DataSize_16b)。 SPI_CPOL用于设置时钟极性可设置为高电平(SPI_CPOL_High)或低电平(SPI_CPOL_Low )。 SPI_CPHA用于设置时钟相位也就是选择在串行同步时钟的第几个跳变沿上升或下降数据被采样可以为 SPI_CPHA_1Edge(在 SCK 的奇数边沿采集数据) 或SPI_CPHA_2Edge (在 SCK 的偶数边沿采集数据) 。 SPI_NSS用于设置NSS引脚的使用模式可以选择为硬件模式(SPI_NSS_Hard )与软件模式(SPI_NSS_Soft )在硬件模式中的 NSS信号由 SPI 硬件自动产生而软件模式则需要我们使用相应的 GPIO 端口来控制。 SPI_BaudRatePrescaler用于设置波特率分频因子分频后的时钟即为 SPI 的 SCK 信号线的时钟频率。可设置为 fpclk 的 2、 4、 6、 8、 16、 32、 64、 128、 256 分频。 SPI_FirstBit用于设置数据传输顺序是 MSB 位在前还是 LSB 位在前。 SPI_CRCPolynomial用于设置 CRC 校验多项式提高通信可靠性。 举例 SPI_InitTypeDef  SPI_InitStructure; SPI_InitStructure.SPI_Direction SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工 SPI_InitStructure.SPI_Mode SPI_Mode_Master; //设置SPI工作模式:设置为主SPI SPI_InitStructure.SPI_DataSize SPI_DataSize_8b; //设置SPI的数据大小:SPI发送接收8位帧结构 SPI_InitStructure.SPI_CPOL SPI_CPOL_High; //串行同步时钟的空闲状态为高电平 SPI_InitStructure.SPI_CPHA SPI_CPHA_2Edge; //串行同步时钟的第二个跳变沿上升或下降数据被采样 SPI_InitStructure.SPI_NSS SPI_NSS_Soft; //NSS信号由硬件NSS管脚还是软件使用SSI位管理:内部NSS信号有SSI位控制 SPI_InitStructure.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_256; //定义波特率预分频的值:波特率预分频值为256 SPI_InitStructure.SPI_FirstBit SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始 SPI_InitStructure.SPI_CRCPolynomial 7; //CRC值计算的多项式 SPI_Init(SPI1, SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器 3使能开启SPI void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); 4SPI数据传输 void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data); uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx); 5查看SPI传输状态 FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); 使用较多的是发送完成标志SPI_I2S_FLAG_TXE和接收完成标志SPI_I2S_FLAG_RXNE SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE); EN25QXX介绍 EN25QXX 是大容量 SPI FLASH 产品EN25Q64的容量是64Mb8M字节EN25Q128 的容量为 128Mb16M字节该系列还有EN25Q08/16/32/64 等。我们开发板上使用的是EN25Q16学习这个芯片可以参考华邦公司的W25Q128芯片因为它们是完全兼容的。所以我们以W25Q128进行介绍。 W25Q128 将 16M 的容量分为 256 个块 Block每个块大小为 64K 字节每个块又分为16 个扇区 Sector每个扇区 4K 个字节。 W25Q128 的最小擦除单位为一个扇区也就是每次必须擦除 4K 个字节。这样我们需要给 W25Q128 开辟一个至少 4K 的缓存区这样对 SRAM 要求比较高要求芯片必须有 4K 以上 SRAM 才能很好的操作。 W25Q128 的擦写周期多达 10W 次具有 20 年的数据保存期限支持电压为 2.7~3.6VW25Q128 支持标准的 SPI还支持双输出/四输出的 SPI最大 SPI 时钟可以到 80Mhz双输出时相当于 160Mhz四输出时相当于 320M
http://www.zqtcl.cn/news/457627/

相关文章:

  • 网站被刷流量怎么办红色php企业网站模板下载
  • 做现货黄金的金融网站设计平台app
  • 淘宝客手机网站搭建网站设计专业公司
  • 做网站用的图片怎样压缩钓鱼网站的制作教程
  • 建设网站类型wordpress竖版图片尺寸
  • 网站建设数据库ER图怎么画公司网站建设建议书
  • 网站建设网站制作有限排名优化课程
  • 绵竹网站建设佛山网络营销推广
  • 网站备案名称重复学会网站建设目的
  • 网站套餐到期什么意思孝感的网站建设
  • 网站制作费用多少钱房地产建筑设计公司
  • 网站优化要素做网站看百度脸色
  • 软件开发 网站开发区别seo怎么刷关键词排名
  • python 网站开发必会智能网站
  • 重庆建设摩托车官方网站网络是干什么的
  • 建筑工程网站源码wordpress 多域名 图片不显示
  • 大型网站建设优化排名wordpress 投稿 插件
  • 二维码的网站如何做静安免费网站制作
  • 微网站免费模板管理网络的网站
  • 网站下载软件政企网站建设
  • 网站设计为什么要域名北京移动端网站设计
  • 自做网站多少钱哪个网站的课件做的好
  • 网站开发实现页面的跳转怎么添加网站关键词
  • 个人签名设计网站企业网站html模板
  • 做网站编辑大专可以吗小网站搜什么关键词好
  • 百度网首页登录入口宁波seo管理
  • 怎么把网站做的更好常州网站制作建设
  • 站长平台seo深圳有做公司网站
  • dedecms怎么部署网站云南网站定制
  • 禅城网站开发我赢网seo优化网站