标准SCI模式下的奇偶校验

电子说

1.3w人已加入

描述

随着能源需求的日益短缺,科技的日趋智能化,高效精准的通信模式已日趋成为人们生产生活的必然趋势,昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的HXS320F28034数字信号处理器,其SCI模块有标准模式和增强FIFO模式,这两种模式均可通过奇偶校验,校验收发数据的一致性,从而更有效助力于工程师实现高效精准闭环控制,于广泛应用于电动车、电动汽车、轨道交通、全电飞机、新能源发电、机器人等工业自动化高精度控制领域。

自平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)支持HX2000系列芯片调试以来,本期推出专题讲解SCI串口通讯奇偶校验,分为两期讲解,本期主要讲解标准SCI模式下的奇偶校验,增强FIFO模式下的奇偶校验将在下期展开介绍。

HX2000系列SCI模块与中断框图如下,可通过SCICCR[PARITYENA]使能,启动奇偶校验,采用SCICCR[PARITY]选择,使用奇或偶校验,对每个字符增加一个额外的校验位,以校验收发数据的二进制码中“1”的个数,校验收发数据的一致性,原理如下:

平头哥平头哥

(1)SCICCR[PARITY]=0时,采用奇校验,即8位字符数据位中“1”的数目为偶数,校验位为“1”,若为奇数,则校验位为“0”。

(2)SCICCR[PARITY]=1时,采用偶校验,即8位字符数据位中“1”的数目为偶数,校验位为“0”,若为奇数,则校验位为“1”。

(3)标准SCI模式下,收发数据的校验位不一致时,硬件会将SCIRXST[PE]位置1表示SCI奇偶校验错误,将SCIRXST[RXERROR]位置1表示SCI接收错误标志,可通过SCICTL1[RXERRINTENA]使能,打开接收错误中断线,触发PIE向CPU发出RXINT中断信号,从而触发执行接收错误中断服务程序。

典型应用一:

下图为PMSM三环伺服控制系统,其人机界面交互通讯是通过SCI模块实现的:PC端通过SCI模块,向DSP端发送位置控制指令,三闭环有感伺服控制系统通过位置指令及位置反馈数据计算输出PWM占空比值;伺服系统的运行数据通过SCI模块发送给PC端,PC端通过labview等调试软件接收数据进行实时读取显示。为保证系统在运行过程中数据传输的准确性,本设计采用了奇偶校验。

平头哥

典型应用二:

采用SCI与串口CH340,通过串口调试助手,向CPU发送任意一字节数据,CPU接收所发送的数据,采用奇校验,校验收发数据的一致性,不一致时触发接收错误中断,点亮LED灯GPIO44,硬件连接如下图所示:

平头哥

基于以上分析,在CDK上开发标准SCI串口通信校验程序,代码包括:SCI GPIO外设引脚配置,标准SCI功能与校验配置程序,发送、接收与校验程序,主程序调用执行。主要代码如下:

 

1.int main(void)
2.{
3.  /*初始化系统控制*/
4.  InitSysCtrl();
5.  /*初始化内存控制寄存器,使能内存流水线模式*/
6.  InitFlash();
7.  /*初始化串口通信的GPIO口:GPIO28: SCIRXDA,GPIO29: SCITXDA*/
8.  InitSciGpio();
9.  /*初始化LED,用于标识奇偶与帧格式校验错误*/
10.  InitLED();
11.
12.  /*关闭PIE中断*/
13.  InitPieCtrl();
14.  /*清除中断标志位*/
15.  IER = 0x0000;
16.  IFR = 0x0000;
17.  /*初始化PIE中断向量表*/
18.  InitPieVectTable();
19.
20.  EALLOW;
21.  /*中断向量表入口地址SCIRXINTA,指向执行接收校验程序*/
22.  PieVectTable.SCIRXINTA = &sciaRxIsr;
23.  EDIS;
24.
25.  /*打开相应的PIE中断线*/
26.  IER|=M_INT9;
27.  /*PIE Group 9, SCIRXINTA*/
28.  PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
29.
30.  /*标准SCI配置:含奇偶校验*/
31.  Scia_Config(9600);
32.
33.  /*使能外部中断和CPU中断*/
34.  EINT;
35.  while(1)
36.  {
37.    /*当数据接收成功时,发送返回数据*/
38.    if (SciaRegs.SCIRXST.bit.RXRDY ==1)
39.    {
40.      /*SCI发送:返回接收数据*/
41.      Scia_Send(SciaRegs.SCIRXBUF.bit.RXDT);
42.    }
43.  }
44.  return 0;
45.}

 

CDK上开发标准SCI串口通信校验程序,编译结果为:

平头哥

编译通过后,就可开始调试了,调试后,可通过串口调试助手查看发送与接收到的数据:

平头哥

收发数据的校验位不一致时,触发RXINT中断信号,根据SciaRegs[SCIRXST]中错误置位类型,点亮LED灯GPIO44,效果如下:

平头哥

 

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分