打印

好长时间了,始终搞不明白:STM32的SPIx->DR为什么总是0x0000?

[复制链接]
8412|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renpeng009|  楼主 | 2012-3-21 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 renpeng009 于 2012-3-21 22:49 编辑

参考了各种例程,官方的,牛人的,甚至,干脆照抄一下,相同的配置,时钟也开了,也使能了,但是,在执行SPIx->DR=TxData;时,无论如何也没有办法改变DR的值,始终是0,我就纳了闷儿了。我是用JTAG硬仿的,在KEIL里看SPI的寄存器。有哪位大侠知道的,希望可以点拨一下。
沙发
sjnh| | 2012-3-22 09:56 | 只看该作者
从几个方面考虑:
1、配置引脚
2、外部链接的什么芯片,芯片的时序跟你配置是否一致,片选引脚是否已经操作正确

你现在读的是00,干脆通过电阻将SPI MISO引脚接到VCC,看看是不是FF,确认配置和引脚是否正确

使用特权

评论回复
板凳
renpeng009|  楼主 | 2012-3-22 13:06 | 只看该作者
2# sjnh
谢谢你的回复,不过,这里我不是读取,而是发送数据,也就是说MOSI无输出。
SPIx->DR=TxData;是一条赋值语句,理应将赋的值从MOSI管脚发送出去,但我从KEIL里观察到,执行完这一句之后DR寄存器依然为0 ,很是不解。

使用特权

评论回复
地板
sjnh| | 2012-3-22 14:51 | 只看该作者
看了你不了解SPI的结构,SPI_DR读的内容是什么,写的内容是什么,再去看看手册

使用特权

评论回复
5
香水城| | 2012-3-22 21:51 | 只看该作者
读SPI_DR读的是接收寄存器,写SPI_DR写的是发送寄存器。你无法读到发送寄存器。

使用特权

评论回复
6
renpeng009|  楼主 | 2012-3-24 14:54 | 只看该作者
5# 香水城
哦,这样啊,也就是说,KEIL里面的仿真界面SPI_DR显示的是接收到的内容,是吧?
哎,挺郁闷的,不知道问题到底出在哪里。

使用特权

评论回复
7
leinou| | 2013-6-24 13:59 | 只看该作者
你问题解决了没啊

使用特权

评论回复
8
香水城| | 2013-6-24 14:40 | 只看该作者
leinou 发表于 2013-6-24 13:59
你问题解决了没啊

什么意思?

LZ在6楼不是已经明白了,从SPI_DR寄存器看到永远是收到的数据,而不是发出的数据么。还有什么问题?

使用特权

评论回复
9
hxb20122012| | 2013-6-24 15:54 | 只看该作者
接收到的数据,我以前理解为如果发送成功,DR中的内容自然为空,所以是0x00,原来是这么理解的。

使用特权

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

本版积分规则

6

主题

50

帖子

1

粉丝