IRC和IRF有什么区别吗?

IRC和IRF有什么区别吗?,第1张

IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为\"Channel\"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称),所有的沟通就在他们所在的Channel内以不同的Nickname进行交谈。

在使用上,IRF和传统的三层堆叠技术有一点类似。简单来说,就是支持IRF的多台交换设备可以互相连接起来形成一个“联合设备”,我们将这台“联合设备”称为一个Fabric,而将组成Fabric的每个设备称为一个Unit。多个Unit组成Fabric后,无论在管理还是在使用上,就成为了一个整体。也就是说,用户可以将这多台设备看成一台单一设备进行管理和使用。这样既可以通过增加设备来扩展端口数量和交换能力,同时也通过多台设备之间的互相备份增强了设备的可靠性。

IRC是Internet Relay chat的缩写,是网络上一种聊天的服务器。和普通的聊天方式相比,IRC聊天有着是速度快、功能多、支持多种命令等功能,因此IRC聊天一直是网友快速聊天的最佳选择。一般要使用IRC聊天方式,需要使用IRC专门的聊天软件,例如Mirc,然后登陆到IRC的服务器即可开始聊天。而IRCServ就是一个快速建立IRC服务器的软件,利用它你可以在局域网中建立本地的IRC服务器,让本地用户也可以享受IRC聊天的乐趣。

IRCServ服务器软件的安装启动

首先你需要下载其软件压缩包,你可以到这里下载该软件,其版本为1.39,可以良好的运行在Win98/ME/NT/2000各种系统下。

将软件包解压到一个目录中,运行目录中的“ircserv.exe”即可启动IRC的服务器。在窗口中会显示一些服务器的信息,包括名称、地址等等,IRCServ的好处就是根本无需任何设置,直接启动后就可以使用。

有读者私信我,要获得更详细的内情。很抱歉,因为时间实在有限,而且对于实际场景不了解,所以,简单地更新,添加了点儿内容。至于更加详细的电路图和源码需要额外时间继续补充。

最近使用STM8L152做产品,需要基于红外线通讯的Bootloader。发现STM8L05X/15X是红外通讯的绝配。

红外线大致有CIR和SIR两种。前者主要用于5~10米距离的红外遥控器,采用38kHz载波,有大量的廉价接收解码器可用。后者是IrDa标准之一,曾经是功能手机和笔记本电脑的标准配置,其堆栈和配置实体设计与蓝牙比较像,物理层采用3/16载波方式,需要单独的收发模块。

电子、DVD、机顶盒、空调等传统消费电子中常见的遥控器,我们称之为CIR, Consumer Infra Red。CIR通常使用980nm红外线,还需要采用38KHz~40KHz载波以避免可见光干扰。CIR需要编码和解码电路。

我们可以找到若干编码电路。如果由MCU来实现,则需要产生38~40KHz 载波,另外根据特定的红外遥控协议,如SONY/Philips RC5等产生二进制码流。并利用逻辑门或者三极管来实现二进制码流对于载波的调制。理论上,二进制码流和载波还有一定的时序关系,但是实践下来,这种时序关系的容错率很高。

至于CIR的红外接收部分,因为产量比较大,有低成本模块供应,内置38~40KHz载波发生器,并直接输出解调后的二进制码流。所以解码接收部分任意MCU都可以实现。

综上所述,STM8L的CIR方案中,主要考虑的是编码发射端。

MCU产生38KHz载波最常见的方法是使用定时器。包括设定38KHz的中断,并在中断中去切换GPIO引脚。或者设定一个占空比为50%的PWM中断。其道理是类似的。同时,由软件或者另外一种定时器来产生定时中断,产生二进制码流。两者在外部使用CIR二极管相连,当两个GPIO压差为VCC时,IR二极管点亮,压差为零时,IR二极管关闭。这样就形成了最简单的CIR遥控器。

对于STM8L来说,其内部的低频RC振荡器频率正好在38KHz,当然有些误差,但是对于CIR来说要求没有那么严格。由于是内部IRC,所以并不需要使用定时器来产生中断。

通常38kHz载波采用定时器产生PWM。但是Bootloader状态下必须关闭所有中断。这就限制了许多MCU在这种状态的使用。有部分设计只用了单向传输,但是这种方式试错成本太高了。

STM8L05X内部低速RC就是38kHz。而且可以从引脚引出来为载波,实测37.2kHz。配合USART可以直接构成双向红外通讯和遥控器。比STM推荐的IRTM还好用。

消费者红外线技术是单向的:遥控器负责编码和发射红外线,设备负责接收和解码。在某些环境中,比如说水电煤表的自动抄表系统中,则需要建立起双向红外线通道。

红外线和无线电通讯类似,采用半双工通讯方式。所以软件角度必须要确保时序,不要造成双方的通讯冲突。同时硬件上也可以采取一些方法,保证己方在发射时不进行接收,避免自发自收。

由于38KHz载波的存在,其波特率收到限制,我测试过9.6kbps,但是工作在2.4kbps,误码率要少许多。

在Bootloader模式下,USART RXD可以采用polling方式实现,在低速率情况下不会掉数据。

这个其实和STM8无关了,可以参考Arduino的红外编码和红外解码库。总的思路是将红外切割成一个个小的时间片,而无需太多考虑RC5/SONY/Toshiba/RCA等不同的红外遥控协议,直接使用一串二进制数据来编码。这也是大多数通用学习型红外遥控器的原理。

具体实现请参考  How to make IR decoder  以及 How to setup an IR remote and receiver on an Arduino .

STM8的片内USART外设是支持IRDA SIR收发标准的。这是一种国际标准,早期移动电话和其他数据终端中多采用此类标准,通讯速率较高,可达到115.2kbps。但相对应的,它的红外收发模组成本在20多元人民币,比消费红外模块贵许多。

STM8的原始MCU架构来自意法半导体的ST7,是意法自主开发的内核。这里额外提一下,意法的STR7和ST7不同,是基于ARM7TDMI内核的产品线。STM8在ST7上做了很多改变,与STM32保持了引脚一致性。所以,STM8是一个性价比较高的MCU。

警告

但是STM8的ITC(中断控制)部分却存在着较大的问题。通过仿真器,我觉得和STM8的虚拟存储器以及压栈的先后顺序有关联。在某些极端嵌套中断情况下会导致堆栈溢出,或者一些莫名其妙的问题。具体请留意 STM8 Error Sheet 。

所以STM8在中断设计方面不能够采用过于复杂的嵌套设计,同时需要做些黑盒压力测试。

本文中的某些做法,如利用IRC直接产生38~40KHz载波的方式,可以作为一种思路,在其他MCU中继续使用。比如STM32F030F4 IRC40KHz/LPC812 SCT等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/8796624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-21
下一篇 2023-04-21

发表评论

登录后才能评论

评论列表(0条)

保存