[AT32F403/403A] AT32403A使用SPI发送数据不能先判断状态寄存器为空?

[复制链接]
 楼主| xiaomo321 发表于 2023-4-26 19:26 | 显示全部楼层 |阅读模式
本帖最后由 xiaomo321 于 2023-4-26 19:29 编辑

问题描述:一、首先是买来了一块ST7789驱动的小屏幕,看了下中景园提供的stm32硬件SPI驱动的代码,这个发送一字节数据这样写的,先判断SPI状态寄存器的发送缓存区是否为空
8016264490b261a614.png
我首先移植过来是改写成了这样,但是一直不行,屏幕点不亮,找了很久没找到问题原因所在
3629964490871d6eaa.png
然后我去github上看到别人有AT32移植ST7789的代码,我去看了一下,这样写的
63986644908e940e4a.png
试了一下,果然成了,我还试了下先发送数据,再判断发送缓存区是否为空,也能成功,但是我看参考手册上是这样写的
3268464490a4f935ab.png

希望有大佬能给我解答下,虽然问题解决了,但是还是没明白为什么要这样改
youtome 发表于 2023-5-7 15:18 | 显示全部楼层
不需要判断的。              
usysm 发表于 2023-5-7 15:33 | 显示全部楼层
这个可以跟dma配合使用的。              
ulystronglll 发表于 2023-5-7 16:17 | 显示全部楼层
网上有代码程序可以参考的吗              
fengm 发表于 2023-5-7 18:53 | 显示全部楼层
如果是模拟spi,直接clk写入就行。
tpgf 发表于 2023-5-10 17:13 | 显示全部楼层
这个貌似不用人工进行判定吧  函数体里自己就有
qcliu 发表于 2023-5-10 17:28 | 显示全部楼层
这个函数不用我们写 直接调用就可以了
drer 发表于 2023-5-11 08:23 | 显示全部楼层
意思是不是说底层驱动自行判定了 不需要人工写代码啊
coshi 发表于 2023-5-11 08:54 | 显示全部楼层
在发送数据的过程中,发送中断的作用是什么呢
kxsi 发表于 2023-5-11 11:08 | 显示全部楼层
虽然文档这样写 但是并不需要人工确认
wiba 发表于 2023-5-11 11:29 | 显示全部楼层
既然可以正常使用那么就是不用的  估计文档这块没有写清楚
084425 发表于 2023-5-12 15:29 | 显示全部楼层
需要判断的,跟ST一样处理,判断TDBE标志位
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

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