RPI Serial Communication (二)

这篇文章是给谁看的?

给那些有一定的51,PIC 等单片机基础的,并且对树莓派的通用输入输出(GPIO)数据传输有兴趣的菜鸟们(noobs!),比如我。

我能从这篇文章中学到嘛?

这篇文章是新手入门向的文章。有许多有用的链接,以及资源。你看从这里学到(复习?)很多硬件接口基础知识。

这文章是你写的?

不,不。我是在搜索GPIO parallel时无意找到的博文,觉着非常好翻译到自己的博客,方便以后查询,顺便给大家个”福利”。原文(http://jeffskinnerbox.wordpress.com/2012/12/05/raspberry-pi-serial-communication/)

哦,这样啊那你为什么要搜GPIO parallel传输呢?

我想用三个RPI同时(要同步的哦)传输视频流到PC上(做图像拼接)。正在考虑传输方式是USB 或者是GPIO(parallel)。 USB当然是最简单的方法了,但是问题是画质不稳定,而且延迟严重。所以考虑用编码以后用GPIO进行并行传输。如果有大大能给点指导,我给你捡肥皂哦~~

a

<-------------------我是华丽的分割线-------------------------->

如果你对PIC或者51等单片机有相当的了解,可以直接跳过前面的回顾部分,进入下一部分。

回顾:

首先要了解的是:数据是怎样在RPI,或者说大家平常用的电脑,里传输的。在大多数情况中,总线或者说数据总线是用来传输数据的。

总线设计师的工作就是设计电路,用来把数据从这个电路传输到另一个电路。这些数据可以以串行或者并行的方式进行传输。

·        串行总线(serialbus):最不消耗材料的传输方式。每次传输1个比特。这就是所谓的串行数据传输。数据在传输前是并行的。为了能够进行串行传输,这些数据必须先转换成串行(serial),在接收端再转换成并行(parallel).通常都有专门的电路来完成这些工作,就是所谓的SerDes(serializer/deserializer)。因为集成电路的针数(pin)大大增加了电路的成本,所以为了减少针数,在速度不是非常重要的情况下,很多厂商选择使用串行数据线来传输数据。主要的几种串行总线有:

o  Serial Peripheral Interface (SPI)

o  Inter-Integrated Circuit(I2C)


o  UNI/O


o  1-wire

·        并行总线(parallel bus)从某种角度来说               是更加有效的数据传输手段。               但是并行传输有着传输速度和距离的限制。如果超过了一定的速度或者距离,数据传输将变得不可靠。常见的并行总线标准有以下几种:

o  Parallel Bus Inteface(PBI)

o  Peripheral Component Interface(PCI)

o  Samll Computer Systems Interface(SCSI)

o  VMEbus

o  Rambus 常用于内存数据传输

RPI GPIO:

                从名字上可以看出来,GPIO(通用输入输出接口)的功能可以通过程序来设定,已达到一定的目的。GPIO的针脚是直接和处理器核心连接的,RPI开发者已经为我们制定了几套GPIO的功能方案。(在RPIBCM2835GPIOs 页面里可以看到一张巨大的表格,注意横行黄色的字,比如ALT0,ALT1,ALT2等等,都是可选的方案alternatives0,1,2..)。有些方案是非常有用的。在RPI启动的时候确定了使用哪一套方案。默认的是ALT0,以下是ALT0的示意图:


                                                          

更改方案的方法如下:

volatile unsigned *gpio;

 

#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |=(((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))

 

下面的代码把GPIOg转换成ALT0

INP_GPIO(g);
SET_GPIO_ALT(g,0);
#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))

这个链接告诉你怎样改变GPIOpin 的功能stepby step!

实际上,所有的26个针脚都可以独立提供不同的可选功能。关键还是看你怎么进行设置了!

除此之外,脉冲编码调制PCM(Pulse-code modulation), pin18 & 21 可以用数字信号来表示模拟信号。这个通常用来控制灯光的强度或者是电机的转速。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值