芯教程丨平头哥助力中科昊芯HX2000系列芯片之SCI串口通信专题(一)FIFO通信

描述

随着能源需求的日益短缺,科技的日趋智能化,高效便捷的通信模式已日趋成为人们生产生活的必然趋势,中科昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的新版HXS320F28034数字信号处理器DSP,其SCI模块两大主要功能:FIFO通信、自动波特率分别以多种字节延迟周期配置与传输波特率适配多种缓慢UART串行外设通信,可更有效助力于工程师实现高效便捷指令收发与实时反馈数据接收显示,典型应用如下图。

 

通信

 

 

PC端通过串行数据总线,与UART串口通信模块,向DSP端发送位置控制指令,采用《平头哥CDK助力中科昊芯HX2000系列芯片之双电机有感FOC控制系统专题(四)拓展:永磁电机三闭环有感伺服控制》系统输出PWM波,驱动MOSFET/IGBT逆变,控制PMSM实现三闭环有感伺服控制,系统端反馈信号通过SCI模块接收,由DSP通过UART串口通信,向PC端连续发送反馈数据,通过“LabVIEW”等调试软件实时读取显示,将更有效助力于工程师完成实时高效的在线调试。

 

自平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)支持HX2000系列芯片调试以来,本期推出专题讲解SCI串口通信,分为三期讲解,本期主要讲解SCI串口FIFO通信原理,SCI串口自动波特率与FIFO中断逻辑将在后续两期内容中逐步介绍。

 

HX2000系列SCI模块原理如下图所示,通过系统SYSCLK的低速时钟LSPCLK,配置SCI传输波特率。通过SCIFFCT延迟寄存器,可配置字传输间延迟,0到256个波特时钟周期,以匹配多种缓慢的SCI/UART通信传输延迟。通过SCIFFTX[SCIFFENA]使能,可选择SCI工作于FIFO模式,其发送、接收与读取过程如下:

 

通信

 

(1)发送过程:DSP端通过CPU,将数据装载到发送端TX_FIFO寄存器。装载的数据将存放在发送缓冲寄存器SCITXBUF中。使能发送TXENA信号,通过TXSHF移位寄存器,逐步将SCITXBUF中的数据,移位到SCITXD引脚上。通过GPIOMUX配置发送SCITXD引脚,通过CH430等串行数据传输线向PC发送数据,以实现发送功能。

 

(2)接收过程:通过GPIOMUX配置SCIRXD引脚,使得DSP端接收,PC端通过CH430等串行数据传输线发送的数据。使能接收RXENA信号,通过RXSHF移位寄存器,逐步将接收数据,移位到接收数据缓冲寄存器SCIRXBUF。通过CPU将接收的数据,装载到接收RX_FIFO寄存器中,以实现接收功能。

 

(3)读取过程:通过SCIFFRX[RXFFST]可判断,当前是否接收到相应字节深度的数据,以便于CPU读取接收到的数据。

 

由此设计SCI串口FIFO通信实例:采用SCI与串口CH340,通过串口调试助手,向CPU发送任意一组4字节数据,CPU接收所发送的数据,硬件连接如下图所示:

 

通信

 

实例所采用软硬件开发环境详见上一篇推文《芯教程|平头哥助力中科昊芯HX2000系列芯片之HRCAP高精度脉冲捕获》。

 

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

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
1.int main(void)
2.{ 
3.    /*初始化系统控制*/
4.    InitSysCtrl();
5.    /*初始化内存控制寄存器,使能内存流水线模式*/
6.    InitFlash();
7.    /*初始化串口通信的GPIO口:GPIO28: SCIRXDA,GPIO29: SCITXDA*/
8.    InitSciGpio();
9.    /*SCI寄存器FIFO功能配置*/
10.    Scia_Config(9600);
11.    /*通过SCI发送字符串*/
12.    Scia_Print("----------- sci fifo test ------------\r\n");
13.    Scia_Print("Baud Rate: 9600\r\n");
14.    Scia_Print("Data Bits: 8\r\n");
15.    Scia_Print("Parity:    none\r\n");
16.    Scia_Print("Stop Bits: 1\r\n");
17.    Scia_Print("\r\n");
18.    Scia_Print("Please send some message, (level: 4)\r\n");
19.    for (;;)
20.    {
21.      /*判断SCI是否接收到4字节数据,以便于CPU读取数据*/
22.      if(SciaRegs.SCIFFRX.bit.RXFFST == 4)
23.      {
24.       for(i = 0; i < 4; i++)
25.       {
26.          receiveData[i] = SciaRegs.SCIRXBUF.bit.RXDT;
27.       }
28.       Scia_Print((char*)receiveData);
29.       Scia_Print("\r\n");
30.      }
31. }
32. return 0;
33.}

CDK上开发SCI串口FIFO通信程序,

其编译结果为:

 

通信

 

编译通过后,可以开始调试了,其调试结果为:

 

通信
 

 

调试后,可通过串口调试助手查看发送与接收到的数据与停止位状态如下图:

 

通信

 

 

 

关于中科昊芯
 

“智由芯生 创享未来”,中科昊芯是数字信号处理器专业供应商。作为中国科学院科技成果转化企业,瞄准国际前沿芯片设计技术,依托多年积累的雄厚技术实力及对产业链的理解,以开放积极的心态,基于开源指令集架构RISC-V,打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。产品具有广阔的市场前景,可广泛应用于工业控制及电机驱动、数字电源、光伏、储能、新能源汽车、消费电子、白色家电等领域。

 

 

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

全部0条评论

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

×
20
完善资料,
赚取积分