华为欧拉板块出现大动作!这9只概念股未来或许有望达到300%

华为欧拉板块出现大动作!这9只概念股未来或许有望达到300%,第1张

汽车上的总线技术包括:LIN、CAN、CAN FD、FlexRay、MOST及Ethernet,我们之前已经分享了LIN,CAN、CAN FD总线。在开始阅读之前,如果你对已介绍的总线技术还不了解的话,可以先阅读以下文章快速温习一下~
说一说LIN总线
CAN总线基础(一)
CAN总线基础(下)
CAN FD 介绍
FlexRay背景
随着汽车电子技术的不断发展和系统的集成化,我们可不需要传统的机械传递控制信号而是通过电子手段来驾驶汽车,而这一电子手段即X-By-Wire(X代表汽车中的各个系统,By-Wire可称为电子线控),如线控转向(Steering-By-Wire),线控制动(Brake-By-Wire),线控技术主要应用在主动安全等关键系统中,这些场合都对信息的实时性和安全性有很高的要求。
另一方面随着汽车电子电器架构复杂度的提升尤其当前辅助驾驶系统、无人驾驶技术的快速发展,传统的LIN、CAN总线已不堪重负且无法满足未来高带宽的要求,
上期讲的CAN FD只是对传统CAN总线的一种扩展和过渡,首先其不会对原有的整车网络带来大的变更,具备很好的兼容性又具有不错的传输速率(最高2Mbps),其次LIN CAN总线在汽车上已应用了这么多年,若突然向新的总线技术迁移(如本期讲的FlexRay)会带来开发迁移量、时间成本、硬件成本等方面的同步提升(所有节点必须升级为FlexRay节点),因此CAN FD在当前阶段是很好的过渡方案。但当同时考虑X-By-Wire应用场景和更高的带宽要求时,CAN FD则无法满足,而FlexRay则非常适用,但FlexRay的应用对OEM的能力要求相比CAN会提高很多。
FlexRay联盟
FlexRay的出现和发展离不开2000年由Daimler Crysler 、 BMW 、Motorola 和Philips创建的FlexRay联盟的推动。该联盟的目标是开发一种独立于OEM、确定性和容错的FlexRay通信标准,该联盟的每个成员都可以使用该标准而无需支付许可费。目前FlexRay联盟的核心成员包括:BOSCH 、BMW、Daimler AG、General Motors、Volkswagen AG、NXP Semiconductors。
FlexRay联盟在2010年发布了301版规范,开始推动作为ISO标准,并在2013年发布了ISO 17458标准规范。
第一款采用FlexRay的量产车于2006年底在BMW X5中推出,应用在电子控制减震系统中,2008年,全新BMW 7系全面采用了FlexRay。另外Audi、Mercedes-Benz以及领克等车型上也逐渐应用。
FlexRay通讯特点及拓扑
FlexRay是专为车内局域网设计的一种具备故障容错的高速可确定性车载总线系统,采用了基于时间触发的机制且具有高带宽、容错性好等特点,在实时性、可靠性及灵活性方面都有很大的优势,非常适用于安全性要求较高的线控场合及带宽要去高的场合。
1、高速率和容错性
FlexRay支持两通道,可通过一个或两个通道进行数据传输,单个通道的数据传输速率可达10Mbps,通过两通道平行传输数据时可达20Mbps。也可通过双通道传输相同的数据(真实情况大多应用的方式),当其中某个通道出现故障或信息有误时,另一通道可继续正常传输,并影响整个网络的数据通讯,通过这种冗余备份实现很好的容错性。
2、确定性
FalexRay是一种时间触发式的总线系统,符合TDMA(Time Division Multiple Access)的原则,因此在时间控制区域内,时隙会分配给确定的消息,即会将规定好的时间段分配给特定的消息,时隙是经固定周期重复,也就是说信息在总线上的时间可以被预测出来,因此保证了其确定性。这就意味着控制信号是根据预定义的时间进度传输的,无论系统外部发生什么情况,都不会产生计划外事件。在确定性算法中,始终会预先定义正确的输出结果,这些结果是基于特定输入的。
3、灵活性
FlexRay除了支持时间触发式通讯外,还可通过事件触发来进行数据的传输,例如对于时间要求不高的信息,可配置在事件控制区域内传输,可形成以时间触发为主,兼顾事件触发的灵活特性。
此外,FlexRay的拓扑是多样的,有线型、星型和混合型三大类,再结合单通道和双通道的使用(FlexRay的两个通道可相互独立实现,所以两个通道可采用不同的拓扑结构,如一个通道为主动星型拓扑,另一个为总线拓扑结构),所以最终组合的结果可形成很多种。再例如既有点对点的线性结构和多节点的线性结构,还有增加冗余性的双通道星型拓扑结构等等。
FlexRay数据传输
FlexRay规范定义了OSI参考模型中的物理层和数据链路层,每个FlexRay节点通过一个FlexRay Controller和两个FlexRay Transceivers(用于通道冗余)与总线相连,FlexRay Controller负责Flexray协议中的数据链路层,FlexRay Transceivers则负责总线物理信号接收发送。
FlexRay可采用屏蔽或不屏蔽的双绞线,每个通道有两根导线,即总线正(Bus-Plus,BP)和总线负(Bus-Minus,BM)组成。采用不归零法(NRZ,Non-Return to Zero)进行编码。
可通过测量BP和BM之间的电压差识别总线状态,这样可减少外部干扰对总线信息的影响,因这些干扰同时作用在两根导线上可相互抵消。
每一通道需使用80~110欧的终端电阻。将不同的电压加载在一个通道的两根导线上,可使总线有四种状态:Idle_Lp(Low power)、Idle、Data_0和Data_1
显性:差分电压不为0V(Data_0和Data_1)
隐性:差分电压为0V(Idle_Lp、Idle)
FlexRay帧格式
FlexRay帧由起始段、有效负载段和结束段三大部分构成。
1、起始段:由40个bits构成(5 bytes),包括
-Status Bits-5bits
-Frame ID-11bits
-Payload Length-7 bits
-Hedaer CRC-11bits
-Cycle count -6 bits
其中5bits的Status Bits包含四类指示符:
净荷指示位(Payload Preamble Indicator)
空帧指示位(Null Frame Indicator-指明该帧是否为无效帧)
同步帧指示位(Sync Frame Indicator-指明该帧是否为一个同步帧)
起始帧指示位(Startup Frame Indicator-指明该帧是否为起始帧)。
Frame ID:数据标志符,定义了在时间窗口(Slot)中发送的号码,每个通道数据标志符需唯一。
Payload Length:工作区长度,指示该帧含有的有效数据长度,在每个Cycle下的静态区中,每帧的数据长度是相同的,在动态区的长度则是不同的。
Hedaer CRC:用于起始段冗余校验,检查传输中的错误。
Cycle count:循环计数器。
2、有效负载段
包含要传输的有效数据,有效数据长度最大254个Bytes(0~127个Words),
3、结束段
包含24  Bits的检验域,由起始段和有效负载段计算得出的CRC校验码,计算CRC时,根据网络传输顺序从保留位到有效负载段的最后一位放到CRC生成器中进行计算。
FlexRay编码
编码的过程实际就是对要发送的数据进行一定的打包处理,即在节点可传输带有主计算机数据的数据前需将其转换为“比特流(Bitstream)”。
RxD为接收信号,TxD为发送信号,TxEN为通讯控制器请求数据,对于静态帧和动态帧分别按照如下方式进行编码。
其中TSS(传输启动序列):用于初始化节点和网络通讯的对接(5~15位的低电平);FSS(帧启动序列):用于补偿TSS后第一个字节可能出现的量化误差(一位高电平);BSS(字节启动序列):给接收节点提供数据定时信息(一位高电平并紧随一位低电平);FES(帧结束序列):用于标识数据帧最后一个字节序列结束(一位低电平紧随一位高电平)。
对于动态区数据还额外需要DST(动态段尾部序列):仅用于动态帧传输,用于表明动态段中传输时动作点的精确时间防止接收段过早检测到网络空闲状态(一位长度可变的低电平和高电平)。
将这些序列和有效位(MSB到LSB)组装起来完成了编码过程,最终构成在网络传播的比特流。
FlexRay通讯
FlexRay总线的通讯由通讯周期(Communication Cycle)构成,从总线启动到停止都在不断重复该通讯周期。每个通讯周期具有相同的可配置时间间隔,且每个通讯周期由下面四部分构成:
静态段(Static Segment)
动态段(Dynamic Segment)
特征窗(Symblo Window)
网络空闲时间(Network Idle Time)
1、静态段(Static Segment)
静态段采用TDMA(Time Division Multiple Access)方式由固定的时隙(Slot)组成,不可更改且所有时隙大小一致。
因此每个节点可拥有一个或多个Slots,这样每个节点在每个通讯周期内都可在其所占有的Slot内发送,两个节点也可在不同的通道上共享同一Slot,单个Slot也可为空(即不被任何节点占用),所有的帧和Slots在静态段都具有相同的长度。单个Slot的长度由总线中最长的FlexRay Message决定,其包括四部分:Action Point Offset、FlexRay Frame、Channel Idle Delimiter(11个隐性位)和Channel Idle。
2、动态段(Dynamic Segment)
动态段采用FTDMA(Flexible Time Division Multiple Access)方式,由较小的时隙(Minislot)组成,可根据需要拓展变动,一般用于传输事件控制型消息。
在动态段每帧可能有不同的长度,动态时隙(Dynamic Slot)的长度依赖于帧的长度,只有空的Slot才是实际的一个Minislot的大小。
3、特征窗(Symblo Window)
用于传输特征符号,FlexRay的符号有三种:
冲突避免符号:用于冷启动节点的通讯启动
测试符号:用于总线的测试
唤醒符号:用于唤醒过程的初始化
4、网络空闲时间(NIT-Network Idle Time)
用于时钟同步处理
如下是一个通讯示例:
FlexRay总结
从上面可看出,FlexRay相比传统LIN、 CAN和CAN FD要更复杂一些,因此不管对OEM还是供应商的能力要求势必提高不少,其次从传统总线技术向FlexRay迁移在成本及Effort上都要增加很多,普遍应用仍需要时间。
参考文献:
1、FlexRay introduction(EB、Vector、BOSCH等资料)
 FlexRay 介绍 (qqcom)
