/*
 * GPIO_Driv.c
 *
 *  Created on: 202157
 *      Author: Administrator
 */
#include "GPIO_Driv.h"

XGpioPs psGpioInstancePtr;     //˿
XGpioPs_Config* GpioConfigPtr; //豸ID
					//sck,cs,sdi,sdo,rst
u32 CPLD_U1  [11] = {54,55,56,57,58,59,60,61,62,63,64};
u32 CPLD_U2  [11] = {65,66,67,68,69,70,71,72,73,74,75};
u32 CPLD_U3  [11] = {76,77,78,79,80,81,82,83,84,85,86};

void EMIO_config(void)
{
	    int xStatus;
		GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
		if(GpioConfigPtr == NULL)
			return XST_FAILURE;

		xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr->BaseAddr);
		if(XST_SUCCESS != xStatus)
			print(" PS GPIO INIT FAILED \n\r");

		/*-------------------------------------CPLD_U1------------------------------------*/
		//--EMIO
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 54, 1);//54---sck
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 55, 1);//55---rst_n
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 56, 1);//56---cs
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 57, 1);//57---sdi
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 58, 0);//58---sdo

		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 59, 1);//59---sdio3
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 60, 1);//60---sdio4
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 61, 1);//61---sdio5
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 62, 1);//62---sdio6
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 63, 1);//63---sdio7

		//ʹEMIO 1=output 0=input
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 54, 1);//54---sck
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 55, 1);//55---rst_n
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 56, 1);//56---cs
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 57, 1);//57---sdi
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 58, 0);//58---sdo

		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 59, 1);//---sdio3
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 60, 1);//---sdio4
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 61, 1);//---sdio5
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 62, 1);//---sdio6
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 63, 1);//---sdio7

		/*-------------------------------------CPLD_U2------------------------------------*/
		//--EMIO
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 65, 1);//61---sck
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 66, 1);//65---rst_n
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 67, 1);//62---cs
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 68, 1);//63---sdi
		XGpioPs_SetDirectionPin(&psGpioInstancePtr, 69, 0);//64---sdo

		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 70, 1);//66---sdio3
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 71, 1);//67---sdio4
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 72, 1);//67---sdio5
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 73, 1);//67---sdio6
		//XGpioPs_SetDirectionPin(&psGpioInstancePtr, 74, 1);//67---sdio7

		//ʹEMIO 1=output 0=input
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 65, 1);
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 66, 1);
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 67, 1);
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 68, 0);
		XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 69, 1);
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 70, 1);
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 71, 1);
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 72, 1);
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 73, 1);
		//XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, 74, 1);

}
