系统串行通讯硬件接口设计

2022-05-31 16:54赵维卫
科学与财富 2022年1期
关键词:数据通信

赵维卫

摘  要:传统的DSP主控芯片硬件电路中,中央处理器的运算能力较低,且这类硬件电路的开发设计都难度较大,不同项目之间可重用的部分较小,硬件参数仅适用于部分电路,本设计基于TI公司的28XX系列数字处理芯片,设计了一个主控芯片硬件电路方案。该方案有优秀的数据处理能力,数据通信方式适用于长距离通信,针对数据通信编写了DSP芯片内软件,并进行了实际试验与测试。通过试验可知,本文设计的DSP的硬件电路及驱动软件,软件运行可靠,通讯误差小,可扩展性强,成本低,便于维护。

关键词:DSP;数据通信;驱动软件;

1. 绪论

本文选用的数据处理芯片为TI公司的TMS320F28335芯片,芯片内部设有3个SCI异步串口,该异步串口功能支持中央处理器以及其他采用标准格式的异步外设进行数字通信。[1]SCI异步串口的接收功能和发送功能都是双缓冲的,接收和发送功能具备单独的使能和中断标志位。芯片在全双工模式下工作,两者都可以独立或同步运行。为保证数据帧不会产生遗漏,SCI异步串口模块对接收缓冲区的数据帧进行周期性检测、奇偶校验、超时检查和帧校验。[2]

2. 基于TI公司的28XX系列芯片的数据通信

本设计方案采用RS232串行通信接口标准,在元器件的电特性上RS232采用负相关逻辑,这就需要高电平与低电平信号的电压值相差较大,具体的逻辑为:逻辑1即高电平在-3V至-15V之间,逻辑0即低电平在+3V至+15V之间,实际应用中通常通常将-10V左右设置为逻辑1高电平,将+10V左右为逻辑0低电平。由于本文选用的TMS320F28335数字处理芯片的输入端和输出端为逻辑1高电平为+3V左右,逻辑0低电平为0.3V左右,因此必须在芯片外围电路中增加转换电路,以实现TTL电平到RS232电平的切换,本设计采用MAX3232作为电平转换电路。

為提高硬件电路的抗干扰性,下位机主控芯片DSP和上位机工控机的串行通信用光耦6N137电路进行光电隔离,以提升上位机工控机和下位机DSP的数据传输准确性。按照RS232标准要求,该制式下的信号传输的最大电缆长度为30m,为实现该硬件电路的远距离的数据通信要求,本设计还具备可选的RS485通信接口,用来满足不同情况下的需求。本设计的串行通讯硬件接口设计结构图如图1所示。

3. 通信系统软件设计

为了让通信系统具备高度通信稳定性和持续工作可靠性,本设计方案中的上位机和下位机要按照约定的通信协议进行通信。上位机与下位机约定的通信协议如表1所示。通信协议命令用字节型十六进制数据作为最小单位,每个数据帧有8byte,其中BYTE0,BYTE1是起始标识类型字节标识符,即帧头,BYTE3~BYTE5为数据字节,BYTE6-BYTE7是两字节的CRC校验码,作为数据帧的校验码,确定本帧数据是否存在传输过程中的错误,本设计采用16位CRC校验算法来校验所接收的数据。上位机与下位机共同计算CRC校验,通过判断BYTE6-BYTE7传输值与上位机算出的数据的一致性来确定本帧数据接收的正确性。

4. 下位机DSP串行通讯软件设计

DSP芯片TMS320F28335数字处理芯片有3个SCI异步串口(即SCIA、SCIB和SCIC),本方案选用的SCIC为串行通讯接口。下位机DSP串行通讯程序软件设计主要包括串口初始化、数据发送TX及数据接收RX共3个子程序的设计。串行通讯数据的发送和接收可以采用查询或中断的工作方式。为提高发送数据功能的可操作性和接收数据功能的低延迟性,本设计方案的串口通信数据发送TX子程序采用查询工作方式,数据接收RX子程序采用中断工作方式。此外,由于28335数字信号处理芯片的串口支持16级的发送和接收FIFO,为减少系统串行通信时CPU的资源占用,串行通信数据发送和接收均采用FIFO工作方式。

(1)DSP串行通讯初始化程序设计

DSP串行通讯初始化程序涉及到通讯端口GPIO配置,通讯端口波特率配置、通讯数据格式设置、发送和接收参数设置和FIFO设置等。本设计方案的下位机串行通讯波特率参数为115200,数据位为8,无奇偶校验,停止位为1,对接收中断使能,并且关闭发送中断,发送FIFO参数设置为16,接收FIFO参数设置为8。串口配置部分的程序代码如下:

……

ScicRegs.SCICCR.all=0x0007;//8个数据位,1个停止位,无校验位,异步模式

ScicRegs.SCICTL1.all=0x0003;//使能串行发送和接收

ScicRegs.SCICTL2.bit.RXBKINTENA=1;//使能串行接收中断

ScicRegs.SCICTL2.bit.TXINTENA=0;//禁止串行发送中断

ScicRegs.SCIHBAUD=0x0000;//波特率设置为115200,LSPCLK=37.5MHz.

