打印
[STM8]

stm8s的spi问题

[复制链接]
2883|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2015-1-16 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两片stm8s用spi通信,主机采用查询TXE标志发送一个数据包,从机收到数据包后解析并返回一个数据包。
问题如下:
1.我看到大部分关于主机的例程,接收数据时,均采用查询方式,且都是发送完马上查询接收。只是因为代码简单嘛?

2.对于主机接收数据有一个地方我很疑惑,从机把数据放入发送缓冲寄存器后,必须主机往SCK线上发送时钟,从机的数据才会送出吧,同时,主机才会接收数据。那么采用双线单向传输时,主机发送完数据后,SCK线上是不是就没有时钟了?到底主机发送时钟的机制是如何的?

3.主机发送和接受都需要时钟,spi接口空闲时,SCK线上应该没有时钟吧,当往主机的发送寄存器写数据,主机开始往SCK上发时钟,并发送数据。发送完成以后,主机是不是就停止时钟了?我的理解对吗?

4.主机的接收采用中断方式是否可行?因为不想让主机等待接收。

5.SPI半米以内的通讯距离是否可靠?
沙发
popeye021|  楼主 | 2015-1-16 13:28 | 只看该作者
顶上去

使用特权

评论回复
板凳
popeye021|  楼主 | 2015-1-17 21:37 | 只看该作者
还是没人回答吗?

使用特权

评论回复
地板
Serge_Ding| | 2015-1-17 23:03 | 只看该作者
帮顶,,,

使用特权

评论回复
5
戈卫东| | 2015-1-18 21:49 | 只看该作者
1 不是因为简单。SPI主机只在发数据时才给出时钟,如果没有数据要发只需要接收也必须发送数据以产生时钟。
2 3 主机发送数据时会给出时钟信号,发送结束时钟也不再给。从机如果有数据要发给主机,也会在时钟信号的有效边沿更新数据。
4 主机的接收是主动的,如果不给出“发送”的操作,接收中断永远不会被触发。
5 采用适当的电路、适当的速率应该是没有问题的

使用特权

评论回复
6
popeye021|  楼主 | 2015-1-19 10:00 | 只看该作者
戈卫东 发表于 2015-1-18 21:49
1 不是因为简单。SPI主机只在发数据时才给出时钟,如果没有数据要发只需要接收也必须发送数据以产生时钟。
...

看了你的回复,我的理解:主机的接收是主动的,也就意味着主机接收数据之前要给出发送操作以便产生接收数据的时钟。
我的主机接收数据操作如下:给从机发送完一个数据包以后,开始定时,比如定时3mS,主机发送数据启动时钟,开始接收从机数据。主机在接收中断里面读取接收的数据,同时在接收中断里面发送数据,以便产生时钟,进而接收下一个字节的数据。
我的方法可行吗?

使用特权

评论回复
7
戈卫东| | 2015-1-19 10:15 | 只看该作者
差不多吧。
1 主机向从机给出指令    2 等待从机完成指令/准备数据    3 主机给出新的指令/读上次的数据

使用特权

评论回复
8
戈卫东| | 2015-1-19 10:15 | 只看该作者
2 和 3 多次重复。。。。。

使用特权

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

本版积分规则

86

主题

455

帖子

4

粉丝