OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4512|回复: 5

操作SPI2时,观察SPI2-SR的值发现第二次发送时,发送缓冲区TXE状态一直为非空,硬件无法置1,萌新求教如何解决

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-3-17
在线时间
39 小时
发表于 2021-1-26 17:12:57 | 显示全部楼层 |阅读模式
5金钱
我用的是STM32CubeMX的HAL库方式配置SPI2初始化代码,然后发送数据单独用寄存器的方式来操作,目的是驱动一个SPI通信协议的TFT屏(想让刷新率提高一些)
使用HAL库的SPI普通发送函数能够成功亮屏和刷屏。然后换成读取SPI2->SR状态寄存器的状态,写数据到SPI2->DR数据寄存器,想法很美好,但是烧录程序后,第一次写入数据后,SPI2->SR寄存器的TXE位变为非空状态,且一直不被硬件置1,导致卡在第二次判断发送缓冲区为空状态的循环中。写了读取SPI2->DR的数据不行。提高SPI的分频系数,降低SPI的速率也不行。将SPI的模式由全双工(主)改为仅发送(主)还是不行。
附上SPI寄存器写数据的代码:
SPI寄存器收发数据问题01.jpg
下面是DEBUG的时候查看的SPI2->SR寄存器的值:
SPI寄存器收发数据问题03.jpg
SPI寄存器收发数据问题04.jpg
可以看到SPI2->SR寄存器的TXE位一直为0,无法被硬件置1。

我看原子的F4中文手册里有下面图示的描述:
SPI寄存器收发数据问题02.jpg
里面描述了当把数据写入到SPI_DR寄存器时,通信就启动,并将发送缓冲区内的数据并行加载到移位寄存器中。但是加载到移位寄存器中后,TXE发送缓冲区不是该被硬件置1吗?为啥还是非空状态?小白一脸懵逼

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-1-26 17:12:58 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4105
金钱
4105
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-1-26 17:30:32 | 显示全部楼层
SPI2->DR 放最前面
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-3-17
在线时间
39 小时
 楼主| 发表于 2021-1-26 17:33:32 | 显示全部楼层

忘说了,发送数据跟判断状态循环顺序换过了,还是不行
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-3-17
在线时间
39 小时
 楼主| 发表于 2021-1-27 11:33:00 | 显示全部楼层
找到问题了,一直没注意,自己在写SPI2寄存器配置的时候发现使能SPI2的话,SPI2->CR1寄存器的第6位应该为1,之前看到的SPI2->CR1寄存器的值为0x00000306,阿哲。。。。。很明显第6位为0,SPI2没有使能(当时太焦躁了,没仔细查看)后来在HAL的SPI2初始化函数中的末尾添加了一句:SPI2->CR1 |= 1<<6;使能SPI2后,问题解决,屏幕成功点亮。(我以为HAL库在最后调用的那一个HAL_SPI_Init(&hspi2)函数就把SPI2给使能了,结果没有,使能SPI看来是在ST写的HAL库的收发数据函数中了)
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-3-17
在线时间
39 小时
 楼主| 发表于 2021-1-27 11:34:05 | 显示全部楼层

嗯嗯,谢谢了,自己试着写了下寄存器的SPI配置,然后找到问题了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 21:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表