ScicRegs.SCILBAUD=0x0028;

ScicRegs.SCIFFTX.all=0x0010;//发送FIFO设置,深度为16

ScicRegs.SCIFFRX.all=0x0028;//接收FIFO设置,深度为8

ScicRegs.SCICTL1.bit.SWRESET=1;//复位SCIC串行口

(2)DSP串行通讯发送模块程序设计

DSP串行通讯发送程序主要包括单字节数据发送程序和多字节数据发送程序两种。其中单字节数据发送程序设计时,只需要把发送的字节数据送到SCITXBUF数据缓冲区,即可启动FIFO数据的发送工作。在单字节数据发送程序设计的基础上,可以设计出多字节数据发送程序。其程序设计流程图2所示。

(3)DSP串行通讯接收模块程序设计

28335数字信号处理芯片的串行通讯接收模块子程序涉及串行接收中断初始化设置及接收中断服务子程序设计。其中串行接收中断初始化设置包括设置接收中断服务子程序地址、PIE中断、CPU中断及总中断设置工作。其主要程序代码如下:

……

PieVectTable.SCIRXINTC=&scicRxFifoIsr//设置中断服务子程序地址

PieCtrlRegs.PIEIER8.bit.INTx5=1;//PIEGroup8,

INT5,SCIC_RXD,开放PIE中断

IER|=M_INT8;//开放CPU中断

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

……

串行接收中断服务模块采用FIFO中断方式,当FIFO接收到8byte的数據时,就会产生FIFO接收中断,并在中断服务模块中接收并且存储这些数据。串行接收中断服务子程序设计如图3所示。

串行通讯接收中断服务子程序相关程序代码如下:

……

for(i=0;i<8;i++)

{

ReceiveDataTmp[i]=ScicRegs.SCIRXBUF.all&0x00ff;//接收FIFO中的数据

}

CrcCheckResult=Crc16_Calc(ReceiveDataTmp,0x06);//计算CRC_16

CrcCheckResult_L=(CrcCheckResult&0x00ff);

CrcCheckResult_H=((CrcCheckResult 8)&0x00ff);

if((CrcCheckResult_L==ReceiveDataTmp[6])&&(Crc-CheckResult_H= =ReceiveDataTmp[7]))

{

Parameter(ReceiveDataTmp[3],ReceiveDataTmp[4],(ReceiveDataTmp[5]&0x000f));

DELAY_US(1000);

ReceiveFlag=0x0055;//表示CRC校验正确

}

else

{

ReceiveFlag=0x0066;//表示CRC校验错误

}

……

5. 通信试验

将上述的下位机硬件以及驱动软件实际应用到一个工程项目中,通过NI公司的LabVIEW软件平台编写上位机软件,设置数字量的方波数值参数,包括方波周期、方波宽度及方波个数等信息,然后通过串口以RS232/RS485制式,将设置完毕的方波信号发送到下位机DSP,由DSP接收指令并产生上位机要求的数字方波信号。上位机通过28335反馈的数据检查方波生成情况,并显示反馈数据帧如图5所示。在上位机的串口设置界面中,先对串口的端口号进行设置,然后设定上述的方波参数,约束通信协议中规定的帧头(0x55,0x66)和命令码(0xAA),单击发送按键,就会发送一帧带有方波指令的数据帧发送给DSP,DSP接收到上位机指令后,将方波指令发回至上位机。

以图5中设置的参数为例,上位机向下位机发送的设置参数为周期200us的方波信号,方波宽度为100us,共有8个方波。完整的数据帧通讯命令是0x55 0x66 0xAA 0xC8 0x64 0x0A 0x8F 0x36,数据帧的0x8F,0x36是数据帧前6个字节的CRC16校验码,数据传输采用小端方式,检查由DSP反馈的数据帧为0x55 0x66 0xAA 0xC8 0x64 0x0A 0x8F 0x36,收发数据一致,即DSP正确接收并执行了上位机通讯命令。用示波器检测的下位机DSP的方波输出波形图如图6所示。下位机DSP输出的8个方波宽度均为100us,周期为200us,上位机和下位机串行通讯准确无误。

6. 结论

本设计采用28335数字信号处理芯片,设计了一种与上位机通信的硬件电路及软件参数配置,经过与上位机的数据通信试验,能够完成信号的传输并执行工作,该通信方式可用于实际工程应用中,数据传输准确可靠,具备一定的工程应用作用。

7. 参考文献

[1]商秋芳,吴学杰,梅红伟,等.基于LabVIEW和TMS320F2812的液压伺服控制系统的设计[J].现代电子技术,2007,21(260).

[2]吴振奎,张自雷,魏毅立,等.基于LabVIEW平台DSP与PC的Modbus协议串口通信实现[J].内蒙古科技大学学报,2014,33(1):58-62.

猜你喜欢
数据通信
基于快牙平台实现全站仪与计算机的数据通信
监测系统接口数据通信方式
一种高效可靠的串行数据通信协议及处理算法
TCN实时协议栈过程数据通信研究
广州蓄能水电厂B厂电能表数据通信研究与应用
ZigBee手持终端数据通信模块设计