ps端的i2c我就以我们这里的一个sensor为例子,这是我写的一个裸板的例子,仅供参考。
int IicPsSelfTestExample(u16 DeviceId)
{
int Status;
XIicPs_Config *Config;
Config = XIicPs_LookupConfig(DeviceId);
if (NULL == Config) {
return XST_FAILURE;
}
Status = XIicPs_CfgInitialize(&Iic, Config, Config->BaseAddress);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
Status = XIicPs_SelfTest(&Iic);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
XIicPs_SetSClk(&Iic, IIC_SCLK_RATE); //设置速率的函数
I2C_write_96705(&Iic,0x67,0xe7);
delay02s();
I2C_write_96705(&Iic,0x07,0x95);
delay02s();
I2C_write_96705(&Iic,0x0e,0x12);
delay02s();
I2C_write_96705(&Iic,0x0f,0x2e);
delay02s();
I2C_write_96705(&Iic,0x0f,0x3e);
delay02s();
return XST_SUCCESS;
}
int I2C_write_byte(XIicPs *InstancePtr,u8 sensor_slave_addr,void *write_byte,int byte_num)
{
int Status;
Status = XIicPs_MasterS