OpenEdv-开源电子网

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

STM32 SPI双机通信(主从全双工),绝对原创,申请酷帖

  [复制链接]

0

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-10-28
在线时间
5 小时
发表于 2016-11-7 10:34:03 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

5

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2016-10-20
在线时间
63 小时
发表于 2016-11-11 10:59:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

10

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-4-2
在线时间
23 小时
发表于 2016-11-29 21:24:24 | 显示全部楼层
andy93762 发表于 2014-9-11 11:04
我的程序按照你的代码写的,主机发送一个0X78,从机收到0x78后,加1再发回给主机,但是主机收到的数据有时 ...

你的程序从机进不了终端啊 是怎么回事
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-11-13
在线时间
21 小时
发表于 2016-12-1 16:20:01 | 显示全部楼层
  mark
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2015-6-10
在线时间
7 小时
发表于 2016-12-2 14:59:18 | 显示全部楼层
顶一个,正在学习
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2012-9-16
在线时间
21 小时
发表于 2016-12-8 08:05:42 | 显示全部楼层
xtong533 发表于 2016-8-9 14:02
这个ST官方有代码的。将一个STm32的SPi1和SPi2连接
/******************** (C) COPYRIGHT 2007 STMicroel ...

有没有工程文件 发一下
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-9-6
在线时间
5 小时
发表于 2016-12-9 10:42:47 | 显示全部楼层
主模式数据写到发送缓冲寄存器就立即在mosi发送,同时在miso采样接收,从模式的发送是在接收到mosi的第一个bit后自动发送。以上是硬件特性。
这意味着要做到真正的全双工,从需要在主发送数据前将要返回给主的数据准备好,放到发送缓冲寄存器。(意味着从在主发送前就知道主想要什么,给主准备好,一切只为了主人,好想要这样的女仆^^)言归正传,这样的特性只能应用在大量数据的交换,不需要判断主发送的数据的场合
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-9-6
在线时间
5 小时
发表于 2016-12-9 11:18:04 | 显示全部楼层
当从设备收到时钟信号,并且在MOSI引脚上出现第一个数据位时,发送过程开始,第一个
位被发送出去。余下的位(对于8位数据帧格式,还有7位;对于16位数据帧格式,还有15位)
被装进移位寄存器。当发送缓冲器中的数据传输到移位寄存器时,SPI_SP寄存器里的TXE
标志被设置。如果设置了API_CR2寄存器上的TXEIE位,将会产生中断。

这是从模式的发送过程,大多数书和教程里没有。只有手册里讲了
回复 支持 反对

使用道具 举报

qulehailai 该用户已被删除
发表于 2017-1-4 22:12:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-12-22
在线时间
26 小时
发表于 2017-2-23 16:40:20 | 显示全部楼层
好贴,mark  谢谢!
回复 支持 反对

使用道具 举报

0

主题

26

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1060
金钱
1060
注册时间
2016-7-25
在线时间
115 小时
发表于 2017-4-18 18:47:41 | 显示全部楼层
COOL,MARK一下
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-5-8
在线时间
12 小时
发表于 2017-5-8 16:34:27 | 显示全部楼层
非常完美 发表于 2014-5-28 15:43
回复【4楼】suqingxiao:
---------------------------------
从机不能主动发数据?
可是我做的测试,从机先 ...

我跟你见解相同,在此坐等大神分析、回复。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-5-8
在线时间
12 小时
发表于 2017-5-8 17:16:51 | 显示全部楼层
本帖最后由 ybjjsy 于 2017-5-9 09:13 编辑

复用功能的时钟不用打开吧
回复 支持 反对

使用道具 举报

21

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2017-3-6
在线时间
32 小时
发表于 2017-6-19 19:20:11 | 显示全部楼层
不愧为精华帖!我想请问一下主、从机需要相同频率的时钟线?
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2012-7-20
在线时间
15 小时
发表于 2017-7-19 08:48:56 | 显示全部楼层
实用,验证成功了,就是从机数据接收有点问题,谢谢指导
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-10-5
在线时间
17 小时
发表于 2017-7-25 15:10:22 | 显示全部楼层
rongshuxia 发表于 2016-3-29 11:06
之前做过spi双机通信的,只是都是MASTER发起,没有试过SLAVE要给MASTER发数据时是怎么发起的呢?
1、主从 ...

按照你说的,从机利用一个端子电平变化给主机,主机截获这个信号后驱动通信,但是这时主机怎么知道要读取多少长度的从机数据呢?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-8-1
在线时间
1 小时
发表于 2017-8-1 10:47:34 | 显示全部楼层
碧海航歆 发表于 2017-7-19 08:48
实用,验证成功了,就是从机数据接收有点问题,谢谢指导

我想问下硬件怎么连接呢?
回复 支持 反对

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2017-8-21
在线时间
32 小时
发表于 2017-8-21 11:41:27 | 显示全部楼层
真的很不错
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2017-8-26
在线时间
0 小时
发表于 2017-8-26 20:47:20 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

5

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-11-1
在线时间
27 小时
发表于 2017-8-28 10:57:23 | 显示全部楼层
纠结用战舰V3,自己写的和 用原子哥的SPI程序读W25Q,返回一直是空,学习下你的
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2016-9-5
在线时间
62 小时
发表于 2017-8-29 17:13:39 | 显示全部楼层
Mark一下,好帖子必须好好学习
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2016-7-28
在线时间
22 小时
发表于 2017-9-2 11:26:39 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

9

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2017-2-14
在线时间
90 小时
发表于 2017-10-9 18:36:04 | 显示全部楼层
学习了~
回复 支持 反对

使用道具 举报

27

主题

118

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2015-12-8
在线时间
175 小时
发表于 2018-4-10 09:12:13 | 显示全部楼层
谢谢分享,刚好可以参考
为自己掌握新的知识感到快乐
回复 支持 反对

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
发表于 2018-4-19 15:51:30 | 显示全部楼层
666,必须mark
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2018-3-7
在线时间
33 小时
发表于 2018-4-23 11:55:17 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2016-5-17
在线时间
23 小时
发表于 2018-4-25 11:32:48 | 显示全部楼层
SPI更好的代码,分享给大家,建议看一下
http://skhgg.skhg56.cn/d/1804241 ... amp;fr=toplist_1220
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-8-8
在线时间
3 小时
发表于 2018-8-8 19:01:13 | 显示全部楼层
最近在学习spi通信,刚好用到~mark一下~经过测试,似乎从机返回的数据一直会有错位~这是什么情况?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-8-8
在线时间
3 小时
发表于 2018-8-8 19:01:38 | 显示全部楼层
行来行去 发表于 2018-4-25 11:32
SPI更好的代码,分享给大家,建议看一下
http://skhgg.skhg56.cn/d/180424134149627.html?ac=809642649&f= ...

进不去啊~~
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-8-8
在线时间
1 小时
发表于 2018-8-8 21:06:18 | 显示全部楼层
学习
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-8-9
在线时间
1 小时
发表于 2018-8-9 11:28:52 | 显示全部楼层
wodefans7 发表于 2013-11-15 11:07
**** 作者被禁止或删除 内容自动屏蔽 ****

贴主看到了,能回复一下么,有点问题咨询
回复 支持 反对

使用道具 举报

4

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2018-6-27
在线时间
45 小时
发表于 2018-8-23 16:46:57 | 显示全部楼层
留个印记
回复 支持 反对

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2018-10-7 20:59:37 | 显示全部楼层
很赞!!!
回复 支持 反对

使用道具 举报

1

主题

36

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-10-14
在线时间
9 小时
发表于 2018-10-23 14:14:47 | 显示全部楼层
学习了先回复然后,慢慢看。嘿嘿
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-24
在线时间
4 小时
发表于 2018-11-24 11:59:27 | 显示全部楼层
MARK 慢慢研究
回复 支持 反对

使用道具 举报

12

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2018-6-12
在线时间
19 小时
发表于 2018-11-24 15:24:07 | 显示全部楼层
感谢
回复 支持 反对

使用道具 举报

6

主题

36

帖子

1

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2018-12-5
在线时间
4 小时
发表于 2018-12-5 16:36:57 | 显示全部楼层
66666的
回复 支持 反对

使用道具 举报

6

主题

36

帖子

1

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2018-12-5
在线时间
4 小时
发表于 2018-12-5 16:37:58 | 显示全部楼层
用的到的,谢谢
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-4-28
在线时间
7 小时
发表于 2019-4-28 19:57:47 | 显示全部楼层
楼主你好。我最近自己写了一个SPI双机通信,使用的是正点原子探索者和一块stm32F405的自制板子。探索者为主机软件片选,自制板为从机硬件片选。主从间的数据收发都通过中断进行。我的通信机制中,主机向从机写入数据是这样的:主机先在一块缓冲区中准备好需要发送的完整一帧数据,然后开启发送和接收中断,SPI发送缓冲区为空立即触发发送中断然后逐字节地将缓冲区中的数据发送出去,发送完后失能发送中断;从机则是一直开启接收和发送中断,接收中断用来解包,发送中断始终返回无效字节。整个机制我已经都实现了,问题是最高只能使用16分频系数,4和8会出现数据丢失的情况,请问是不是由于我完全使用中断来处理的原因?还是说双机通信本身就有速率上的限制?感谢!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-5-14
在线时间
0 小时
发表于 2019-5-14 09:36:25 | 显示全部楼层
·请问, 为什么从机也要用 SPI1_SetSpeed 设置速度呀?速度不是在主机里设置就可以了吗?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-4-23
在线时间
1 小时
发表于 2019-6-3 15:29:05 | 显示全部楼层
想问一下,从机末尾那里的中断服务函数有什么意义么?不太懂
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-3-25
在线时间
16 小时
发表于 2019-7-31 12:46:46 | 显示全部楼层
Foveove 发表于 2014-12-5 14:29
**** 作者被禁止或删除 内容自动屏蔽 ****

怎么解决了??谢谢
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-3-25
在线时间
16 小时
发表于 2019-8-1 11:27:34 | 显示全部楼层
STM32新学习者 发表于 2014-8-6 20:19
楼主能不能给一个联系的方式,比如:QQ  等等,有一些2个STM32  使用SPI通信的问题需要咨询你一 ...

怎么解决的?老哥,我也是从机发出来的数据整体往后偏了8个bit
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2019-7-29
在线时间
12 小时
发表于 2019-8-4 17:50:55 | 显示全部楼层
查询接受是什么意思啊,改后的主机代码不需要中断了吗?
回复 支持 反对

使用道具 举报

12

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2013-9-24
在线时间
50 小时
发表于 2019-8-7 14:56:22 | 显示全部楼层
主机的程序,一直进中断啊,无论是spi1还是spi2,调试的时候发现主机程序一直进中断,不予从机相连都进中断啊!!!
回复 支持 反对

使用道具 举报

12

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2013-9-24
在线时间
50 小时
发表于 2019-8-7 19:11:16 | 显示全部楼层
andy93762 发表于 2014-9-11 11:04
我的程序按照你的代码写的,主机发送一个0X78,从机收到0x78后,加1再发回给主机,但是主机收到的数据有时 ...

你的没问题
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-8-8
在线时间
1 小时
发表于 2019-8-8 12:19:32 | 显示全部楼层
收藏好贴!
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2019-6-20
在线时间
47 小时
发表于 2019-11-18 15:55:44 | 显示全部楼层
顶顶顶!
回复 支持 反对

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
发表于 2019-12-27 08:44:37 | 显示全部楼层
瞌睡送枕头
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-6-13
在线时间
4 小时
发表于 2020-4-8 16:44:11 | 显示全部楼层
这位大神    主机给从机发送从机接受正确  我是这样操作的的  从机每接受到一个字节后给主机发送一个固定的字节,主机收到的数据有时候正确 有时候错误,比如从机收到一个字节后给主机返回0x5555,则主机收到的数据有时候为0XAAAA,求探讨
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-4-20 13:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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