如何实现4位SPI从接口的数据传送

[复制链接]
4781|7
 楼主| aolin 发表于 2009-7-14 16:29 | 显示全部楼层 |阅读模式
有个比较老的产品,它的显示和键盘接口是4-bit SPI的,现在想用一个MCU来接收它发送出来的显示数据,现在全都是8位MCU了,有什么办法能用带SPI接口的8位MCU来实现4位SPI数据的传送呢?

所使用的4位SPI接口:
ayb_ice 发表于 2009-7-14 20:24 | 显示全部楼层

软件模拟

好多硬件SPI也支持4位格式
lnskngdc 发表于 2009-7-14 20:39 | 显示全部楼层

用io加延时模拟

 楼主| aolin 发表于 2009-7-14 22:37 | 显示全部楼层

软件模拟不可取

软件模拟SPI,只能模拟主模式,地球上会单片机的人都懂,但用普通MCU软件模拟SPI从模式,即使你说你能模拟,我也不相信你的软件能可靠工作,因为一般SPI的时钟周期只有几个US而已。
从模式只能用硬件SPI,但现在的SPI都是8位的,怎么让它收4位就完成呢,这个才是正道。
古道热肠 发表于 2009-7-15 10:30 | 显示全部楼层

实在不行,用硬件做个接口

每接收4个CLK后送中断给单片机,取数.清标志,等待下一个4位的数据传送过来.
 楼主| aolin 发表于 2009-7-15 13:04 | 显示全部楼层

现在的想法

就采用现在流行的带SPI接口的MCU,让SPI工作于从模式,检测SPI时钟脉冲个数,当收到4个脉冲时,由MCU自己补足另外4个脉冲,以便SPI接口完成一次完整接收。
这个方法应该可行!
古道热肠 发表于 2009-7-16 10:21 | 显示全部楼层

楼上的想法,感觉不行,SPI模块似乎无法这样控制的.

 楼主| aolin 发表于 2009-7-17 18:01 | 显示全部楼层

通讯部分已经成功实现

通讯部分已经成功实现,并仿真通过:
仿真原理图:MCS51是主器件(就是那个用4-BIT SPI做显示的老设备),MEGA16是带SPI接口的AVR MCU。


通讯波形:
第1路是SDIS
第2路是SCK
第3路是SDAT
第4路是ACK
其中在SCK波形中,每个通讯字节的前面4个脉冲是主器件产生发送出来的,后面4个是从器件自己补上的。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

396

帖子

2

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