[其他ST产品] 736BSPI接收问题

[复制链接]
 楼主| vvMvv 发表于 2008-8-11 13:49 | 显示全部楼层 |阅读模式
用SPI接收数据,数据长度是变化的,在初始化的时候设置了RXFIFOsize为16,接收一次数据足够了,现在有个疑问,当数据长度达不到16个字节的时候,怎么知道这次数据接收已经完成了?我看了DATASHEET好像没有这方面的说明啊?
CLK MOSI在空闲的时候是低电平,请教下版主
香水城 发表于 2008-8-11 14:00 | 显示全部楼层

你应该约定好主从通信的数据量,而不能使用变长的数据包

这是你系统设计上的缺陷。
 楼主| vvMvv 发表于 2008-8-11 14:34 | 显示全部楼层

崩溃了

如果改用外部中断来接收,两个外部中断之间最小时间间隔是多少啊?
香水城 发表于 2008-8-11 17:01 | 显示全部楼层

BSPI通信怎么又牵扯到外部中断?

楼主的逻辑好像有点混乱?
 楼主| vvMvv 发表于 2008-8-12 19:05 | 显示全部楼层

接收外部的数据改不了

外部的数据格式我改不了的,他发送的格式可以用SPI接收到,如果像你说的不能接收变长数据包,所以苦恼。如果不能用spi接收我想考虑下用外部中断来接收
香水城 发表于 2008-8-12 21:40 | 显示全部楼层

既然用外部中断都可以接受,还不如使用SPI一个字一个字地

不要用FIFO,每收到一个字(16位)中断一次,然后判断是否完成接收,或用TIMER进行超时控制。这样比用外部中断好多了。
grant_jx 发表于 2008-8-13 18:22 | 显示全部楼层

看一看收到的数据格式

看看一个数据帧最小的长度是多少,将FIFO深度设置为这个数值。FIFO满了就转移数据,转完了以后在继续查接受标志,用定时器设置超时检查。这样效率会高一些。


最简单的就是我在电话中与你说的,向普通的8bit MCU的UART接口一样,没有FIFO。收到一个转移一个。在自行根据数据做结构的拼装,时间虽然浪费点,但实施起来简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

0

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