基于STC10F04EX的多串口数据收发系统
由于连接的不同串口设备的通信参数不完全相同,STC10F04EX必须根据设备指向动态调整串口参数以适合外部串口设备。
显示芯片7279A可以驱动8位共阴LED数码管并可采集64个键盘位置信号。该系统通过数码管显示工作状态(收发,等待,时间,通道号,参数等);通过键盘不仅可以设置“多串口数据收发控制系统”自身参数和调节自身状态,还可修改/设置所连接的外部设备的传送参数。CPU通过4个I/O引脚与7279A的4条控制线CS、DATA、CLK、KEY连接,就可驱动8位数码管并对按键进行监控。为了响应及时,采用中断方式响应按键状态,因此将KEY连接到P3.2(int0)上。
无线收发模块,嵌入高性能射频芯片,采用高效循环交织纠检错编码,发送距离可达3 000 m。模块具有TTL电平的UART口,因此可以很方便地与单片机的一个扩展的UART连接。向无线收发模块写入和读出数据,与一般的串口操作基本一样。无线收发模块频点、空中速率、本地串口速率、校验方式等参数可以在线设置或通过厂家提供的程序进行设置。
系统中无线收发模块本地串口通信参数设为(9 600,8,N,1),数据被调制在434 MHz进行发送和接收,空中速率9 600 b/s,发射功率100 mW。
该无线收发模块,收到数据后通常延时几十到几百毫秒才发送,所带缓存256 B。若本地串口速率大于等于空中速率,则存在数据流量问题,可能会出现数据溢出导致丢失现象。因此若传送数据超过256 B,要进行数据分割,插入等待周期,采用分次发送的方式以避免数据丢失。本系统所连接的光谱仪数据量较大,因此单片机接收光谱仪数据后再经无线转发,要采用分段接收/转发方式,每次的数据量要小于256 B,多次重复,直至全部数据。
3 软件设计
3.1 有关寄存器的说明
程序运行时首先进行初始化设置,其中涉及到几个比较特别的寄存器,其定义不同于其他51系列的单片机。
寄存器AUXR,地址8EH。关系到独立波特率发生器,STC10F04EX既可以采用定时器1作为波特率发生器,又可以采用独立波特率发生器以释放定时器1,见表3说明。
寄存器AUXR1,地址A2H。其中的D7位关系到单片机内在的串口切换。例如:
3.2 数据存储及转发
STC10F04EX单片机,内部数据存储器为256 B,片上扩展的外部数据存储器为256 B,共计512 B,数据空间紧凑。程序运行中的一些变量需要占用一部分数据空间,因此只能开辟约220个字节作为缓存空间,暂存接收到的来自串口设备的数据。如果一次接收的数据量小于缓存空间,则不会导致数据溢出;如果外部设备需传送的数据量较大,则必须与外部设备建立联络控制发送,以使每次传来的数据小于系统缓存,避免数据丢失现象的发生。
评论