首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM32F1 -在裸金属上使用主SPI

STM32F1 -在裸金属上使用主SPI
EN

Stack Overflow用户
提问于 2017-02-10 19:59:21
回答 1查看 2.2K关注 0票数 2

我一直试图移植一些我的AVR代码,以驱动一个简单的SPI到ARM作为一个学习练习(我是非常新的ARM一般)。为此,我只需要在主模式下使用SPI。

我在数据表中查找我的设备(STM32F103C8),发现我需要的SPI1引脚、SCK和MOSI分别映射为PA5和PA7的替代函数以及其他外围设备(pg.29)。我的理解是,为了在这些引脚上使用SPI函数,我需要确保其他映射到同一个引脚的东西都是禁用的。但是,当查看外围时钟控制寄存器的默认值时,其他功能似乎已经被禁用。

我查看了参考手册中的SPI部分,包括25.3.3节--在主模式下配置SPI。首先,我在SPI1中启用了APB2ENR主时钟,并按照本节中的步骤配置SPI1以满足我的需要。我还更改了PA5/7的设置,将它们的模式设置为“备用函数输出推挽”(9.1.4)。最后,我通过设置SPI1启用了CR1_SPE。

从我的阅读中,我曾经想过,通过像上面一样配置SPI之后将一个值加载到SPI1数据寄存器中,数据将被移出。但是,在写入数据之后,SPI状态寄存器中的TXE标志永远不会被设置,这意味着我写入的数据就在那里。

在这一点上,我假设还有一些东西我没有正确配置。例如,我不能百分之百地确定如何处理PA5/7引脚。我试着从数据表中了解我能做些什么,但是我什么也没有得到。还需要做些什么才能奏效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 22:23:10

我几乎可以肯定,您没有在SSM寄存器中设置SPIx->CR1SSI位。这些芯片中的SPI非常简单,您需要设置SSMSSISPEMSTR、正确的格式(LSBFIRSTCPOLCPHA)和SPIx->CR1中的适当波特率(BR),这样就可以了。

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

https://stackoverflow.com/questions/42167712

复制
相关文章

相似问题

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