首先打开EMIO,比如iic需要2个接口,那就打开两个emio-gpio口,在这配置zynq时记得打开spi、iic接口,在arm上初始化iic、spi等接口,记得绑定。zynq上的EMIO接口选择上会有三种类型:输出、输入、高阻状态,使用啥就make external ,绑定引脚。
下面是SPI初始化流程:
void initialspi(){
int status;
SpiPtr=XSpiPs_LookupConfig(SPI_DEV_ID);
status=XSpiPs_CfgInitialize(&SpiPs,SpiPtr,SpiPtr->BaseAddress);
if(status!=XST_SUCCESS){
return XST_FAILURE;
}
status=XSpiPs_SetOptions(&SpiPs,XSPIPS_FORCE_SSELECT_OPTION|XSPIPS_MASTER_OPTION);
if(status!=XST_SUCCESS){
return XST_FAILURE;
}
status=XSpiPs_SetClkPrescaler(&SpiPs,XSPIPS_CLK_PRESCALE_32);
if(status!=XST_SUCCESS){
return XST_FAILURE;
}
status =XSpiPs_SetSlaveSelect(&SpiPs,0);
if(status!=XST_SUCCESS){
return XST_FAILURE;
}
}
下面是初始化gpio流程
void initialgpio(){
int status;
GpioPtr = XGpioPs_LookupConfig(GPIO_DVE_ID);
status = XGpioPs_CfgInitialize(&GpioPs, GpioPtr,GpioPtr->BaseAddr);
XGpioPs_SetDirectionPin();
XGpioPs_SetOutputEnablePin();
}