[STM32F1] spi接受中断

[复制链接]
 楼主| happy_10 发表于 2021-7-4 10:20 | 显示全部楼层 |阅读模式
看到一段话,SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)"或者"接收者(Receiver)"。在每个Clock周期内,SPI设备都会发送并接收一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了,
那每次我发送一个字节的数据后,是否就会接受到一个字节的数据,那这个没有用的数据会不会触发接收中断呢
午夜粪车 发表于 2021-7-4 10:22 | 显示全部楼层
有一个接受缓冲非空的中断的,但是如果你需要使用这个的话需要使能。
yszong 发表于 2021-7-4 10:25 | 显示全部楼层
一般来说,你作为主机,发送一个数据出去的同时会收到一个数据,你只需发送一个字节后,把接受到的数据读取即可。
stly 发表于 2021-7-4 10:27 | 显示全部楼层
一般来说接受中断用于单片机作为从机的情况,因为时钟是外部的控制的,单片机不知道什么时候回有数据进来,所以这时最好使用中断接收数据。
supernan 发表于 2021-7-4 10:30 | 显示全部楼层
如果仅仅用于单向发送,建议从机把上次收到数据的发送回来,这样便于主机进行数据校验。
 楼主| happy_10 发表于 2021-7-4 10:31 | 显示全部楼层
我的从机设置为接受中断,那如果主机想启动发送,是不是要先发送一个启动时钟的信号,我才能去接受
 楼主| happy_10 发表于 2021-7-4 10:33 | 显示全部楼层
是双向传输的,想法是主机发什么从机就接受什么,从机发什么主机也就接受什么,不会有其他的dumy data
yszong 发表于 2021-7-4 10:35 | 显示全部楼层
一个主机和从机,同一时刻可以相互发送数据。
songqian17 发表于 2021-7-4 10:36 | 显示全部楼层
器件时没有办法判断什么有用或者什么没用,只要收到数据,都会一致处理
dingy 发表于 2021-7-4 10:42 | 显示全部楼层
如果你是从机,那么就等着主机发数据过来吧。主机随时都可以发过来,也没有所谓的启动时钟信号,一般按照规定的时序,比如拉低CS,CLK相应变化而已。如果你用硬件SPI的话,那么在主机发数据过来之前应准备好数据放到缓冲里去。
 楼主| happy_10 发表于 2021-7-4 10:44 | 显示全部楼层
嗯嗯 那如果我作为从机想发送数据给主机,我需要通知主机接受吗,时钟信号是由主机产生的还是一直都在
chuxh 发表于 2021-7-4 10:46 | 显示全部楼层
从机不能主动发数据给主机的,因为时钟是需要主机想发数据的时候才会有;这个需要就定义好相应的协议以上传下传数据了。
juventus9554 发表于 2021-7-4 10:48 | 显示全部楼层
SPI通讯从机无法主动发起通讯,只能是把数据存着,主机发时钟过来的时候才能返回数据。但是有的从机芯片是这么干的:数据准备好了,作为spi从机还有一个额外的IO与主机相连,从机数据准备好了就拉低这个IO  主机那边设置外部中断,检测到中断就发起SPI通讯,把数据读回来。  具体实现方式可以参考一下TI的ADS1292。
juventus9554 发表于 2021-7-4 10:50 | 显示全部楼层
楼主不要疑问,直接用就是了,不放心,跑一个试试。
stly 发表于 2021-7-4 10:53 | 显示全部楼层
个人认为应该会的
llljh 发表于 2021-7-4 10:56 | 显示全部楼层
变更一下操作时序就可以改进
yinxiangh 发表于 2021-7-4 10:58 | 显示全部楼层

好像是配置有问题
morrisk 发表于 2021-7-4 11:00 | 显示全部楼层
只要是数据 都会触发
 楼主| happy_10 发表于 2021-7-4 11:01 | 显示全部楼层
好的,我明天去单位试一下,多谢各位大侠了哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部