搜索
bottom↓
回复: 31

SPI接口是否可以将MOSI和MISO短接,实现自发自收?

[复制链接]

出0入0汤圆

发表于 2007-3-4 18:26:50 | 显示全部楼层 |阅读模式
USART是可以的,不知SPI是否可以.谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2007-3-4 20:07:51 | 显示全部楼层
不行的吧,这个在硬件上不是像UART那样是对秤的,是有主从之分的.
-----此内容被shandian于2007-03-04,20:09:55编辑过

出0入0汤圆

发表于 2007-3-4 20:21:46 | 显示全部楼层
根据时序图是可行的。




-----此内容被bozai于2007-03-04,20:22:25编辑过

出0入0汤圆

发表于 2007-3-4 21:01:01 | 显示全部楼层
自己收发?主从模式怎么办?

出0入0汤圆

发表于 2007-3-4 21:09:47 | 显示全部楼层
只能用主模式了,从模式只能自己产生时钟而其还要给SS一个低电平。

SPI就是一个移位寄存器,自发自收其实就是把移出的再移回来。

出0入0汤圆

发表于 2007-3-4 21:55:03 | 显示全部楼层
经过验证,结论成立。



以下是测试用的程序(用mega64 AvrStudio4.13 b528 + WinAVR-20070122 -00)



#include<avr/io.h>



#define uint8 unsigned char

#define uint16 unsigned int





#define DDR_INI() DDRB |=_BV(0)|_BV(1)|_BV(2)



//低速模式

void SPI_Low(void)

{

        SPCR =   _BV(SPE)|_BV(MSTR)|_BV(SPR1)|_BV(SPR0);

        SPSR &= ~_BV(SPI2X);

}



//高速模式

void SPI_High(void)

{

        SPCR =  _BV(SPE)|_BV(MSTR);

        SPSR |= _BV(SPI2X);

}



//端口初始化,模式初始化

void SPI_Init(void)

{

        DDR_INI();

        SPI_Low();

}



//写读一个字节

uint8 SPI_WriteByte(uint8 val)

{

        SPDR = val;

        while(!(SPSR & _BV(SPIF)));

        return SPDR;

}





int main()

{

        uint16 i;

        uint8 rx[10],tx[10];

        SPI_Init();

        for(i=0;i<10;i++)tx = i;

        for(i=0;i<10;i++)rx = SPI_WriteByte(tx);

        asm("nop");

        while(1);



}



本来想用256个数据测的,但是屏幕显示不出来,所以用10个数据测试



把MISO接地的情况



把MISO接高电平时



MOSI 接 MISO时

出0入10汤圆

发表于 2007-3-4 23:56:22 | 显示全部楼层
谢了,收藏了

出0入0汤圆

 楼主| 发表于 2007-3-5 19:49:50 | 显示全部楼层
非常感谢!

出50入0汤圆

发表于 2007-3-5 22:21:41 | 显示全部楼层
呵呵,好例程

出0入0汤圆

发表于 2007-3-8 21:35:07 | 显示全部楼层
谢谢 bozai 章其波

出0入0汤圆

发表于 2007-3-9 22:38:30 | 显示全部楼层
请问大侠:怎样看出根据时序图是可行的?多谢了

出0入0汤圆

发表于 2007-3-9 22:51:46 | 显示全部楼层
主要看发出去的数据能不能被正确采样,是否满足时许关系。

从图中可以看出数据是在上升沿被采样

如果把mosi与miso短接,那么mosi发的数据要在时钟上升沿传到miso端。

从图中知道,mosi发的数据(在sck上升沿前6)要早于miso要求的时间(在sck上升沿前4),所以数据可以稳定的送到miso端。

出0入0汤圆

发表于 2007-3-14 22:19:14 | 显示全部楼层
多谢了。

出0入296汤圆

发表于 2007-3-15 12:13:32 | 显示全部楼层
……好奇的问一下,为啥要自发自收?

出0入0汤圆

 楼主| 发表于 2007-3-15 14:37:58 | 显示全部楼层
这是我学习的方法,我从来未用过SPI口,其实只要有人告知可行,我就会搭线路去做实验了.这是最简单的办法,你无须编从机程序,线路也是最简单的.容易成功.

很感谢章其波!



另外,我两片MCU,SPI通讯我已经试验成功了,不难做,速度还非常快!庆贺自已又多掌握一项功能!

出0入0汤圆

发表于 2007-4-29 14:53:50 | 显示全部楼层
请问章其波,时序图是在技术手册中的吗?我没发现啊,或是在别的手册中的?

出0入0汤圆

发表于 2007-4-29 15:13:27 | 显示全部楼层
在每份datasheet的

Electrical Characteristics里,没放在spi那一章。里面包含所有的参数

出0入0汤圆

发表于 2007-4-29 15:58:27 | 显示全部楼层
所谓主从就是由谁来提供时钟,所以设为主机模式当然可以自发自收。

出0入0汤圆

发表于 2010-11-2 13:45:05 | 显示全部楼层
这么长时间的贴子了 不知道还有没有人实现自发自收的?

出0入0汤圆

发表于 2011-3-15 20:02:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-16 16:38:55 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-4-7 16:55:56 | 显示全部楼层
这两天也一直在考虑SPI是否能自发自收的问题,看了时序图,觉得理论上确实是可行的。搜索一下,没想到这里已经有人都试验完了,强人啊,Popo 这个问题问得很好,同时感谢bozai 章其波 探路者的精神!

出0入0汤圆

发表于 2011-4-7 17:10:12 | 显示全部楼层
重要的是要掌握对它里面这个移位寄存器的理解:

(原文件名:SPI收发移位寄存器.jpg)


(原文件名:主从机数据交互.jpg)

SPDR寄存器:
SPI 数据寄存器为读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。
这样在写SPDR寄存器的同时,触发了数据传输操作,从MOSI输出数据,同时把从机数据传入到SPDR中。如果MOSI和MISO短接,就直接实现了原数据的重新移位写入。

出0入0汤圆

发表于 2011-10-29 13:02:19 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-10-30 01:01:46 | 显示全部楼层
不错啊,下一步就是学这个呢

出0入0汤圆

发表于 2013-5-4 23:49:03 | 显示全部楼层
markmarkmark

出0入0汤圆

发表于 2013-6-27 16:07:34 | 显示全部楼层
多谢大侠,不用自己重头开始画了,修改一下可以用了

出0入0汤圆

发表于 2013-8-19 21:05:40 | 显示全部楼层
mark,时序这部分赶脚还看不懂!

出0入0汤圆

发表于 2013-8-20 14:30:45 | 显示全部楼层
对SIP完全没搞过,不懂

出0入0汤圆

发表于 2013-8-20 15:05:57 | 显示全部楼层
肯定可以的
很多MCU的SPI就有这个功能模式
在寄存器某位写1后,相当于短路MOSI以及MISO。
方便测试~~~

出0入0汤圆

发表于 2013-8-20 15:34:40 | 显示全部楼层
请参数ad7705,其工作模式中,就有关于自发自收的选项

出0入0汤圆

发表于 2013-9-4 15:55:17 | 显示全部楼层
学过了……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-9 12:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表