嵌入式串行通讯接口SMHK381 芯片工作原理研究
2021-07-18冯军波
冯军波
(中航工业西安航空计算技术研究所,陕西西安,710068)
0 引言
串行通讯接口(俗称COM 接口或串口),是采用串行通讯方式的扩展接口。数据一位一位地顺序传送,最少只需一根传输线即可完成,成本低但传送速度慢。其通信方式分为同步串行(Serial Peripheral interface)、异步串行(UART)。同步通信是指通信双方由统一时标控制数据传送。异步通信要求统一操作时间,采用应答方式,即主模块发出请求,一直等待从模块反馈回来的“响应”后,才开始通信。
常用的串行通讯接口包括以下几种:
RS-232:不平衡传输方式,即单端通讯,为点对点通讯而设计,适合本地设备间通讯,最大传输速率20kb/s。
RS-422:平横传输方式,点对多双向通讯,即一个主设备,多个从设备,从设备之间不能通讯。最多接10 个节点,最大传输速率10Mb/s。
RS-485:在RS-422 的基础上发展而来,可多接32 个设备,最大传输速率10Mb/s。
1 芯片内部结构
国微电子的串行通讯接口芯片SMHK381 是双通道,图中用通道A、通道B 标识。该芯片兼容EXAR 公司XR-88C681、Motorola 公 司MC2681 以 及Signetics 公 司SCC2692。其内部结构如图1 所示。
图1 SMHK381 芯片内部结构图
通道A 和通道B 分别包含全双工异步接收器和发送器,两个通道可以独立地选择工作频率和工作方式进行数据的收发。
输入/输出端口可以作为通用的输入/输出端口,也可以作为特殊功能使用。如将输入端口作为外部时钟输入,将输出端口用来输出发送器就绪信号。
数据总线缓冲器在(芯片)内部与外部的数据总线之间提供数据缓冲,由操作控制单元控制,允许数据再CPU 与DUART 之间转移。
操作控制模块从CPU 收到操作命令,产生合适的信号到DUART 中的各个部分。具体而言,它负责进行DUART内部寄存器地址译码和命令译码。所有的命令,包括设置波特率、奇偶校验、通信协议参数、启动或停止Counter/Timer、或通过读状态寄存器监视数据通信性能。
中断控制块允许用户将DUART 应用到中断驱动的环境中。DUART 提供了一个中断请求输出信号(-INTR),在发生下列任何事件的情况下可发出中断请求信号:
(1)通道的接收或发送保持寄存器就绪;
(2)通道的接收先进先出队列满;
(3)在通道A 或B 中收到Break 开始或结束;
(4)Counter/Timer 计数完成;
(5)输入引脚(IP0,IP1,IP2,IP3)发生变化。
2 数据接收
SMHK381 通道的接收器(由接收移位寄存器RSR 和接收保持寄存器RHR 组成)从RxDn 接收串行数据,经过RSR 转换成并行的数据格式,送到RHR(RHR 实际上是一个深度为三个字节的FIFO )。然后,这个字符将通过FIFO进行处理。一旦接收的字符被送到FIFO 的顶部,当CPU读RHR 时就可以读取这个字符[1]。接收器示意如图2 所示。
图2 接收器RSR 和RHR 示意图
SMHK381 芯片支持中断方式接收数据,接收中断的触发条件如下:
RXRDY(接收器准备好):RHR 里至少有一个字符等待CPU 读取。
FFULL :接收FIFO 已满。
软件可通过设置MR(通道模式寄存器)来选择RXRDY满足时发出中断还是FFULL 条件满足时发出中断。
在设置了中断掩码寄存器IMR[1](A 通道)和IMR[5](B通道)位后,将会使能上述中断,一旦满足上述条件,串口将向CPU 发送中断请求,软件可通过中断服务函数将数据从串口取走。
3 数据发送
CPU 把并行数据传给SMHK381 通道的发送器(发送移位寄存器TSR 和发送保持寄存器THR),发送器将其转换成串行数据流,并根据异步通信协议要求,加上用于通知接收器操作的起始位、停止位及可选的校验位(最高有效位和停止位之间,可通过模式寄存器配置),然后从TxDn 引脚输出。发送器示意如图3 所示。
图3 发送器THR 和TSR 示意图
发送器可以通过命令寄存器CR 来使能和禁止。当在THR 和TSR 中还有字符时发出命令禁止发送器,发送器仍将继续发送THR 和TSR 中剩余的字符,直到THR 和TSR完全空为止。一旦执行了禁止发送器命令,就不能再向THR 中写入新的数据。
SMHK381 芯片同样支持中断方式发送数据,工作机制是每发送完一个字节的数据后会触发中断条件,串口向CPU 产生一次中断,中断处理程序再发送下一个字节,直到数据发送完成。这里有两点需要注意:一个是在发送数据之前并没有发送字节完成来触发中断,那么第一个字节是如何发出的;另一个是怎样才算数据发送完成。第一个问题涉及中断在硬件层面的触发方式:若为电平触发的中断,当发送缓冲区为空时,其所处的电平状态就会在中断被使能后直接触发,导致第一个字节在中断服务函数中被发出;如果是电平跳变触发的中断,为了印发中断,只好把第一个字节先手动发出,由此引发一个中断“多米诺”效应,把后面的字节依次发送出去[2]。第二个问题的解决是用参数指定欲发送字节数决定的,待发送字节达到指定数目,在中断处理函数禁止相应中断,于是多米诺效应就会停止。
4 应用场景
试验中将SMHK381 芯片应用在PPC755 处理器上,实现了两路RS232 接口,按8位数据宽度进行访问,接口的工作时钟采用3.6864MHz,两路接口采用三线制传输,最大速率115kbps。应用场景连接框图如图4 所示。
图4 SMHK381 芯片应用场景连接框图
在线路连接上PPC755 处理器通过107 桥片连接FPGA 芯片,FPGA 内部设计PCILBE 桥逻辑,实现PPC750 对LBE 总线上的SMHK381 串口的访问与控制。SMHK381 芯片引出两路RS232,一路用于连接PC 的超级终端,用于输出打印信息,一路用于连接PC 机上的开发环境,用于软件开发人员进行程序的下载调试。使用超级终端输出打印信息时设置每秒位数为115200,数据位为8,奇偶校验为无,停止位为1,数据流控制选择无。当模块供电后,超级终端上会显示启动信息,表明第一路RS232 工作正常,待启动完毕后,可使用PC机上的软件开发环境通过第二路RS232 连接模块并下载和调试应用程序,表明第二路RS232 也工作正常。
5 结束语
现代科技离不开芯片,我国在芯片技术领域起步晚且落后于欧美国家,研究芯片结构和原理有助于改变这种现状。发展科技的必由之路就是模仿、赶追并且超越,掌握扎实的基础工艺,弄清复杂的工作原理,才能设计和制造属于我们的国产芯片。