自中科昊芯推出专题讲解SCI串口通信以来,第一期主要讲解SCI串口FIFO通信原理,第二期主要讲解SCI串口自动波特率,本期主要讲解FIFO中断通信逻辑。
HX2000系列SCI模块原理与中断逻辑如下,中断逻辑为:当SCITXBUF数据被传输到TXSHF寄存器时,将通过SCICTL[TXRDY]产生一个发送中断,使能SCICTL[TXINTENA]打开发送中断信号,将通过PIE响应CPU执行,使得CPU可以连续写数据到SCITXBUF,使得SCI模块可以向PC端连续发送数据。当SCI接收一个完整帧,并将RXSHF寄存器中的数据传输到SCIRXBUF寄存器中,将通过SCIRXST[RXRDY]产生一个接收中断,使能SCICTL[RXBKINTENA]打开接收中断信号,将通过PIE响应CPU执行,使得CPU读取PC端发送的数据帧。
由此设计SCI串口FIFO中断通信实例:采用SCI与串口CH340,连续发送数据,PC端接收发送的数据;通过串口调试助手,向CPU发送任意一组数据,CPU接收发送的数据。
基于以上分析,在CDK上开发SCI串口FIFO中断通信输出程序,代码包括:SCI GPIO外设引脚配置,FIFO功能配置,发送与接收中断程序,主程序调用执行。主要代码如下:
1.intmain(void)2.{3. /*初始化系统控制*/4. InitSysCtrl();5. /*初始化内存控制寄存器,使能内存流水线模式*/6. InitFlash();7. /*初始化串口通信的GPIO口:GPIO28: SCIRXDA,GPIO29: SCITXDA*/8. InitSciGpio();9. /*不使能CPU中断*/10. IER=0x0000;11. /*清除所有的CPU中断标志*/12. IFR=0x0000;13. /*初始化中断向量表*/14. InitPieVectTable();15. EALLOW;16. /*向量表地址SCITXINTA指向执行循环发送中断服务程序*/17. PieVectTable.SCITXINTA=&scia_send;18. /*向量表地址SCIRXINTA指向执行接收数据中断服务程序*/19. PieVectTable.SCIRXINTA=&scia_received;20. EDIS;21. /*SCI寄存器FIFO功能配置*/22. Scia_Config(9600);23. /*打开CPU的IER的第9组中断向量*/24. IER|=M_INT9;25. /*打开PIEIER的第9组的第一与第二个中断向量*/26. PieCtrlRegs.PIEIER9.bit.INTx1=1;27. PieCtrlRegs.PIEIER9.bit.INTx2=1;28. /*使能全局中断向量*/29. EINT;30. for(;;)31. {}32. return0;33.}
CDK上开发SCI串口FIFO中断通信程序,其编译结果为:
编译通过后,就可以开始调试了,DSP端连续发送数据的调试结果如下:
PC端发送数据的调试结果如下:
调试后,可通过串口调试助手查看发送与接收到的数据如下图:
关于中科昊芯
“智由芯生 创享未来”,中科昊芯是数字信号处理器专业供应商。作为中国科学院科技成果转化企业,瞄准国际前沿芯片设计技术,依托多年积累的雄厚技术实力及对产业链的理解,以开放积极的心态,基于开源指令集架构RISC-V,打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。产品具有广阔的市场前景,可广泛应用于工业控制及电机驱动、数字电源、光伏、储能、新能源汽车、消费电子、白色家电等领域。
-
通信
+关注
关注
18文章
5971浏览量
135857
发布评论请先 登录
相关推荐
评论