[STM32F1]

请教一下关于stm的spi接受中断问题

[复制链接]
1494|16
手机看帖
扫描二维码
随时随地手机跟帖
1044132648|  楼主 | 2017-12-3 15:12 | 显示全部楼层 |阅读模式
spi, STM, MIT, ce, ck
看到一段话,SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)"或者"接收者(Receiver)"。在每个Clock周期内,SPI设备都会发送并接收一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了,
那每次我发送一个字节的数据后,是否就会接受到一个字节的数据,那这个没有用的数据会不会触发接收中断呢
1044132648|  楼主 | 2017-12-3 18:56 | 显示全部楼层
求助,困惑很久了

使用特权

评论回复
1044132648|  楼主 | 2017-12-4 08:36 | 显示全部楼层
没人吗

使用特权

评论回复
fengfeng的恒| | 2017-12-4 13:38 | 显示全部楼层
有一个接受缓冲非空的中断的,但是如果你需要使用这个的话需要使能。
一般来说,你作为主机,发送一个数据出去的同时会收到一个数据,你只需发送一个字节后,把接受到的数据读取即可。
一般来说接受中断用于单片机作为从机的情况,因为时钟是外部的控制的,单片机不知道什么时候回有数据进来,所以这时最好使用中断接收数据。

使用特权

评论回复
kingkits| | 2017-12-4 13:52 | 显示全部楼层
如果仅仅用于单向发送,建议从机把上次收到数据的发送回来,这样便于主机进行数据校验。

使用特权

评论回复
1044132648|  楼主 | 2017-12-5 08:21 | 显示全部楼层
fengfeng的恒 发表于 2017-12-4 13:38
有一个接受缓冲非空的中断的,但是如果你需要使用这个的话需要使能。
一般来说,你作为主机,发送一个数据 ...

我的从机设置为接受中断,那如果主机想启动发送,是不是要先发送一个启动时钟的信号,我才能去接受

使用特权

评论回复
1044132648|  楼主 | 2017-12-5 08:23 | 显示全部楼层
kingkits 发表于 2017-12-4 13:52
如果仅仅用于单向发送,建议从机把上次收到数据的发送回来,这样便于主机进行数据校验。 ...

是双向传输的,想法是主机发什么从机就接受什么,从机发什么主机也就接受什么,不会有其他的dumy data

使用特权

评论回复
一路向北lm| | 2017-12-5 08:49 | 显示全部楼层
一个主机和从机,同一时刻可以相互发送数据。

使用特权

评论回复
kingkits| | 2017-12-5 09:14 | 显示全部楼层
器件时没有办法判断什么有用或者什么没用,只要收到数据,都会一致处理

使用特权

评论回复
fengfeng的恒| | 2017-12-5 09:56 | 显示全部楼层
1044132648 发表于 2017-12-5 08:21
我的从机设置为接受中断,那如果主机想启动发送,是不是要先发送一个启动时钟的信号,我才能去接受 ...

如果你是从机,那么就等着主机发数据过来吧。主机随时都可以发过来,也没有所谓的启动时钟信号,一般按照规定的时序,比如拉低CS,CLK相应变化而已。如果你用硬件SPI的话,那么在主机发数据过来之前应准备好数据放到缓冲里去。

使用特权

评论回复
1044132648|  楼主 | 2017-12-5 11:12 | 显示全部楼层
fengfeng的恒 发表于 2017-12-5 09:56
如果你是从机,那么就等着主机发数据过来吧。主机随时都可以发过来,也没有所谓的启动时钟信号,一般按照 ...

嗯嗯 那如果我作为从机想发送数据给主机,我需要通知主机接受吗,时钟信号是由主机产生的还是一直都在

使用特权

评论回复
fengfeng的恒| | 2017-12-5 14:43 | 显示全部楼层
1044132648 发表于 2017-12-5 11:12
嗯嗯 那如果我作为从机想发送数据给主机,我需要通知主机接受吗,时钟信号是由主机产生的还是一直都在 ...

从机不能主动发数据给主机的,因为时钟是需要主机想发数据的时候才会有;这个需要就定义好相应的协议以上传下传数据了。

使用特权

评论回复
pengchang1994| | 2017-12-5 15:46 | 显示全部楼层
SPI通讯从机无法主动发起通讯,只能是把数据存着,主机发时钟过来的时候才能返回数据。但是有的从机芯片是这么干的:数据准备好了,作为spi从机还有一个额外的IO与主机相连,从机数据准备好了就拉低这个IO  主机那边设置外部中断,检测到中断就发起SPI通讯,把数据读回来。  具体实现方式可以参考一下TI的ADS1292。

使用特权

评论回复
艾呀呀| | 2017-12-6 11:36 | 显示全部楼层
这帖子还是回复慢,要是有个专门交流的微信群多好

使用特权

评论回复
dongliushui| | 2017-12-6 13:17 | 显示全部楼层
楼主不要疑问,直接用就是了,不放心,跑一个试试。

使用特权

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

本版积分规则

4

主题

17

帖子

0

粉丝