Xilinx sdk 学习笔记 之 IIC(二)

在学习IIC之前,需要弄清楚xilinx提供的iic函数

需要掌握三个函数

XIicPs_Config *XIicPs_LookupConfig(u16 DeviceId)

Looks up the device configuration based on the unique device ID. A table contains the configuration info for each device in the system.

根据唯一的设备ID查找设备配置。表中包含系统中每个设备的配置信息。

XIicPs_Config *XIicPs_LookupConfig(u16 DeviceId);

Initializes a specific XIicPs instance such that the driver is ready to use.
*
* The state of the device after initialization is:
*   - Device is disabled
*   - Slave mode

初始化特定的XIicPs实例,以便驱动程序可以使用。

*设备初始化后的状态为:

* -设备被禁用

* -从模式

 

s32 XIicPs_SetSClk(XIicPs *InstancePtr, u32 FsclHz)

Xilinx sdk 学习笔记 之 IIC(二)_第1张图片

对于XIicPs_Config *XIicPs_LookupConfig(u16 DeviceId)函数,定义在上面

这个函数返回的是一个XIicPs_Config的一个指针

XIicPs_Config定义如下

 

typedef struct {
    u16 DeviceId;     /**< Unique ID  of device */
    u32 BaseAddress;  /**< Base address of the device */
    u32 InputClockHz; /**< Input clock frequency */
} XIicPs_Config;

 

 

 

 

XIicPs_LookupConfig中 首先定义了一个结构体指针指向为空XIicPs_Config *CfgPtr = NULL;一个index变量和一个for循环

Xilinx sdk 学习笔记 之 IIC(二)_第2张图片

其中XPAR_XIICPS_NUM_INSTANCES的值为1

Xilinx sdk 学习笔记 之 IIC(二)_第3张图片

for里面又用到了一个结构体数组XIicPs_ConfigTable[1],其实就是结构体里面嵌套结构体

定义如下:

Xilinx sdk 学习笔记 之 IIC(二)_第4张图片

这个是一个结构体数组的定义,并且在定义结构体数组的同时初始化了结构体,相当于如下:

XIicPs_Config XIicPs_ConfigTable[1] =
{
    {
        0,
        0xE0004000,
        111111115
    }
};

然后判断XIicPs_ConfigTable[0].DeviceId 是否等于传入参数的DeviceId,等于的话

CfgPtr指针指向结构体数组的首地址,CfgPtr = &XIicPs_ConfigTable[Index];

然后返回结构体数组首地址。

 

 

 

Xilinx sdk 学习笔记 之 IIC(二)_第5张图片

 

这个结构体里面还内嵌了结构体

Xilinx sdk 学习笔记 之 IIC(二)_第6张图片

这里设置的deviceID就是前面设置的XPAR_PS7_I2C_0_DEVICE_ID。

 

你可能感兴趣的:(Xilinx,sdk)