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

STM32F103的SPI模式

[复制链接]
lunar-412568 提问时间:2020-7-16 16:49 /

STM32F103连一个ADC芯片,此芯片时序如下图。
一开始用了全双工模式SPI_Direction_2Lines_FullDuplex,调试发现执行了发送和接收函数后,只实现了发送,没有接收。即图中红框内部分,后面接收部分连时钟信号都不产生。
然后又尝试SPI_Direction_2Lines_RxOnly,连发送信号都不输出了。
难道是发送和接收要分成两步,用两种模式实现?
连接.jpg

ADC芯片时序

ADC芯片时序

收藏 评论10 发布时间:2020-7-16 16:49

举报

10个回答
DavidTan 回答时间:2020-7-17 09:35:25
SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机先发一串命令,然后ADC芯片才能把你想要的数据返回,这时候你应该再继续发一串FF FF FF FF ....

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

damiaa 回答时间:2020-7-17 10:15:41
SPI_Direction_2Lines_FullDuplex,收发
SPI_Direction_2Lines_RxOnly 只收了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

hjl2832 回答时间:2020-7-17 11:08:52
肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就会传输数据。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

hjl2832 回答时间:2020-7-17 11:09:44
hjl2832 发表于 2020-7-17 11:08
肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就 ...

注意SPI下 ,IO 是工作在复用模式。
陌路夕颜 回答时间:2020-7-17 12:14:52
把软件配置部分源码贴出来有助于分析问题,或者直接用别人现成的驱动

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

lunar-412568 回答时间:2020-7-17 13:23:18
tgw860910 发表于 2020-7-17 09:35
SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机 ...

对的,收发执行两次即可,第二次可以收到数据。
小小超 回答时间:2020-7-17 14:30:06
spi的发送和接收是同步的,发送完成,就相当于接收完成。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

大陶 回答时间:2020-7-17 15:30:39
最好把这一块的代码发出来,SPI全双工,发的时候也是收的时候,看一下 MOSI和MOSI的配置。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

butterflyspring 回答时间:2020-7-27 17:38:04
作为SOI的从设备是没有主动发送数据的能力,必须依靠主设备的时钟。所以主发送命令时,从可能没有准备好数据,所以下一次准备好后,主再发数据时就能收到信息了

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

fighter12315 回答时间:2020-7-27 17:47:51
SPI全双工,收发是同步的,读取一字节就是发送一个无意义的字节过去,发的同时就会收到一字节

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版