海迹天涯 发表于 2017-1-11 15:12:52

STM32F051寄存器方式读写SPI的DR寄存器

HAL库的SPI接口效率较低,想试试用寄存器方式配置SPI外设,然后用SPI接口读取外部FLASH。结果配置好后读取到的数据全为0,通过仿真发现配置的寄存器都是正确的,使用断点调试SPI接口能读取到正确的数据。对比HAL对寄存器的操作,发现没有落下哪个步骤,但是使用寄存器方式读取数据始终是0,程序如下图

海迹天涯 发表于 2017-1-11 15:13:20

忘记程序截图了

xmshao 发表于 2017-1-11 17:17:41

F0的 SPI 有个FIFO 阈值需要配置, FRXTH@spi_cr2配置为1后测试下。

Dylan疾风闪电 发表于 2017-1-11 17:21:22

试下3楼的建议。
若还是不行,建议可以把初始化代码上传,大家帮你看。

jackten 发表于 2017-1-11 17:25:03

过来学习学习               

海迹天涯 发表于 2017-1-12 08:42:14

xmshao 发表于 2017-1-11 17:17
F0的 SPI 有个FIFO 阈值需要配置, FRXTH@spi_cr2配置为1后测试下。

恩,配置为4分之1个字也就是8位,但是还是一样的问题。在寄存器和HAL库配置完SPI后所有寄存器都是一样的。

海迹天涯 发表于 2017-1-12 08:43:28

Dylan疾风闪电 发表于 2017-1-11 17:21
试下3楼的建议。
若还是不行,建议可以把初始化代码上传,大家帮你看。

这个有点不方便,如果你想试试的话你可以使用HAL库的初始化函数然后把发送接收改成我这样测试就知道了

Dylan疾风闪电 发表于 2017-1-12 14:58:17

海迹天涯 发表于 2017-1-12 08:43
这个有点不方便,如果你想试试的话你可以使用HAL库的初始化函数然后把发送接收改成我这样测试就知道了 ...

不去试了,你贴出来的这个函数不存在问题。

海迹天涯 发表于 2017-1-12 15:41:03

Dylan疾风闪电 发表于 2017-1-12 14:58
不去试了,你贴出来的这个函数不存在问题。

那就奇怪了,初始化没问题,读写函数也没问题,为啥读出来就是0了呢
页: [1]
查看完整版本: STM32F051寄存器方式读写SPI的DR寄存器