DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 893|回复: 0
打印 上一主题 下一主题

[待整理] 利用SPI总线扩串口的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 14:20:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
概述

  随着电子技术的发展,各类电子设备已不再满足于某一单一功能,而是朝着多功能集成的方向发展,随着功能的增加,一个系统就不仅仅需要一个主机,还需要与多个外设配合工作以实现附加功能,因此主机与外设就必然需要进行数据传输,而这种传输一般会采用串口的方式以节约IO资源和增加传输距离。而普通单片机控制器只提供1个串口,远不能满足多外设通讯的需求,因此串口扩展成为系统常常需要解决的问题。串口扩展的方案比较多,但开发工作量、硬件成本、可靠性、指标存在一定差异。

  鉴于速度、通用性及成本的考虑,SPI总线的应用非常广泛,因此利用SPI接口进行串口扩展也不失为实现串口扩展的一个好方式。成都国腾微电子有限公司的GM814X芯片正是针对SPI扩串口的需求而设计开发的串口扩展专用芯片,可以帮助系统设计工程师轻松通过MCU的SPI接口实现扩串口的功能。
  
  扩串口方案

  SPI总线

  SPI总线是由摩托罗拉公司提出的一种同步串行外围设备接口总线,主要用于微控制器和外围设备之间的串行传输。SPI也能在多主设备系统中进行处理器的通信。外围设备可以是简单普通的TTL移位寄存器,也可以是复杂完整的从系统,如LCD显示驱动器、模数转换器系统等。

  SPI总线包含四条线:串行时钟(SCK),主输出从输入(MOSI),主输入从输出(MISO),从设备选择(SS)。

  总线系统中所有的SCK、MOSI、MISO引脚要连在一起。系统中只有一个SPI设备可作主设备,其他连在总线上的SPI设备就成了从设备。主设备将它的SCK和MOSI、MISO分别连到从设备的SCK和MOSI、MISO端。

  SPI串行接口主要用于短距离的主机与从机的数据传送,具有连接电路简单、使用方便等优点,可为实现主机和从机及从外围设备的通信提供了一种简单、易行的方案。

  GM814X

  GM814X芯片可以将一个标准SPI接口扩展成2个(GM8141)或4个(GM8142)标准的UART, 所有扩展串口能以各自独立设置的波特率,帧长和校验方式,同时和SPI接口进行数据收发。一次SPI传输的数据为16bit,其中高8bit为子串口地址以及其它附加命令和状态信息,低8bit为实际收发的数据。

  芯片的工作模式由软件方式进行设置,SPI接口为从机方式,各子串口的工作波特率、数据帧长等各种通信设置都可由软件对各子串口的设置寄存器独立设置,减少了外部MCU的IO需求。芯片的功耗低,具备多种掉电操作。

  该芯片主要功能特性包括:

  ·通过SPI总线扩展2和4个标准的串口;

  ·具备Shutdown功能,Shutdown模式下超低的静态电流<100mA,唤醒时间不超过25ms;

  ·正常工作模式下<3mA的工作电流;

  ·工作模式、串口波特率、奇偶校验,数据长度,中断方式,中断屏蔽,红外方式,主机呼叫设置都通过控制字设置,节省大量IO资源;

  ·各子串口具备独立的发送数据8级FIFO;

  ·接收独立的16级 FIFO,满足高速数据接收,减少数据溢出;

  ·3.6864M晶振下子串口最高到230400Bps;

  ·兼容IrDA数据模式;

  ·具备数据广播功能;

  ·输出波特率误差小于0.1%,输入波特率误差允许小于3.4%;

  应用设计参考

  利用GM814X扩串口,由于SPI时序比较简单,因此主机的选择比较灵活,可以选用具备SPI接口的MCU实现,也可以用普通MCU模拟SPI接口实现,设计工程师只需要根据整机对控制器系统资源的需求来选定MCU,相应的器件成本可以有所降低。

  GM814X与控制器的接口如图1所示。




  GM8142与控制器的通讯为标准的SPI接口的4线方式, 对8142的所有设置和数据通讯都通过SPI接口向设置寄存器发数据来完成,各扩展子口的工作方式为独立设置。

  GM8142的数据收发为16bit的数据长度。数据的接收以时钟的上升沿为采样标志,数据的发送以时钟信号的下降沿为移位标志,时序如图2所示。16bit的数据收发从CS为低时有效,当CS拉高后,结束数据的收发,即一个CS有效周期要完成16bit的数据收发。如果使用8位单片机,则要求在CS有效期内启动两次SPI通讯。




  对GM8142的操作包括对芯片的工作模式、各子串口的波特率设置、数据帧长和UART第9位功能设置等等,该操作通过写内部的功能设置寄存器来实现,同时可以读取功能设置寄存器内的内容。

  发送数据时,外部MCU通过SPI接口向芯片写入16bit的数据,其中高8bit为子串口地址及附加信息,低8bit为实际的发送数据。

  读取数据时,从芯片读取一个16bit的数据,其中高8bit为子串口地址及附加信息,低8bit为实际的接收数据。

  GM8142具备低功耗模式,可以在不需要时将芯片关断,以降低系统功耗。Shutdown模式具备软件和硬件控制两种方式,硬件Shutdown操作让GM814X中止当前的一切操作,立即进入Shutdown模式,并且只能通过硬件控制唤醒。软件Shutdown启动后,GM814X立即停止与外部设备的数据交换,但要将FIFO中数据发送完毕后才进入Shutdown模式。软件Shutdown模式下,DIN接收唤醒命令或子串口的RXD上有数据接收可以让GM814X自动恢复正常工作模式。


  结语

  利用GM814X进行串口扩展,主要有以下优势:

  ·占用控制器的IO资源少。通过标准的SPI接口与控制器通讯,采用SPI的4线方式通讯,模式设置均通过SPI接口用软件实现,最大程度地减少了控制器IO的占用率。

  ·设置方式简单。该芯片采用标准SPI接口通讯方式对芯片功能进行设置,最大限度地减少控制线,不需要占用太多主机的系统资源。

  ·应用灵活。该芯片各扩展子串口可独立设置各自的波特率、帧长、校验方式等,使得各子口的工作方式完全独立和灵活,满足更多应用需求。

  ·通用性强。该芯片设计时充分考虑各种用户的需求,保证了芯片的通用性,与标准串口通讯格式完全兼容,同时提供多种可选设置,适用于大多数串口通讯系统。

  ·工作波特率高。该芯片子串口最高波特率支持到920Kbps。

  ·功耗低。芯片采用低功耗设计,并具备shutdown模式。

  ·波特率精度高。输出波特率误差小于0.1%,输入波特率误差要求小于3.4%。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 14:36 , 耗时 0.103156 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表