基于Z85C30串行通信控制器实现串行通信系统的应用设计

引言
我们在嵌入式系统的开发过程中,经常需要设计串行通信口,用以同其它设备或计算机网络交换数据。针对不同的应用场合及不同的通信格式,在硬件设计方面有许多不同的芯片可供选择,如intel 8251a、intel 8274、intel 82530等。采用zilog公司的串行通信控制器z85c30进行设计,和其它器件相比,具有功能强、速度快、外部逻辑少等优点。
1 串行通信控制器z85c30介绍
z85c30是zilog公司推出的一种串行通信控制器(scc)。它具有双通道,适用于8位、16位处理器的系统,能够完成串行到并行、并行到串行的转换。z85c30能够处理诸如异步格式、面向字节的同步规程(如ibm双同步规程)、面向比特的同步规程(如hdlc、sdlc);能够产生、检查crc循环冗余检验码。
z85c30每个通道有14个写寄存器、7个读寄存器。通过对其编程,可将通信控制器配置满足各种格式,如数据长度、停止位的位数、有无奇偶检验等。
1.1 z850c30主要性能
①同步速率。16mhz时钟下,传输速率达4mb/s;使用16mhz时钟,传输速率达1mb/s(fm编码);使用16mhz时钟,传输速率达500kb/s(nrzi编码)。
②异步性能。每个字符5、6、7或8位;1/2或2位停止位;奇或偶校验;1、16、32、64倍时钟格式;断点产生和测试;奇偶、超载和帧出错测试。
③按字节同步性能。内同步或外同步;1或2个同步字符;自动crc产生、测试。
④sdlc/hdlc性能。异常中止序列的产生和检测;“0”的自动插入和删除,报文间标志的自动插入,地址段的识别,信息段剩余管理,crc 产生、测试;具有eop识别/循不入口和出口的sdlc方式;可选nrz、nrzi、曼彻斯特或fm编/解码;具有时钟恢复能力的数字锁相环;具有自动回波和局部回送的诊断能力。
另外,z85c30能在sdlc/hdlc方式下更高效地工作,如果有10×19位sdlc/hdlc帧状态fifo,14位sdlc /hdlc帧计数器,自动sdlc/hdlc标志发送,自动复位sdlc/hdlc underrun/eom标志,自动预置sdlc/hdlc crc等。
1.2 z85c30主要引脚简介
z85c30引脚按功能分为7组:数据地址总线、总线时序和复位、控制引脚、中断控制、串行数据、通道控制引脚和时钟引脚,如图1所示。
z85c30引脚定义如图2所示。
d7~d0:数据地址总线,用于传送命令和数据。
rd、wr:读、写信号,用于对z85c30的寄存器操作,低电平有效。
ce:片选信号。
a/b:a、b通道选择,低电平表示选择b通道,高电平选择a通道。
d/c:数据/控制选择,高电平表示与85c30之间传输的是数据,低电平表示与85c30间传输的是命令信号。
int:中断请求,低电平有效,当scc需要申请中断时,该信号有效。
intack:中断响应,低电平有效。
iei:中断允许输入。输入,高电平有效。当有多个中断源时,iei和ieo一起组成中断顺序链优先级排队电路。
ieo:中断允许输出。输出,高电平有效。
pclk:时钟输入,用来同步内部信号,是标准的ttl电平信号。
txd、rxd:发送、接收数据,分a、b两个通道。
trxc、rtxc:通道时钟,它们能被编程为几种不同的操作械。rtxc能提供接收时钟或传送时钟(在输入方式),能提供传输时钟计数器输出(数据锁相器)、晶体振荡器输出、波特率发生器输出和输入时钟输出(它们都是在输出方式)。rtxc能提供接收时钟、传送时钟、波特率发生器时钟、数字锁相环时钟。
1.3 z85c30的接口时序
rd和wr是总线传输的两个控制信号。ce、d/c、a/b和intack用于控制总线传输的类型。总线上传输的地址在有效后,rd和wr才变低。ce、wr和ce、rd锁存地址的时序是一致的。
(1)读周期时序
在rd和ce有效时,a/b和d/c上的地址被锁存。在此周期内ce必须保持低,并且intack必须保持高。z85x30的总线驱动设备只有在rd和ce都有效地才使能。在读操作用d/c为高时,不会影响指针的状态。当d/c为低且在内部操作完成后,指针复位到0。
(2)写周期时序
在ce和wr有效时,a/b、d/c和数据d7~d0同时被锁存。在此周期内ce必须保持低,并且intack必须保持高。在写操作且d/c为高时,不会影响指针的状态。当d/c为低且在内部操作完毕后,指针复位到0。
(3)中断响应周期
当intack为低时,进入中断响应周期。这个a/b、d/c、ce、wr信号都被忽略。
1.4 z85x30寄存器访问
访问寄存器有两个步骤,是使用寄存器指针来完成寻址的。为寻址一个指定的寄存器,先通过写入wr0的指针位来指定寄存器。因为z85x30只有唯一的寄存器设置存在,因此,可以从两个通道中的任意一个将指针写入。当指针写入后,再次的读或写周期(当d/c为低时)将存取刚才指定的寄存器。在读和写周期结束时,指针被复位到0。
对rr8(接收数据缓冲fifo)的读及对wr8(传送数据缓冲fifo)的写操作,可以按以上方法进行,也可以在d/c为高时进行存取。当d /c为高时,可以直接对相应的数据寄存器进行存取,并且指针的状态为独立的。这样,允许在一个周期内寻址数据寄存器,并且不影响指针的状态。
2 z85c30与cpu的接口
以下介绍以8051作cpu与z85c30的接口电路,如图3所示。
z85c30的时钟选用7.0728mhz。54ls373用来锁存片选信号和z85c30的地址(用来区分命令、数据寄存器)。因为 z85c30的写时序在数据有效后,才应出现wr的下降沿;在数据无效之前,应出现wr上升沿。用1片d触发器54ls74和2个反相器件来延迟送到 z85c30的wr。由于电路设计为ttl电路,在实际的应用,还需加入ttl-rs232转换电路芯片。
3 软件设计
3.1 z85z30的i/o操作
x85c30有三种基本的i/o操作形式:查询、中断、块操作。这三种i/o操作在初始化和数据传送时涉及到寄存器操作。
查询方式依靠软件查询串行控制器,从而决定什么时候数据应从串行控制器输入或输出。在此模式中,主中断使能位和wait/dma请求位都应编程为0,从而清除任何中断或dma请求。查询是通过对rr0的状态检测进行的。在此模式中,中断功能失效。在转入数据处理前,必须对rr0读分析,以决定进入怎样的例程。
中断方式中,串行控制器的每一个通道包括三个中断源:接收器中断、发送器中断和外部/状态中断。
块操作方式可将w/req输出与wr1中的就绪/请求位配合。通过编程,w/req输出在块操作方式中能被定义为wait信号,在dma方式中可作为req信号。
3.2 软件的编写
不同的应用场合,对z85c30的初始化流程不同,这就需要对z85c30的写寄存器赋予相应的初值。
在scc初始化完成后,即可进行通信。传送缓冲区和接收缓冲区全部为空。软件把第1个传送字符写到传送缓冲器,中断才会产生。第1个传送字符到了scc的移位寄存器,传送中断产生。然后,scc继续判断中断,直到报文结束。报文结束时,应执行复位发送中断赋值命令,用来禁止发送请求中断。scc检测到最后一个字符,中断将停止,直到另外的报文写到传送缓冲器。
寄存器rr2用来说明中断矢量和状态,它从b信道读取。rr3是中断赋值寄存器,用来指示中断的类型,它从a信道读取。看网络补充版(www.dpj.com.cn)中列出了z85c30的中断流程。
外部/状态中断源包括:断点/异常中断、发送欠载/报文结束中断、cts中断、同步/搜索中断、dcd中断、零计数中断。它由wr1和wr15 设置,只有wr1中外部/状态中断允许位置和wr15中的相应控制位置位后,外部/状态条件才会产生中断。
结语
采用该设计方案,能够满足不同通信格式的要求,软件编程可根据实际情况选用查询方式、中断方式、dma传送方式,如需要可以加modem控制方式。由于z85c30功能强大,在许多嵌入式系统、网络设计方面,选用z85c30作为通信控制器进行开发,完全能够实现其预期的功能。


米家的几款智能家居,让你花小钱也能够办大事
日韩电池受阻,国产动力电池遇发展良机
ADI公司携手利默里克大学和Stripe,通过软件技术合作推进工程教育变革
步进电机如何减速?
揭开Altera公司支持OpenCL的设计工具的神秘面纱
基于Z85C30串行通信控制器实现串行通信系统的应用设计
东风汽车在海外自动驾驶获新进展 成首家获准欧洲许可的中国车企
PLC的条件跳转、子程序调用讲解
借助多元、省电等优势,ARM硬抗X86
双节锂电池充电芯片IC,5V升压PL7501C
NI与天津中德举行签约仪式,携手共建“虚拟仪器技术中心”
音视频物联网:音频和图像信号处理对物联网的影响
Open RAN正获得哪些发展势头?
NXP Plus CPU芯片助达实智能实现门禁产品全线升级
几款活动中热销的精选电视介绍
中国电信利用“1+2+N”标准范式实现建设新型智慧城市
面向汽车业,风河与Roland Berger携手推出全新咨询业务
实现5G的两名“大将”:MIMO天线与载波聚合
华为Mate X2新机将于2月25日正式全渠道开售
ABB变频器的常见故障及维修技术培训