打印
[AT32F403/403A]

AT32403A使用SPI发送数据不能先判断状态寄存器为空?

[复制链接]
1604|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xiaomo321 于 2023-4-26 19:29 编辑

问题描述:一、首先是买来了一块ST7789驱动的小屏幕,看了下中景园提供的stm32硬件SPI驱动的代码,这个发送一字节数据这样写的,先判断SPI状态寄存器的发送缓存区是否为空

我首先移植过来是改写成了这样,但是一直不行,屏幕点不亮,找了很久没找到问题原因所在

然后我去github上看到别人有AT32移植ST7789的代码,我去看了一下,这样写的

试了一下,果然成了,我还试了下先发送数据,再判断发送缓存区是否为空,也能成功,但是我看参考手册上是这样写的


希望有大佬能给我解答下,虽然问题解决了,但是还是没明白为什么要这样改

使用特权

评论回复
沙发
youtome| | 2023-5-7 15:18 | 只看该作者
不需要判断的。              

使用特权

评论回复
板凳
usysm| | 2023-5-7 15:33 | 只看该作者
这个可以跟dma配合使用的。              

使用特权

评论回复
地板
ulystronglll| | 2023-5-7 16:17 | 只看该作者
网上有代码程序可以参考的吗              

使用特权

评论回复
5
fengm| | 2023-5-7 18:53 | 只看该作者
如果是模拟spi,直接clk写入就行。

使用特权

评论回复
6
tpgf| | 2023-5-10 17:13 | 只看该作者
这个貌似不用人工进行判定吧  函数体里自己就有

使用特权

评论回复
7
qcliu| | 2023-5-10 17:28 | 只看该作者
这个函数不用我们写 直接调用就可以了

使用特权

评论回复
8
drer| | 2023-5-11 08:23 | 只看该作者
意思是不是说底层驱动自行判定了 不需要人工写代码啊

使用特权

评论回复
9
coshi| | 2023-5-11 08:54 | 只看该作者
在发送数据的过程中,发送中断的作用是什么呢

使用特权

评论回复
10
kxsi| | 2023-5-11 11:08 | 只看该作者
虽然文档这样写 但是并不需要人工确认

使用特权

评论回复
11
wiba| | 2023-5-11 11:29 | 只看该作者
既然可以正常使用那么就是不用的  估计文档这块没有写清楚

使用特权

评论回复
12
084425| | 2023-5-12 15:29 | 只看该作者
需要判断的,跟ST一样处理,判断TDBE标志位

使用特权

评论回复
13
dopod577w| | 2023-9-17 23:29 | 只看该作者
楼上的那些都是机器人吧,净在这瞎胡说,帖子都没看懂,更没看at32给的代码。

TDBE是spi传输缓冲器空了,但这并不意味着数据已经通过mosi和sck发送出去了。如果检测到TDBE=1就立即拉高CS,那么传输缓冲器还没来得及把那8个bit通过SCK打出去,从机就会丢失最后一个字节的接收。

而BF标志是这8个bit确实被SCK打完了,所以就可以安全地拉高CS了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