自中科昊芯推出專題講解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文章
5977瀏覽量
135871
發布評論請先 登錄
相關推薦
評論