问题解决了,贴出来大家共享,遇到同样的问题的朋友可以参考一下,问题的根源是时钟的问题,在main函数中 status = CyU3PDeviceInit (NULL);例子程序也是这样配置的,但是这样配置的时候如果使用 P->U的DMA时会影响P端口的DMA的buffer,外部控制器通过GPIF向FX3写数据超过一定量后会是DMA控制器出错,此时用CyU3PDmaChannelGetStatus来获取DMA状态会返回CY_U3P_DMA_ERROR。把适中的配置改成如下的样子问题可以解决:
CyU3PIoMatrixConfig_t io_cfg;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
CyU3PSysClockConfig_t clkCfg = {
CyTrue,
2, 2, 2,
CyFalse,
CY_U3P_SYS_CLK
};
/* Initialize the device */
status = CyU3PDeviceInit (&clkCfg);
if (status != CY_U3P_SUCCESS)
{
goto handle_fatal_error;
}
|