首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软件SPI实现

软件SPI实现
EN

Stack Overflow用户
提问于 2015-02-24 06:48:39
回答 3查看 3.8K关注 0票数 0

我正在考虑创建我自己的纯C软件SPI库,因为没有可用的(据我所知)。

这也让我担心--为什么没有任何软件SPI库?有什么硬件限制我没有考虑吗?

编辑:

我决定编写自己的库,因为SPI外围设备在STM32中有多大的缺陷。特别是 in 8位模式,但我也有一个16位模式的很多问题。许多其他的问题,我甚至没有费心地记录。

我现在已经编写了软件实现(这很容易),并且工作得很好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-24 07:11:05

为什么没有任何软件SPI库?

因为它大约有10行代码,分别用于WriteByte和ReadByte函数,而且大多数代码都是特定于处理器的寄存器。高级协议依赖于连接到SPI的设备。这是关于这个问题的维基百科要说什么

SPI总线是一个事实上的标准。然而,缺乏正式标准反映在各种各样的协议选择中。不同的单词大小是很常见的。每个设备都定义了自己的协议,包括是否支持命令。有些设备是只传输的,另一些是只接收的.芯片选择有时是活动高而不是活动低。一些协议首先发送最不重要的比特。

所以建造一个图书馆是没有意义的。您只需为每个特定情况编写代码,并编写设备组合。

票数 2
EN

Stack Overflow用户

发布于 2015-03-17 04:03:09

尽管其他人已经回答了its just bitbanging;但我认为编写一个小层是有好处的:

  • 如果您不使用HAL,或者标准Libs (像我一样),您可以编写一个层来处理初始化,它可以按照芯片的初始化顺序来处理。
  • 您可以使用回调机制将所有中断向量映射到此层中的特定外围设备。
  • 创建应用程序和系统域之间的分离,这是模块化设计的核心原则。
  • 增加代码可重用性,例如函数指针和公共接口
  • 添加设置/参数的输入验证,否则如果不使用层,则会导致代码重复。例如,在初始化HCLK时,确保stm32f429上的HCLK不超过180 the。

虽然通常要发送数据,您所需要做的就是设置一个寄存器,但更多的情况是,初始化顺序并不复杂。

随着微控制器的功率和容量的增加以及项目规模的增加,实现平衡的设计选择以提高可伸缩性和可维护性(尤其是在商业项目中)是非常重要的。

票数 1
EN

Stack Overflow用户

发布于 2015-02-24 06:57:35

如果您需要微控制器,那么您可以拥有自己的SPI库。你需要用敲击技术。有可用的软件SPI库。因为每个微控制器都有不同的端口架构和寄存器,所以它们不是通用的,它们只针对该控制器。

例如,对于8051体系结构,您可以找到

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28689739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档