公司新闻

【细说STM32】之五——说说串口

所属分类:凤凰彩票平台新闻 发布时间:2019-05-04 16:04 作者:凤凰彩票_凤凰彩票 文章来源:凤凰彩票平台

  首先,串口对每一个做硬件和嵌入式软件的人来说,就是一个必备的工具,调试一个带MCU或者CPU的系统。我们在调试的过程中,一般第一件事情:GPIO点灯。

  在完成GPIO点灯之后,一般我们就希望能够实现串口打印的功能,便于我们将一些寄存器信息打印出来便于调试。

  由于我个人的特殊经历,对于我来说,串口这东西,仔细写起来,可以写一本书!应该不少于200页。

  2008年我刚进华为工作时,碰到了一个特殊的历史时期,嵌入式领域群雄逐鹿。

  1、Intel、AMD高调宣称X86系统进入嵌入式领域,要占领PowerPC的市场。(后来Intel也做到了,通用服务器占领了几乎所有电信核心侧的设备——刀片服务器、机架服务器)。

  2、当时,MIPS、ARM、PowerPC还难分伯仲,不过多核ARM不成熟,无法在电信领域广泛应用。MIPS由于其优异的性价比和搞性能展露头角,慢慢由于其较差的质量表现而偃旗息鼓。

  我当时的工作是参与X86处理器作为嵌入式的电路开发。当时碰到一个问题:传统X86作为PC机已经演进得非常成熟的架构。PC的硬件结构与嵌入式SoC有很大的区别。

  CPU下面是北桥负责高速外设、北桥的南面(下面)是南桥负责低速接口外设、然后还有一个SIO负责更低速的外设。

  超级输入输出芯片(SIO)一般位于主板左下方或者左上方。主要使用的芯片有Winbond、ITE,它为主板上的标准I/O接口提供控制处理功能。这里所说的“超级”是指它集成了PS/2键盘、PS/2鼠标、串口COM、并口LPT接口等处理功能,而这些接口都是计算机中的慢速I/O设备。它们全部位于主板后部右边。它的主要功能包括负责处理从键盘、鼠标、串行接口等设备传输来的串行数据,将它们转换成为并行数据,同时也负责并行接口、软驱接口数据的传输与处理。SuperIO是通过一个类似于精简的PCI总线,叫做LPC总线与南桥进行连接的。

  如此复杂的硬件结构,也是因为Intel强大的发货量,形成自有体系和标准。

  所以在传统的PC机的主板上带一个RS232串口的,都是通过SuperIO实现的。X86上也是通过固定的地址去访问

  然而,在我当时面对的嵌入式X86的系统的设计需求,不需要并口、PS2、硬件监控、FDC、

  H/W Monitor:一个应用程序读出所有计算机访问硬件传感器的测量值。

  FDC:提供了一个主处理器和软驱之间的接口(软驱——看懂的人暴露年龄了)

  Parallel port:并行端口(SPP),双向并行端口(BPP),增强型并行端口(EPP),扩展功能并行端口(ECP)四种模式。通过DIR可以控制它的输入/输出模式

  KBC:电路提供的功能包括一个键盘和一个PS2鼠标。控制器从键盘和鼠标接受串行数据,检查校验后将这些数据输出到其输出缓冲区。从它的读写命令中可以了解一些基本设置。

  UART:终于说到我们的本文的主角UART、即串口了。在老式的台式电脑或者笔记本上,其实都会有RS232电平标准的UART:

  SuperIO的UART输出的一般也是TTL电平,还需要接到RS232芯片,再接到DB9接口

  X86系统的地址的寻址空间还有点复杂:除了内存空间(Memory)、还有IO空间。详细内容点击:

  这些对于传统的由PowerPC实现的电信嵌入式系统来说,除了串口,其他功能不是需要的;同时,原来的一些NorFlash、寄存器、传感器 数据,需要通过MPI接口进行访问,而这些都是SuperIO芯片不能实现的。

  所以在当时的设计需求里面,使用一个SuperIO并不合适。所以选择一个CPLD实现LPC接口控制UART接口。

  由于我是从事过这么一个工作,所以对UART的工作过程特别熟悉。而且,我们一开始按照自己的想法,自定义了很多寄存器,并且地址是按照自己想法去设计的,结果:商业软件windows、商用linux无法直接识别到串口。后来又改回基址:03F8H,02F8H,03E8H,02E8H这几个地址。

      凤凰彩票,凤凰彩票官网