我正在考虑创建自己的纯C软件SPI库,因为没有可用的(据我所知)。
这也让我担心 - 为什么没有有任何软件SPI库?是否存在一些我不考虑的硬件限制?
编辑:
我决定编写自己的库,因为SPI外设在STM32中存在多大问题。 Especially中的8 bit mode,但我还拥有16位模式的lot of problems。许多其他问题我甚至都不打算记录。
我现在已经编写了软件实现(非常简单)并且工作正常。
答案 0 :(得分:2)
为什么没有任何软件SPI库?
因为WriteByte和ReadByte函数大约有10行代码,而且大多数是特定于处理器的寄存器。更高级别的协议取决于连接到SPI的设备。这是关于主题的what wikipedia has to say
SPI总线是事实上的标准。但是,缺乏正式的 标准反映在各种协议选项中。不同 字大小很常见。每个设备都定义了自己的协议, 包括它是否支持命令。有些设备是 发送仅;其他人只收到。芯片选择有时候 高电平有效而非低电平有效。有些协议发送最少 重要的是先。
因此制作图书馆真的没有意义。您只需为每种特定情况和设备组合编写代码。
答案 1 :(得分:1)
虽然其他人回答了its just bitbanging
;我认为编写小层有好处:
虽然发送数据通常只需要设置一个寄存器,但更常见的是初始化序列并不复杂。
随着微控制器的功率和容量以及项目规模的增加,实现平衡设计选择以提高可扩展性和可维护性非常重要 - 尤其是在商业项目中。
答案 2 :(得分:0)
如果您要求微控制器,那么您可以拥有自己的SPI库。 你需要使用bit-banging技术。 有软件SPI库可用。 由于每个微控制器都有不同的PORT架构和寄存器,因此它们不是通用的,它们仅适用于该控制器。
e.g。对于8051架构,您可以找到this。