背景说明
前期实现PL-CAN和PS-CAN功能出现许多问题,最近也没有实现CAN通信。为了在回学校之间,能够熟悉CAN通信的基本流程以及协议解析的基本思路,本文聚焦于双串口通信。目的是通过小梅哥开发板上的两个串口,实现串口1上位机发送的数据,通过串口2上上位机显示出来,即野火串口调试助手和SDK terminal之间的通信转换。
PS-串口
在前面的CAN例程中,已经实现了print函数发送数据到SDK terminal。为了能够接收SDK Terminal发送的数据,需要添加串口中断流程,从而能够接收相关的信息。在此基础上,可以处理接收的数据并发送到野火串口。小梅哥例程中有串口中断实验,按照这个逻辑,完成基本功能即可,这样就熟悉了双串口通信的基础流程。
搭建系统
串口逻辑修改
在前期系统上,修改串口逻辑,实现中断功能即可。但是在学习例程过程中,发现小梅哥例程和官方例程存在不小差异,甚至出现scugic这样的中断管理控制器。整个代码流程比较长,存在问题可能也会比较多,容易让人产生一种疑惑感。
*/
Status = SetupInterruptSystem(IntcInstPtr, UartInstPtr, UartIntrId);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* Setup the handlers for the UART that will be called from the
* interrupt context when data has been sent and received, specify
* a pointer to the UART driver instance as the callback reference
* so the handlers are able to access the instance data
*/
XUartPs_SetHandler(UartInstPtr, (XUartPs_Handler)Handler, UartInstPtr);
注意:
ZYNQ:PS-CAN总线功能应用文章已经解决了CAN帧发送问题。因此本文没有继续的必要,直接在CAN外设基础上实现相关功能即可。