物联网
华云数据
精选推荐
广告
FlexRay车载通信协议介绍及其应用
39下载·1评论
2013年4月21日
FlexRay总线协议快速入门、深度剖析与应用示例
11W阅读·11评论·15点赞
2020年1月12日
FlexRay 总线详细介绍
555阅读·0评论·0点赞
2022年11月28日
汽车 Flexry总线-笔记
995阅读·0评论·0点赞
2020年8月4日
FlexRay学习笔记_2
1006阅读·0评论·0点赞
2020年1月6日
FlexRay笔记
2343阅读·0评论·4点赞
2018年6月25日
迎春手机就能学,还是免费的!爆款理财课送给你,0元收藏!
00:45
免费的理财课
广告
Flexray基础解读
1619阅读·4评论·2点赞
2022年7月5日
汽车通信协议:一文搞懂Flexray通信
7101阅读·4评论·23点赞
2022年4月18日
FlexRay介绍
18W阅读·0评论·1点赞
2018年6月2日
FlexRay总线概述(2)
54阅读·0评论·0点赞
2023年1月27日
FlexRay总线技术介绍
53下载·0评论
2012年7月3日
基于FlexRay总线的汽车网关
17下载·0评论
2013年8月20日
FlexRay
5771阅读·0评论·4点赞
2018年2月27日
FlexRay总线原理及应用
8343阅读·0评论·10点赞
2021年11月15日
FlexRay汽车通信总线介绍及测试环境
5909阅读·0评论·2点赞
2020年3月31日
FlexRay最新通信协议及FlexRay总线通信设计及控制资料
46下载·0评论
2020年7月14日
Capl之FlexRay脚本id的大致解读
151阅读·0评论·1点赞
2022年12月20日
国产FlexRay系列产品即将上市,值得期待!
299阅读·1评论·0点赞
2022年11月14日
去首页
看看更多热门内容

