你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 7009|回复: 3

STM32_SPI主从通信

[复制链接]

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
发表于 2016-5-9 21:58:05 | 显示全部楼层 |阅读模式
今天讲解“STM32F103 SPI主从通信”,原本计划将这部分内容定在后面(第二阶段)来讲解,满足一位网友的问题“关于两块MCU的SPI通讯”,所以今天特地提前讲解了。
由于昨天讲解的是“SPI读写Flash”,MCU是作为SPI通信中的主机,今天主要讲解SPI通信的从机,我将我测试的主机从机的代码分别打包供大家下载测试。
今天提供并讲解的软件工程,基于昨天的软件工程“SPI读写Flash”修改而来。若有疑问,请关注微信公众号“EmbeddDeveloper”获取更多信息。
本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气。
每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。
今天的软件工程下载地址(360云盘):
主机:http://yunpan.cn/cPIJguDkjntYI  访问密码 7bb6
从机:http://yunpan.cn/cPIJfZxr7D5Sk  访问密码 fd5a
STM32F10x的资料可以在我360云盘下载:
http://yunpan.cn/crBUdUGdYKam2   访问密码 ca90
测试原理及现象:主机间隔500ms发送10个字符(0-9),从机开启SPI中断接收数据,接收满10字节数据,置标志位gSPI_FlagOver有效,并变化LED,通过串口打印接收到的数据。
关于“STM32F103 SPI通信从机部分” 我把重要的几点在下面分别讲述,若不明白,请关注微信公众号“EmbeddDeveloper”查阅或留言。
一、RCC时钟配置
SPI主从通信 - 图片1.png
该函数位于在bsp.c文件下面;
使能RCC时钟:RCC_APB2Periph_SPI1
二、引脚配置
SPI主从通信 - 图片2.png
该函数位于在spi.c文件下面;
这里是对SPI所使用引脚进行配置。
注意
SPI作为从机,MOSI作为从机接收而不是MISO,“今天的重点”我还会强调这点。
三、SPI配置
SPI主从通信 - 图片3.png
该函数位于在spi.c文件下面;
对SPI进行配置。
配置的每一条语句都有注释,请看源代码.
强调一点:SPI_CPOL_Low时钟空闲为低,这个引脚容易受干扰导致通信故障。
四、SPI中断控制器配置
SPI主从通信 - 图片4.png
该函数位于在bsp.c文件下面;
因为开启了中断接收数据,这里必须配置中断控制器。
五、SPI中断处理
SPI主从通信 - 图片5.png
该函数位于在stm32f10x_it.c文件下面;
文章开始就说明了:接收满10字节数据,置标志位gSPI_FlagOver有效。该函数就是这个意思。
、主函数应用
SPI主从通信 - 图片6.png
该函数位于在main.c文件下面;
这就是文章开头“测试原理及现象”的描述,就不多说了。
六、今天的重点提示
A.主从连接方式:
这里对于开始学习的朋友来说,有点不理解(因为基本上都知道串口的通信,主机Tx对应从机Rx),还以为“主机的MOSI”连接的是“从机的MISO”,其实这里是和串口的区别之一(当然还有其他,这里不讲解)。具体请看参考手册。
SPI主从通信 - 图片7.png
B.常见问题
之前有写过关于SPI主从通信的实例。但是,我今天专门找了两套板子来测试,刚开始,通信时钟有问题(从机不停地在接收0x00数据),结果发现两板子之间没有共地,找了根线接上,数据没有不停地接收了。
但新的问题又来了,开始接收的数据正确,一旦出错了一位,后面接收到的数据都不对了。我是不停的查看代码,开始始终怀疑代码有问题,但把代码该了无数次(不知道好多次)之后,手册看了几遍,上网也查了很久,还是一样的现象,结果,我用示波器测试了一下通信的时钟(SCK),频率有几M, 波形间隔大概只有100ns,我就怀疑问题出在通信的线上,线太长了(估计有四五十厘米),果不然,使用短点的通信线,问题就好了。
说实话,一个不起眼的问题,可能会耗掉你无数的时间,这里我将我走过的弯路告诉大家,希望不要走这条弯路,今后的分享中我也会将一些容易出错的地方拿到这里讲解。
下载方式:长按网站 ->选择复制 ->打开
或者复制网站在电脑上下载也可。
想掌握更多精彩内容,请关注我的微信公众号。
微信搜索“EmbeddDeveloper”, 或扫描下面二维码关注
公众号.jpg

回复

使用道具 举报

0

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
2018-9-9
发表于 2016-11-24 10:13:11 | 显示全部楼层
文中的360云盘失效 stm32 spi主从通信工程代码有新的地址下载不 方便发我邮箱不 474547926@qq.com
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2020-4-26
发表于 2017-7-29 09:00:43 来自手机 | 显示全部楼层
楼主您好!最近在调试主从收发的例程,遇到了只能成功发送,不能接收的问题,想起了您微信公众号里面的这篇文章,只是360云盘里的相关例程失效了,再次想问一下楼主有没有新的下载链接,或者方不方便给我发一下,邮箱:909933850@qq.com,谢谢!!
回复 支持 反对

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

高级会员

最后登录
2020-8-21
发表于 2018-2-27 14:20:43 | 显示全部楼层
tobyshi 发表于 2017-7-29 09:00
楼主您好!最近在调试主从收发的例程,遇到了只能成功发送,不能接收的问题,想起了您微信公众号里面的这篇 ...

关注他微信号,他微信号上都传到百度云了
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版