088-471471979

我们只用绿色的食品原料

鄂州市亚博官方网站科技股份有限公司零食加工厂,只为您的健康着想

本文摘要:拿一个芯片厂商获得的非常简单的演示来说,代码不会细分为寄存器操作符(Drv层)、模块中封装的板级异议(Bsp层)、功能模块检查(App层)等。在设计BSP层的SPI功能时,考虑了模块模式、数据宽度、时钟极性和幅度、时钟速率、数据位大小的自由选择和引脚定义。

驱动

嵌入式软件的分层设计嵌入式软件是一个项目的源代码文件的子集。源代码文件的数量随着项目的复杂性而变化。拿一个芯片厂商获得的非常简单的演示来说,代码不会细分为寄存器操作符(Drv层)、模块中封装的板级异议(Bsp层)、功能模块检查(App层)等。但是这里的“分层”往往不太显著,因为它意味着一个演示,所谓的“分层”更好的由人来定义。

真正意义的分层是指代码的编码标准和程序继续执行的逻辑。关于分层设计的意义,这里就不多赘述了,只是作为一个介绍,来谈谈SPI模块的设计过程,以及如何设计出一套既有自己的规格,又方便复制的SPI模块。分层架构中SPI的设计思想刚刚提到了分层设计的思想,那么作为一个通信接口,SPI如何按照分层设计的思想更合理方便的设计模块呢?这里必须设计的SPI介于“应用于”和“驱动”之间。“应用于”是指项目业务市场所需的功能模块将数据和数据包传递给SPI模块,而“驱动”是指SPI模块在获得数据包后将数据变为SPI。

当我们拿到一个芯片的时候,大部分情况下,官方获得的演示程序已经为我们搭建了很多驱动(或者自己从网络资源下载),每个模块的驱动已经被PCB转化成函数或者库供我们调用。想象一下我们的项目。

如果要操作芯片硬件模块,需要调用官方获取的接口函数。虽然可以搭建功能,但是当你不得不更换芯片平台的时候,你必须在与业务市场需求相关的复杂应用层中找到目标驱动模块,并将其改为目标驱动模块。这就涉及到分层设计的优势:因为平台更换,驱动模块已经换了,所以代码复制不会很费力,不仅是脑力劳动,也是体力劳动(即使可以批量更换,也要仔细对比模块,解决问题模块的差异)。

此时如果是分层设计的话,应用和驱动之间有一个BSP层,应用层只调用BSP层,几乎不涉及驱动和寄存器,也不涉及芯片平台相关的模块。就算平台换了,驱动换了,你只要换个BSP层的显式构造,就刺激多了。从上一篇文章《嵌入式硬件通信接口协议SPI(一)协议基础》对SPI协议的解释来看,在设计BSP层时,是根据SPI可配置项来设计模块功能的。在设计BSP层的SPI功能时,考虑了模块模式、数据宽度、时钟极性和幅度、时钟速率、数据位大小的自由选择和引脚定义。

在设计BSP层时,首先想到的是模块初始化和数据传输。设计初始化,将SPI可配置项放入功能模块,无需参数传递;在设计数据传输和传输时,我们也把SPI端口号作为参数之一,因为我们都告诉MCU可能有多个SPI模块,所以把SPI端口号作为参数更合适。

模块

SPI模块本身可以搭建1对N的串行总线。为什么有时候用在不同的SPI端口连接不同的外设?主要是SPI的可配置项不完全一致。

一些外围设备拒绝SPI时钟信号SCLK,因为极性低或更低,并且时钟幅度不同。此外,通信数据的比特不是在比特大小的末尾自由选择的。这些模块在配置项上有所不同,导致运营商在某些场景下设备不同时,SPI端口也不同。

SPI时序用于IO槽模拟。从头开始设计一套SPI板级反包(BSP)模块,从初始化开始。

这里的设计是模拟SPI,所以不会调用GPIO设置的模块。目前使用的芯片平台是STM32F103系列,虽然此时几乎可以调用stdperiahdriversv 3 . 5 . 0的官方标准外设库。

调用模块库不是目的。成为“图书馆猎人”只是很简单。这里新写的仿真构建模式的目的是说明在BSP层,构建自己系统的软件架构,获取底层模块进行系统集成。

时钟

同时,我也在学习和了解SPI模块的时序特性。在初始化功能模块中,实现了SPI端口号、数据宽度、模块时钟模式和数据位优先级模式四个参数,基本上这四个参数已经满足了大多数应用的市场需求。在编码初期,不打算放太多设备项。

首先,根据最简单的配置文件进行编码,以确保程序逻辑能够运行。模块中使用的引脚定义基本上是在原理图或原型检查完成后确认引脚的使用,所以引脚定义一般放在BSP层的头文件中。这样更便于复制和研发。数据发送时,写出发送到一个字节的数据,数据以SPI模块时钟信号SCLK的“节奏”一点一点发送。

因此,在发送数据时,需要将主机操作员时钟信号SCLK和数据信号MOSI:SPI数据发送到模块DCBSP _ SPI _ SendByte函数构造通过GPIO和SPI模块输入一个字节数据的时序,其中SCLK信号是关键。


本文关键词:模块,驱动,设计,亚博官方网站,时钟信号

本文来源:亚博官方链接-www.wpfixer1.com