本实验采用W25Q64芯片

W25Q64是华邦公司推出的大容量SPI

FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的 *** 作。

W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持27~36V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。

一。SPI接口原理

(一)概述
高速,全双工,同步的通信总线。

全双工:可以同时发送和接收,需要2条引脚

同步: 需要时钟引脚

片选引脚:方便一个SPI接口上可以挂多个设备。

总共四根引脚。

(二)SPI内部结构简明图
MISO: 做主机的时候输入,做从机的时候输出

MOSI:做主机的时候输出,做从机的时候输入

主机和从机都有一个移位寄存器,在同一个时钟的控制下主机的最高位移到从机的最高位,同时从机的最高位往前移一位,移到主机的最低位。在一个时钟的控制下主机和从机进行了一个位的交换,那么在8个时钟的控制下就交换了8位,最后的结果就是两个移位寄存器的数据完全交换。

在8个时钟的控制下,主机和从机的两个字节进行了交换,也就是说主机给从机发送一个字节8个位的同时,从机也给主机传回来了8个位,也就是一个字节。

(三)SPI接口框图
上面左边部分就是在时钟控制下怎么传输数据,右边是控制单元,还包括左下的波特率发生器。

(四)SPI工作原理总结
(五)SPI的特征
(六)从选择(NSS)脚管理
两个SPI通信首先有2个数据线,一个时钟线,还有一个片选线,只有把片选拉低,SPI芯片才工作,片选引脚可以是SPI规定的片选引脚,还可以通过软件的方式选择任意一个IO口作为片选引脚,这样做的好处是:比如一个SPI接口上挂多个设备,比如挂了4个设备,第二个用PA2,第三个用PA3,第四个用PA4作为片选,我们

