请选择 进入手机版 | 继续访问电脑版
查看: 2650|回复: 1

UART接口不够了?看看这篇就够了!

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3297

    主题

    6542

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31909
    最后登录
    2024-3-29
    发表于 2020-12-17 10:26:55 | 显示全部楼层 |阅读模式
    UART接口不够了?看看这篇就够了!


    【方案】基于LPC802的SPI至UART接口扩展。随着电子系统的复杂度越来越高,越来越多的硬件设备通过各种接口如UART连接到微控制器。对于某些成本敏感型应用,有可能所选型的微控制器UART接口有限,面对众多的UART设备如蓝牙模块、WiFi模块、GSM模块和GPS模块等等,显得捉襟见肘。因此,UART接口扩展显得很有必要。


    本篇小文来自客户对于UART的扩展需求,同时受恩智浦SPI/IIC扩展双UART芯片 - SC16IS752的启发,以基于LPC802的SPI扩展双UART为例,验证多UART扩展的可行性。希望本篇小文能够抛转引玉,激发大家对于多UART扩展的研究兴趣,设计出性能更加优秀的多UART接口扩展方案。


    总体概述


    本文以LPC802作为SPI从机,实现SPI扩展双UART的接口转换器。


    为验证这个设计的可行性,本文采用如下应用场景: LPC804作为主控制器,同时也是SPI主机,通过命令操作接口转换器寄存器,实现与作为UART设备的LPC51U68的双向通信。
    这个应用场景的系统构成如图1所示。
    11.png
    图1系统构成


    寄存器


    本文参考SC16IS752的设计思路,定义了一组寄存器以实现相关的功能。目前支持的寄存器如下表所示。


    (提示:左右滑动查看完整表格)
    12.png
    13.png
    IIR[5]
    IIR[4]
    IIR[3]
    IIR[2]
    IIR[1]
    IIR[0]
    中断源
    001100
    接收超时中断,
    产生于接收缓冲区数据数量小于由BCR[7:6]确定的阈值并且在100毫秒超时时间内没有接收到数据
    000100
    RHR中断,
    产生于接收缓冲区数据数量大于等于BCR[7:6]确定的阈值
    0
    0
    0
    0
    1
    0
    THR中断,  产生于发送缓冲区数据数量大于等于BCR[5:4]确定的阈值
    15.png
    传输类别

    本文的传输可分为两大类:一类是对非0地址寄存器的操作,称为寄存器操作;一类是对0地址寄存器的操作,即THR和RHR寄存器操作,称为数据操作。按照传输方向,将从SPI主机经接口转换器到UART设备的传输称为下行传输或者写操作,将从UART设备经接口转换器到SPI主机的传输称为上行传输或者读操作。因此,按照上面的分类方式,传输就可以分为寄存器写、寄存器读、数据写和数据读四种方式。

    操作时序

    上面提到,传输可以分为寄存器操作和数据操作。这样划分源于非0地址寄存器和0地址寄存器在读写操作细节上存在差异。


    对于写操作,对比图2和图4,区别是UART通道位CH1和CH0对于寄存器写操作是无意义的,因为寄存器值不会发给UART设备,而对于数据写操作,UART通道位CH1和CH0是至关重要的,因为需要指定数据发送给哪一个UART设备。
    对于读操作,对比图3和图5,区别是接口转换器返回的第一个字节,如果是寄存器读操作,这个字节就是寄存器值,但是对于数据读操作,这个字节是信息字节,该字节表明从接收到的数据来自哪一个UART设备,从第二个字节开始才是真正的数据。
    寄存器写、寄存器读、数据写和数据读的时序如图2至图5所示。无论是哪种操作,都需要首先发送一个命令字节,命令字节的格式如表5所示,之后才是一个或者多个数据字节。
    16.png

    图5 数据读


    17.png
    中断

    本文支持三类中断,分别是THR中断、RHR中断和接收超时中断,具体可参考表3。这三个中断发生时,接口转换器的中断线IRQ产生负脉冲,并且根据中断源的类别设置IIR寄存器。当SPI主机检测到中断线IRQ的边沿之后通过读取接口转换器的IIR寄存器可以判断中断源类别,从而可根据中断源类别的不同进行后续的数据传输。

    上行传输数据读流程

    正如上文所述,上行传输包括寄存器读和数据读两种情形。寄存器读只需要SPI主机按照前面所述的时序进行操作即可,而数据读相对复杂,因而单独详细阐述。


    前面讲过接口转换器共有两个接收中断,分别是RHR中断和接收超时中断。这两个中断描述清空接收缓冲区的两个条件,即当接收缓冲区数据数量等于接收触发阈值(由BCR[7:6]确定)时,RHR中断发生;当接收缓冲区数据数量少于接收触发阈值(由BCR[7:6]确定),而且超过预定的接收超时(100ms)没有从UART设备接收数据,接收超时中断发生。图6和图7分别对应这两种情况。当SPI主机检测到接口转换器中断线IRQ产生有效信号后,再读取RXLVL寄存器确定接收缓冲区的数据数量,之后再发起数据读操作从接口转换器接收缓冲区读取全部数据。


    在进行数据读操作的时候,有一个要点值得注意。SPI是一种数据交换协议,也就是说无论SPI主机是进行读操作还是写操作,都需要SPI主机发送数据为SPI从机提供移位时钟。参考数据读时序,假如SPI主机需要从接口转换器读取N个字节的数据,那么应先发送1个命令字节,然后接口转换器返回一个信息字节表明接下来的数据是来自哪个UART设备,然后才是N个字节数据。这意味着,SPI主机要发送N+2个字节才能从接口转换器读取N个字节数据,这N+2个字节包括1个命令字节和N+1个任意数值字节,其中N+1个任意数值字节为接口转换器向SPI主机返回1个信息字节和N个数据字节提供移位时钟。


    18.png
    图6上行传输数据读 – RHR中断


    19.png
    图7上行传输数据读 – 接收超时中断






    下行传输数据写流程


    正如上文所述,下行传输包含寄存器写和数据写两种情形。寄存器写只要SPI主机按照前面所述的时序进行操作即可,而数据写相对复杂,因而单独详细阐述。


    清空接口转换器发送缓冲区需要满足两个条件。第一个是发送缓冲区的数据数量等于
    发送触发阈值(由BCR[5:4]确定)时,这时THR中断发生。第二个是发送缓冲区的数据数量小于发送触发阈值(由BCR[5:4]确定),并且超过预定的发送超时(100ms)没有从SPI主机接收数据,这时接口转换器不会产生任何中断,只是会将发送缓冲区的数据发送给指定的UART设备。图8和图9分别对应这两种情况。
    20.png
    图8 下行传输数据写 – THR中断


    21.png
    图9 下行传输数据写 – 数据量小于发送触发阈值



    结果

    参考最后结语中介绍的应用笔记,搭建好应用场景对应的软硬件环境,运行之后,可以在PC串口终端上观察到传输结果,如下图所示。


    22.png
    图10 上行传输(上) 下行传输(下)


    在上行传输中,LPC51U68向LPC804发送两组数据,分别是0x00至0x3F和0x00至0x3E,分别对应清空接收数据缓冲区的两种情形 - RHR中断和接收超时中断。
    在下行传输中,LPC804向LPC51U68同样发送两组数据,分别是0x00至0x3F和0x00至0x12,分别对应清空发送数据缓冲区的两种情形 – THR中断和数据量小于发送阈值。
    通过对实际结果分析,LPC802接口转换器可以正确完成SPI至UART的扩展。

    结论

    本文以基于LPC802的SPI扩展双UART作为应用场景,验证多UART接口扩展的可行性。


    文中给出了相关的设计思路,如寄存器、操作时序和上下行传输流程。
    与本文配套的应用笔记(AN13066- LPC802-based SPI to USART Interface Conversion Bridge)和代码工程,描述了这个应用场景的细节,有兴趣的朋友可以查看。

    能力所限,目前的设计思路还处于初级阶段,本文希望作为砖,能引出更优秀的玉。

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1334 天

    [LV.10]以坛为家III

    88

    主题

    4290

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9022
    最后登录
    2024-3-29
    发表于 2020-12-17 15:06:23 | 显示全部楼层
    以前也曾经关注过串口扩展的芯片。
    后来,发现换一个多串口的MCU的物料与设计成本是最低的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 18:14 , Processed in 0.120595 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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