基于LPC系列单片机的串口扩展器设计
cac55 2024-10-02 11:52 27 浏览 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.
相关推荐
- 用闲置电脑当软路由安装OpenWRT(小白教程)
-
话说软路由系统OpenWRT用起来真是香,里面的好多功能都是普通路由无法实现的,由于众所周知的原因,在这里就不细说,等安装完自己体验吧。今天就介绍用一台闲置的电脑(自带两个网口)充当软路由,安装Ope...
- 一招把废旧路由器改成交换机(用旧路由器做交换机)
-
家里面的路由器用个几年,就会WIFI变卡,新路由器买回来,旧路由器就没什么用了?我在这里教大家把老路由器变成交换机。近两年新出的路由器,基本都是2个LAN口,接网络设备还需要买交换机,淘汰下来的路由器...
- 如何将PC电脑变成web服务器:将内网主机映射到外网实现远程访问
-
我是艾西,今天跟大家分享内容还是比较多人问的一个问题:如何将PC电脑变成web服务器。内网主机作为web服务器,内容包括本地内网映射、多层内网映射解决方案、绕过电信80端口封锁、DDNS功能的实现(非...
- 电脑怎么改Wi-Fi密码(电脑怎么改wifi密码视频教程)
-
一.电脑打开“任意浏览器ie/google浏览器等”——>地址栏里输入管理ip地址然后按“回车键”打开该地址,如下图所示。二.输入正确的管理员密码——>点击“登录”即可(下图是PC版本的路...
- 旧路由器不要扔,可当电脑无线网卡使用,你还不知道吧!
-
家里有旧路由器,卖二手又不值钱,扔了又可惜。想不到路由器还有以下这些功能:扩大Wifi覆盖范围;充当电脑无线网卡;把这个技巧学起来,提升网络冲浪的幸福感!导航栏路由器恢复出厂设置(通用教程)有线桥接无...
- 硬件大师AIDA64 5.60.3716更新下载:“认准”Win10
-
著名硬件测试工具AIDA64更新至5.60.3716Beta版,本次更新修复了Win10Build版本号检测错误问题,识别更准确。另外还添加了对ITEIT8738F传感器、ASRock主板、NVI...
- 互联网病毒木马与盗版软件流量产业链(一)
-
A.相关地下产业链整体深度分析可能很多用户都有这样的经历,就是不管打开什么网站,甚至根本就没有打开浏览器,都会跳出来一堆的弹窗广告。那么,这个用户要么是中的病毒木马,或者是使用了盗版软件。不管是...
- 穿越火线tenparty.dat文件损坏怎么办?
-
很多玩家在玩火线的时候经常会因弹出错误代码,而被退出游戏。下面就教大家一些常见错误代码的解决方案。方法/步骤1SX提示码提示说明:您的电脑出现1,xxx,0(xxx代表任意数字)提示码,存在游...
- 办公小技巧015:如何关闭Windows Defender安全中心
-
WindowsDefenderWindowsDefender是Widows中自带杀毒软件,可以检测及清除潜藏在操作系统里的间谍软件及广告软件。为电脑提供最高强度的安全防护,也被誉为Windows的...
- Win7/8.1/10团灭:微软发现严重漏洞
-
据外媒报道称,微软已经停止为Windows7发布新的安全更新了,理由是IE存在严重漏洞。存在严重漏洞的IE按照微软的说法,这个远程代码执行漏洞存在于IE浏览器处理脚本引擎对象的内存中。该漏洞可能以一...
- WinCC flexible 2008 SP4 的安装步骤及系统要求
-
1、软件安装过程安装注意事项(必须严格遵守):软件仅支持以下操作系统(必须是微软原版的操作系统,Ghost版系统不支持,如番茄花园、雨林木风、电脑城装机版等):WinCCflexible2008...
- Windows三方杀毒防护软件可能问题以及使用建议
-
在处理ECSWindows相关案例中,我们遇到很多奇怪的操作系统问题,例如软件安装失败,无法激活操作系统,无法访问本地磁盘,网络访问受到影响,系统蓝屏,系统Hang等,排查发现这与客户安装的各类杀...
- 杀毒软件被指泄露个人隐私(杀毒软件查出来一定是毒吗)
-
最近的多篇报道显示,你使用的杀毒软件在监视着你,而不仅仅是你计算机上的文件。2014年的一项研究使用虚拟机监视了杀毒软件产品向企业发送了什么信息。他们发现,所有测试的杀毒软件都给电脑分配了一个唯一的识...
- 开源杀毒软件ClamAV在推出约20年后终于到达1.0版本
-
ClamAV是一个开源的反病毒引擎,用于检测木马、病毒、恶意软件和其他恶意威胁。与商业Windows反恶意软件程序相比,它的检测水平相当低,但开发工作已经持续了几十年。该工具可用于所有平台,尽管它主要...
- 【Excel函数使用】时分秒时间怎么转换成秒?(二)
-
本节主要分享的函数是IFERROR和NUMBERVALUE上回我们用MID和FIND函数已经将数值提取出来,但是一些错误的返回值显示“#VALUE!”,此时我们需要检验错误返回值,并将错误值返回指定值...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (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)