跟第二个设备进行通信的时候,只需要把第二个片选选中,比如拉低,其他设备的片选都拉高,这样就实现了一个SPI接口可以连接个SPI设备,战舰开发板上就是通过这种方法来实现的。

(七)时钟信号的相位和极性
时钟信号的相位和极性是通过CR寄存器的 CPOL 和 CPHA两个位确定的。

CPOL:时钟极性,设置在没有数据传输时时钟的空闲状态电平。CPOL置0,SCK引脚在空闲时为低电平,CPOL置1,SCK引脚在空闲时保持高电平。

CPHA:时钟相位 设置时钟信号在第几个边沿数据被采集

CPHA=1时:在时钟信号的第二个边沿
CPOL=1,CPHA=1,

CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第二个边沿即上升沿的时候被采集。

CPOL= 0,CPHA=1, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。

如果CPHA=1,那么数据就在时钟信号的第二个边沿即下降沿的时候被采集。

CPHA=0时:在时钟信号的第一个边沿
CPOL=1,CPHA=0,

CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第一个边沿即下降沿的时候被采集。

CPOL= 0,CPHA=0, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。

如果CPHA=1,那么数据就在时钟信号的第一个边沿即上升沿的时候被采集。

为什么要配置这两个参数

因为SPI外设的从机的时钟相位和极性都是有严格要求的。所以我们要根据选择的外设的时钟相位和极性来配置主机的相位和极性。必须要与从机匹配。

(八)数据帧的格式和状态标志
数据帧格式:根据CR1寄存器的LSBFIRST位的设置,数据可以MSB在前也可以LSB在前。

根据CR1寄存器的DEF位,每个数据帧可以是8位或16位。

(九)SPI中断
(十)SPI引脚配置 (3个SPI)
引脚的工作模式设置
引脚必须要按照这个表格配置。

二。SPI寄存器库函数配置

(一)常用寄存器
(二)SPI相关库函数
STM32的SPI接口可以配置为支持SPI协议或者支持I2S音频协议。默认是SPI模式,可以通过软件切换到I2S方式。

常用的函数:

1 void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef

SPI_InitStruct);//SPI的初始化

2 void SPI_Cmd(SPI_TypeDef SPIx, FunctionalState NewState); //SPI使能

3 void SPI_I2S_ITConfig(SPI_TypeDef SPIx, uint8_t SPI_I2S_IT,

FunctionalState NewState); //开启中断

4 void SPI_I2S_DMACmd(SPI_TypeDef SPIx, uint16_t SPI_I2S_DMAReq,

FunctionalState NewState);//通 过DMA传输数据

5 void SPI_I2S_SendData(SPI_TypeDef SPIx, uint16_t Data); //发送数据

6 uint16_t SPI_I2S_ReceiveData(SPI_TypeDef SPIx); //接收数据

7 void SPI_DataSizeConfig(SPI_TypeDef SPIx, uint16_t SPI_DataSize);

//设置数据是8位还是16位

8 其他几个状态函数

void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef

SPI_InitStruct);//SPI的初始化
结构体成员变量比较多,这里我们挑取几个重要的成员变量讲解一下:

