基于LPC系列单片机的串口扩展器设计
cac55 2024-10-02 11:52 31 浏览 0 评论
摘 要: 介绍了一种基于单片机P89LPC931的SPI总线扩展异步串行接口UART的装置,讲述了P89LPC931单片机的开发使用,重点详细阐明了扩展芯片GM8142的开发使用。用户可以根据不同的应用环境灵活配置参数。本装置成本低,可靠性高,稳定性强。
0 引言
随着单片机技术的不断发展,特别是网络技术在测控领域的广泛应用,由单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而是形成了向以网络为核心的分布式多点系统发展的趋势。但是,大多数单片机都只有一个串行接口,在多数情况下限制了这些单片机的进一步应用。要实现单片机在应用系统中的有效通信,就必须对单片机进行串口扩展。
本文介绍的串口扩展器以单片机P89LPC931[1]为核心,使用SPI总线和芯片GM8142进行串口扩展,由1路SPI总线扩展出4路串口,具有可靠性高、抗干扰性能强、成本低等优点,用户可灵活配置参数,非常适合在电力、化工、冶金等工业控制现场中使用。
1 系统硬件设计
本系统功能是通过UART接口接收来自外部(例如PC,定义为上位机)的数据,通过指定的扩展串口将数据发送出去,或者从扩展串口读取数据,通过UART发送到上位机。系统的整体设计如图1所示。电源电路为整个系统供电,其中也包括RS232/RS485的电平转换电路。复位电路完成单片机的外部复位,P89LPC931既可以使用外部高电平复位,也可以内部复位。串口电路完成单片机程序的ISP下载,与外界(如PC)交互,接收外界数据并通过扩展的串口发送,或者接收扩展串口的数据发送到外界设备。人机交互包括按键输入和LCD显示输出,完成对系统参数的配置信息的输入,显示转发的数据或配置参数。
单片机P89LPC931的电路原理如图2所示。P89LPC931使用3.3 V电源供电,电阻R3与电容C7构成复位电路。当单片机向芯片GM8142发出复位的低电平信号时,LED点亮。单片机的引脚分配包括LCD部分、ICP在电路编程部分、KEY按键输入部分、SPI接口部分和UART接口部分。
芯片GM8142[2]的电路原理如图3所示。GM8142使用的晶振频率为3.686 4 MHz。RX和TX分别是扩展串口的接收和发送引脚,输出的IRQ作为单片机P89LPC931的外部中断输入。
2 系统软件设计
2.1 通信规约的设计
串口扩展器的地址初始化为0x00。串口扩展器可以采用RS485或者RS232的接口标准与上位机进行通信。通信采用异步通信方式。通信参数包括波特率、校验位和帧长度,它们既可以通过按键与LCD的人机交互接口设定,也可以通过通信方式由上位机设定。
系统与上位机的通信报文[3]定义如下:(1)设定串口工作参数的报文A1,返回确认设定串口工作参数的报文R1和系统不允许远程设定参数的报文R2;(2)设定SPI功能寄存器参数的报文A3,确认设定SPI功能寄存器的报文R3和不允许远程设定的报文R4;(3)读取SPI功能寄存器参数的报文A5和返回SPI功能寄存器参数的报文R5;(4)发送数据到指定扩展串口的报文A6和确认已发送数据到指定扩展串口的报文R6;(5)查询从扩展串口上送数据的报文A7和返回的报文R7、R8;(6)缓冲区满,主动上送数据的报文R9;(7)重新启动设备的报文A10和确认已重启的报文R10;(8)回答接收无效的报文R11。
2.2 通信模块设计
上位机通过UART接口与串口扩展器通信,在P89LPC931的内存中申请一个FIFO,用于接收上位机发送来的数据,进行相关的处理后,以相应的报文进行回答。每个扩展串口在P89LPC931的内存中也申请一个接收FIFO,用于保存从扩展串口发送来的数据。设置接收FIFO满标志位,当接收FIFO满时,主动上送报文到上位机。具体的程序流程如图4所示。
2.3 按键输入参数
串口扩展器的接口参数主要是UART接口的参数和扩展UART接口的参数,包括波特率、校验位和帧长度,这些参数既可以通过按键与LCD配合的方式(即人机交互接口)设定,也可以通过上位机以报文的方式设定。在系统中设定是否允许远程修改参数的值,当不允许远程修改时,则远程通过报文修改系统参数的方式无效,这时只允许通过人机交互接口设定系统参数。
设置5个按键,如表1所示。按键按下,则单片机P89LPC931相关的引脚输入为低电平。这5个按键的状态也作为与门74LS08的输入,74LS08的输出作为P89LPC931的外部中断1的输入。通过按键与LCD配合设定系统参数的程序流程[4]如图5所示。
2.4 GM8142的开发[3]
使用GM8142进行扩展串口通信之前,首先进行初始化。SPI的初始化需设置工作方式和时钟频率。GM8142的初始化需要设置工作模式、子串口的波特率和数据帧长等,通过向配置寄存器中写入相应的控制字实现。GM8142一次SPI传输要求在一个片选周期内传输16 bit数据,所以使用P89LPC931这样的8位单片机要保证在CS拉低后连续启动2个8 bit的数据传输,然后再将CS拉高。这样对GM8142来讲,同样实现了一次16 bit的传输。GM8142收发数据的程序流程如图6所示。
向GM8142中写入数据的函数为SendTo814X,启动一次SPI传输,发送16 bit数据,返回16 bit数据。
unsigned int SendTo814X(unsigned char chigh,unsigned char clow)
{
unsigned char cTempHigh,cTempLow;
unsigned int RevData;
SPI_CS=0;
SPDAT=chigh;
while((SPSTAT&0x80)==0);
cTempHigh=SPDAT;
SPDAT=clow;
while((SPSTAT&0x80)==0);
cTempLow=SPDAT;
SPI_CS=1;
RevData=cTempHigh;
RevData=(RevData<<8)+cTempLow;
return RevData;
}
函数SendDataToCom实现向指定的扩展串口发送单字节的数据。
unsigned int SendDataToCom(unsigned char n,unsigned char ct)
{
unsigned char ch=0x80;
unsigned int RevData;
ch=ch|(n<<3);
RevData=SendTo814X(ch,c);
函数ReadRFIFOData实现读取接收FIFO的数据。
unsigned int ReadRFIFOData(void)
RevData=SendTo814X(0x00,0x00);
3 功能测试与总结
(1)测试人机交互接口,通过按键与LCD配合,能够正常设定参数。
(2)PC作为上位机利用串口助手这个工具,通过RS232接口发送指定的报文到串口扩展器,从扩展串口发出的数据,也通过串口助手显示出来。编辑不同的报文,从PC发送到串口扩展器,均返回相应的报文数据。
(3)PC利用串口助手向扩展串口发送数据,扩展的串口接收到数据后,组成相应的报文,在上位机查询时,以相应的报文回答。
(4)控制其他参数不变,修改某一个参数,例如波特率,重新测试,均返回相应的报文。
本装置以通用的单片机P89LPC931为核心,外扩GM8142扩展串口模块和人机交互模块,可应用于工业控制领域要求多串口的场合。经过详细测试,该串口扩展器可以实现数据的成功转发,转发数据精确可靠,具有很强的实用价值。
参考文献
[1] 张毅刚.单片机原理及应用[M].北京:高等教育出版社,2003.
[2] 成都国腾微电子.GM8141/2数据手册[Z].2006.
[3] SARIKAYA B, KOUKOULIDIS V, ESWARA S, et al. Analysis and testing of application layer protocols with an application to FTAM[J]. IEEE Transactions on Communications, 1992, 40(1):7-11.
[4] 王忠义,张有光,潘怀勇.基于MCS-51人机交互接口[J].电子测量技术,2004(3):43-44.
相关推荐
- Linux :远程访问的 16 个最佳工具(一)
-
通过远程桌面协议(RDP)可以访问远程Linux桌面计算机,这是Microsoft开发的专有协议。它为用户提供了一个图形界面,可以通过网络连接连接到另一台/远程计算机。FreeRDP是...
- Guacamole安装部署_guacamole简单搭建
-
Guacamole安装部署Guacamole简介Guacamole是提供连接远程桌面的解决方案的开源项目(也可以说是一个远程桌面网关),通过浏览器就能远程操作服务器,适用于Chrome、Firefox...
- 1-FreeRTOS入门指南_freertos+lwip
-
本专栏是根据官方提供的文档进行FreeRTOS的各个功能函数的说明,以及函数的使用本专栏不涉及动手操作,只是对原理进行说明,FreeRTOS基础知识篇更新完成会对如何在开发板上进行上手实战操作。这里不...
- Windows暂停远程桌面,这些工具可替代
-
Windows暂停远程桌面,这些工具可替代近日,Windows官方宣布将于2025年5月27日起,在Windows10和Windows11应用商店中下架“Microsoft远程桌面”应用。这一消...
- 现在做 Web 全景合适吗?_前端全景
-
作者:前端藏经阁转发链接:https://www.yuque.com/xwifrr/uxqg5v/cgclx0前言Web全景在以前带宽有限的条件下常常用来作为街景和360°全景图片可查看。它可以...
- 网页直连,MSTSC远程控制Windows新姿势!
-
不用安装软件,打开浏览器就能远程办公?今天要聊的是一种颠覆传统的远程控制玩法,直接用网页连接Windows电脑,无需下载客户端,手机、平板、Mac甚至Linux都能轻松操作。这可不是吹牛,结合MSTS...
- QQ出现大面积盗号,原因已查明,请抓紧改密码
-
你没有看错,QQ又上了微博热搜,这次比较严重了,QQ出现大面积盗号,多个QQ群出现yellow信息,其次导致多位成员被踢出,并且还被封号处理,到底怎么回事?请继续往下看。在6月26日晚上10点左...
- 我在淘宝花10块钱,买到了能玩“宝可梦”的Q群机器人
-
十一月雨|文我是个没事喜欢逛淘宝的人,虽然是个不怎么好的习惯,但总是能够发现一些奇奇怪怪的东西,这次我发现的是一种Q群机器人。Q群机器人,大多是基于腾讯SmartQQ协议实现的一种能自动回复、自定...
- Metasploit最实用的攻击模块"Meterpreter"
-
Meterpreter命令详解Meterpreter是Metasploit渗透测试平台框架中功能最强大的攻击载荷模块,在最新的Metasploitv4.5.0版本中,攻击载荷模块已经达到了25...
- 手机QQ再更新,上线了一个想让人“无法回避”的新功能
-
近日,手机QQ更新了V8.2.6.700版本,苹果iOS版和安卓版手机QQ上线了一个新功能:可以实时显示对方的手机电量以及充电状态。开通电量显示也很简单,长按主页左上方的头像,在在线状态中选择我的电量...
- 「网络安全」常见攻击篇(20)——点击劫持
-
什么是点击劫持?点击劫持(Clickjacking)技术又称为界面伪装攻击(UIredressattack),是一种视觉上的欺骗手段。通常有两种方式:攻击者使用一个透明的iframe,覆盖...
- 曾利用驱动人生升级通道传播的木马下载器攻击方法再次升级
-
一、概述御见威胁情报中心1月25日再次监测到曾利用驱动人生升级通道传播的木马下载器攻击方法再升级。本次升级主要变化在于攻击模块,木马在之前的版本上,新增计划任务“DnsScan”,在其中将永恒之蓝攻击...
- QQ飞车手游:点券首个功能性宠物上架,实战稳定触发还不快入手?
-
随着版本的逐渐更新,点券宠物在道具模式发挥逐渐越来越小,曾经探讨点券宠物在道具是不是真的没有用?直到出现了波斯猫改变了,我对点券宠物在道具模式的看法,如今又一个强势点券宠物来袭,而且特性触发简单,还是...
- 工单系统设计实战(上):核心配置与效能提升
-
流程的标准化并非终点,而是研发效能持续革命的基石。当工单系统真正成为研发团队的“神经中枢”,每一次需求的精准流转、每一行代码的受控提交、每一次版本的可靠发布,都将汇聚成驱动产品持续进化的强大动力...
- 6个编辑PDF文档内容的工具(软件+网站)
-
在日常办公、学习和生活中,PDF文件因其格式稳定、跨平台兼容性强等特点,被广泛应用。但有时我们拿到PDF文件后,却发现需要修改其中的内容,总感觉有点难搞。其实PDF文档编辑修改也很简单,这里分享6个软...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)