SPI三线制 四线制

SPI三线制和四线制在硬件连接上有什么不同的地方?
在用io口模拟spi时的发送指令数据代码上有什么不同?
 

收藏收藏3 支持支持 反对反对

 回复

举报

  

aozima

  离线 

 

8

主题

663

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分

1566

金钱

1566

注册时间

2011-5-23

在线时间

667 小时

推荐

 发表于 2014-10-17 10:45:15 | 只看该作者

【劲爆】点击免费下载正点原子全套STM32开发板全套资料

这里所说的3线性并不是说没有SPI,而是没有 RS 或叫  DC  线,用数据位来表示数据还是命令,因此数据是9位。 
只是,哪来的9位SPI硬件? 还是简单点用4线吧。
不然就用IO模拟,不能用硬件SPI和DMA。

区别于一般说的4线,这里的4线是指   CS  RS  SCK  MOSI,OLED没有回读功能,所以没有MISO。
3线则是 CS  SCK  MOSI(1bit DC + 8bit DATA = 9bit)

常规的4线是说  CS  SCK  MOSI MISO

RT-Thread RTOS

 回复 支持 2 反对 0

举报

  

正点原子

  离线 

 

479

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分

115775

金钱

115775

注册时间

2010-12-1

在线时间

875 小时

2#

 发表于 2012-7-21 10:16:15 | 只看该作者

就是有无片选的区别吧. 
无片选的话,你整个SPI,只能给一个设备用. 
有的话,可以多个设备共用一个SPI.

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加

 回复 支持 反对

举报

  

qyanqin

  离线 

 

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分

59

金钱

59

注册时间

2012-7-21

在线时间

1 小时

3#

  楼主| 发表于 2012-7-21 10:42:39 | 只看该作者

回复【2楼】正点原子: 
就是有无片选的区别吧. 
无片选的话,你整个SPI,只能给一个设备用. 
有的话,可以多个设备共用一个SPI. 
--------------------------------- 
在连接SSD1322的时候,用的是三线制的, 
模拟SPI的io口输出高低电平检测出来是对的,但是oled点不亮 
这个是发送指令和数据函数 
void OLEDWriteCommand(unsigned char CommandValue) 

   unsigned int CommandNum; 
    CS0(); 
DelayUs(1); 
//D_C0(); 
DelayUs(1); 
for(CommandNum=0;CommandNum<8;CommandNum++) 

if(CommandValue&0x80) SDIN1(); 
else SDIN0(); 
CommandValue<<=1; 

SCLK0(); 
DelayUs(1); 
SCLK1(); 
DelayUs(1); 

    CS1(); 
//D_C1(); 

代码上有什么问题吗?
 
 回复 支持 反对

举报

  

qyanqin

  离线 

 

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分

59

金钱

59

注册时间

2012-7-21

在线时间

1 小时

4#

  楼主| 发表于 2012-7-21 11:03:28 | 只看该作者

回复【3楼】qyanqin: 
--------------------------------- 
soga,三线制的要发送9位,第一位要先发送D/C#位,然后是D7到D0这八位,问题未解决完,继续调试中。。。
 
 回复 支持 反对

举报

  

qyanqin

  离线 

 

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分

59

金钱

59

注册时间

2012-7-21

在线时间

1 小时

5#

  楼主| 发表于 2012-8-3 15:59:00 | 只看该作者

回复【4楼】qyanqin: 
--------------------------------- 
看来要用软件模拟spi,代码还是要根据不同IC的时序进行不同的编写,时序图很重要
 
 回复 支持 反对

举报

  

新生

  离线 

 

47

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分

431

金钱

431

注册时间

2014-5-12

在线时间

51 小时

6#

 发表于 2014-10-17 10:43:01 | 只看该作者

求共享 STM32F103 3线SPI  oled 软件模拟程序 
 
 回复 支持 反对

举报

  

Just Beat It

  离线 

 

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分

368

金钱

368

注册时间

2014-11-8

在线时间

36 小时

8#

 发表于 2015-3-9 13:43:07 | 只看该作者

SPI比较混乱,主要是没有标准的协议,只有moto的事实标准。所以衍生出多个版本,但没有本质的差异。现在一般有两个标准:一是说4线SPI包括SCLK、SDO、SDI、CS,用在多机模式中,而3线SPI仅包括SCLK、SDO、SDI,没有CS;另一种说法则认为4线SPI包括SCLK、SDO、SDI、CS,而3线SPI包括SCLK、DATA、CS,其中DATA负责数据的发送和接收。SPI没有标准协议,所以应用时需要仔细核对主机、从机器件规格。 

我用过3线spi是不用cs片选的,成功了,程序和4现实差不多的,把4线的cs操作程序删除就可以了。。。(其实不删也能用)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
三线 SPI(Serial Peripheral Interface)和四线 SPI 是两种不同的硬件通信协议,用于在微控器和外部设备之间进行通信。 三线 SPI 使用以下三根线进行通信: 1. SCLK(Serial Clock):时钟线,由主设备产生,用于同步数据传输。 2. MOSI(Master Out Slave In):主设备输出从设备输入线,用于主设备向从设备发送数据。 3. MISO(Master In Slave Out):主设备输入从设备输出线,用于从设备向主设备发送数据。 四线 SPI 使用以下四根线进行通信: 1. SCLK(Serial Clock):时钟线,由主设备产生,用于同步数据传输。 2. MOSI(Master Out Slave In):主设备输出从设备输入线,用于主设备向从设备发送数据。 3. MISO(Master In Slave Out):主设备输入从设备输出线,用于从设备向主设备发送数据。 4. SS(Slave Select):从设备选择线,由主设备控,用于选择与主设备通信的从设备。 四线 SPI三线 SPI 的基础上增加了 SS 线,主要是为了支持多个从设备的同时通信。通过控 SS 线的高低电平,主设备可以选择与哪个从设备进行通信。而三线 SPI 在同一时间只能与一个从设备通信。 总的来说,三线 SPI 适用于只与一个从设备进行通信的场景,而四线 SPI 适用于同时与多个从设备进行通信的场景。具体选择哪种通信方式,要根据实际应用需求和硬件设计来决定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值