第一个参数 SPI_Direction 是用来设置 SPI 的通信方式,可以选择为半双工,全双工,以及串行发和串行收方式,这里我们选择全双工模式

SPI_Direction_2Lines_FullDuplex。

第二个参数 SPI_Mode 用来设置 SPI 的主从模式,这里我们设置为主机模式 SPI_Mode_Master,当然有需要你也可以选择为从机模式

SPI_Mode_Slave。

第三个参数 SPI_DataSiz 为 8 位还是 16 位帧格式选择项,这里我们是 8 位传输,选择SPI_DataSize_8b。

第四个参数 SPI_CPOL 用来设置时钟极性,我们设置串行同步时钟的空闲状态为高电平所以我们选择 SPI_CPOL_High。

第五个参数 SPI_CPHA

用来设置时钟相位,也就是选择在串行同步时钟的第几个跳变沿(上升或下降)数据被采样,可以为第一个或者第二个条边沿采集,这里我们选择第二个跳变沿,所以选择

SPI_CPHA_2Edge

第六个参数 SPI_NSS 设置 NSS 信号由硬件(NSS 管脚)还是软件控制,这里我们通过软件控

制 NSS 关键,而不是硬件自动控制,所以选择 SPI_NSS_Soft。

第七个参数 SPI_BaudRatePrescaler 很关键,就是设置 SPI 波特率预分频值也就是决定 SPI 的时

钟的参数 , 从不分频道 256 分频 8 个可选值,初始化的时候我们选择 256 分频值

SPI_BaudRatePrescaler_256, 传输速度为 36M/256=140625KHz。

第八个参数 SPI_FirstBit 设置数据传输顺序是 MSB 位在前还是 LSB 位在前, ,这里我们选择

SPI_FirstBit_MSB 高位在前。

第九个参数 SPI_CRCPolynomial 是用来设置 CRC 校验多项式,提高通信可靠性,大于 1 即可。

设置好上面 9 个参数,我们就可以初始化 SPI 外设了。

初始化的范例格式为:

SPI_InitTypeDef SPI_InitStructure;

SPI_InitStructureSPI_Direction = SPI_Direction_2Lines_FullDuplex;

//双线双向全双工

SPI_InitStructureSPI_Mode = SPI_Mode_Master; //主 SPI

SPI_InitStructureSPI_DataSize = SPI_DataSize_8b; // SPI 发送接收 8 位帧结构

SPI_InitStructureSPI_CPOL = SPI_CPOL_High;//串行同步时钟的空闲状态为高电平

371

SPI_InitStructureSPI_CPHA = SPI_CPHA_2Edge;//第二个跳变沿数据被采样

SPI_InitStructureSPI_NSS = SPI_NSS_Soft; //NSS 信号由软件控制

SPI_InitStructureSPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //预分频

256

SPI_InitStructureSPI_FirstBit = SPI_FirstBit_MSB; //数据传输从 MSB 位开始

SPI_InitStructureSPI_CRCPolynomial = 7; //CRC 值计算的多项式

SPI_Init(SPI2, &SPI_InitStructure); //根据指定的参数初始化外设 SPIx 寄存器

(三)程序配置步骤
三。W25Qxx配置讲解

(一)电路图
片选用的PB12

W25Q64 是华邦公司推出的大容量SPI FLASH 产品,W25Q64 的容量为 64Mb,该系列还有 W25Q80/16/32

等。ALIENTEK 所选择的 W25Q64 容量为 64Mb,也就是 8M 字节。(1M=1024K)

W25Q64 将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区 4K

个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25Q64 开辟一个至少 4K 的缓存区,这样对 SRAM

要求比较高,要求芯片必须有 4K 以上 SRAM 才能很好的 *** 作。

W25Q64 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 27~36V,W25Q64 支持标准的

SPI,还支持双输出/四输出的 SPI,最大 SPI 时钟可以到 80Mhz(双输出时相当于 160Mhz,四输出时相当于 320M),更多的 W25Q64

的介绍,请参考 W25Q64 的DATASHEET。

在往一个地址写数据之前,要先把这个扇区的数据全部读出来保存在缓存里,然后再把这个扇区擦除,然后在缓存中修改要写的数据,然后再把整个缓存中的数据再重新写入刚才擦除的扇区中。

便于学习和参考再给大家分享些spi 的资料

stm32之SPI通信

>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/12857849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存