社区
单片机/工控
帖子详情
关于SPI接口
lbkbox
2006-05-19 08:19:03
大家好,有谁能具体谈谈SPI接口吗?
是不是一般的单片机IO口都可以扩展成SPI接口???
实现SPI接口通讯,主机和从机各要具备什么条件??
先谢谢了
...全文
6381
10
打赏
收藏
关于SPI接口
大家好,有谁能具体谈谈SPI接口吗? 是不是一般的单片机IO口都可以扩展成SPI接口??? 实现SPI接口通讯,主机和从机各要具备什么条件?? 先谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
seedundersnow
2006-06-14
打赏
举报
回复
就是移位寄存器
zhk1124
2006-06-10
打赏
举报
回复
char i;
//if(片选==0)//可以用中断模式
if(时钟线==0)//SPHA=0 主要适应未知主机传送方式
for(i=0,i<=8,i++)
{if(时钟线==0)//可能效率不高请你另想方法,可以用DO—while结构比较好
数据位送到输出线;......................//根据时序图,也可放在检测以后但有可
//能时间来不极所以放在这操作比较安全
if(时钟线==1)
从输入线读取数据位.......................
}
else //SPHA=1
for(i=0,i<=8,i++)
{if(时钟线==1)//可能效率不高请你另想方法,可以用DO—while结构比较好
数据位送到输出线;..............
if(时钟线==0)
从输入线读取数据位;..............
}
lbkbox
2006-06-05
打赏
举报
回复
其实我要的就是从机的程序
zhk1124
2006-06-04
打赏
举报
回复
你看一下SPI的时序图,从机是被选中后再根时钟线电平来决定如何对输入输出线的操作,那么主机方更应该知道如何操作了,以上只是主机方的4个基本子程序,再写几个从机的子程序就完全可以实现你想要的功能。如果时间允许,只要你想要的不管什么样的端口控制功能,在计算机上都能实现,如果你需要还可以实现两个51主从转换,不过作为一个开发人员难的不是功能的实现而是如何制定一个好的方案。也许你实现了以上的功能,可能这是一个最不好的方案。
zhk1124
2006-05-28
打赏
举报
回复
SPI是莫托罗拉公司串行外围设备通迅接口,是一种同步串行接口
;从SPISO线上接收8位数据并放入寄存器R0中
SPIIN: SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机,(此线不在三线标准内)
MOV R1, #08H ;置循环次数
SPIIN1:CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
MOV C, P1.3 ;从机输出SPISO送进位C
RLC A ;左移至累加器ACC
STEB P1.1 ;使P1.0输出为1
DJNZ R1, SPIIN1 ;是8次吗?
MOV R0, A ;8位送入R0
RET
;将MCS51寄存器R0中的数据传送至SPISI线上
SPIOUT: SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机,(此线不在三线标准内)
MOV A, R0 ;8位数据送入累加器ACC
SPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
RLC A ;左移累加器ACC最高位至C
MOV P1.0, C ;进位C送从机输入SPISI线上
STEB P1.1 ;使P1.1(时钟)输出为1
DJNZ R1, SPIOUT1 ;是8次吗?
RET
;将MCS51寄存器R0中的数据传送至SPISI线上,同是从SPISO线上接收8位数据
SPIIO: SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机,(此线不在三线标准内)
MOV R1, #08H ;置循环次数
MOV A, R0 ;8位数据送入累加器ACC
SPIIO1: CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
MOV C, P1.3 ;从机输出SPISO送进位C
RLC A ;左移累加器ACC最高位至C
MOV P1.0, C ;进位C送从机输入SPISI线上
STEB P1.1 ;使P1.1(时钟)输出为1
DJNZ R1, SPIIO1
RET
ObjLinking
2006-05-28
打赏
举报
回复
可以用GPIO模拟SPI的,不过我没有试过
我只见过GPIO模拟I2C总线的例子
lbkbox
2006-05-28
打赏
举报
回复
谢谢:zhk1124(连锁闪电)
对于你的这个例子,如果主机和从机只要有一个硬件SPI功能的话是可行的可以正确性接收和发送数据,但如果是两个CPU都没有硬件SPI功能的话比如两个51单片机,你的例子好象不一定会很好传输数据,因为传输时钟根本没有起到作用,数据发送一方,它只管发送出去,每一位数据对方是不是接收到了,这是不知道的。。不知我说错了没有。
我看到的网上的所谓模拟SPI都是主机和从机有一方是有硬件SPI功能,只要有一方的硬年有SPI功能,模拟SPI是简单的。
我想说的就是两个都没有SPI硬件功能的单片机用普通的三根或四个或五要也行,进行模拟SPI。
chenzhiwei021
2006-05-26
打赏
举报
回复
应该不是,SPI是一个协议吧!至于要具有什么条件吗?主机要能够控制三根线就行了,从机要有ISP接口。具体见Datasheet
integrity9
2006-05-20
打赏
举报
回复
看看datasheet,看看是否有MISO,MOSI,SCK,SS
ObjLinking
2006-05-20
打赏
举报
回复
就是一般的3wire,clk,din,dout
JAVA_API1.6文档(中文)
java.lang.reflect 提供类和
接口
,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
弄懂
SPI
接口
SPI
接口
经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。 如图1所示,其使用的4条信号线分别为: 1) SCLK:串行时钟,用来同步数据传输,由主机输出; 2) MOSI:主机输出从
SPI
(裸机和驱动)视频教程
SPI
裸机,
SPI
OLED驱动,
SPI
flash 驱动和
SPI
MASTER驱动,本课程全面讲解了
SPI
的方方面面。
SPI
接口
扫盲
SPI
定义/
SPI
时序(CPHA CPOL)
SPI
接口
扫盲 为何要写这篇文档?百度上找出来的
SPI
接口
中文描述都说的太过简略,没有一篇文档能够详尽的将
SPI
介绍清楚的。wikipedia英文版[注释1]中,
SPI
接口
介绍的很好,但是毕竟是英文版,读起来终究不如母语舒服...
单片机/工控
27,382
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章