zynq系列之-----PS端iic使用

本文主要讲述zynq的iic使用。此IIC只能作为主站,作为从站的不适合本文。

Iic的接口在ps端。(iic的接口在pl端的情况下,不适合本文)

使用软件版本:vivado2018.3

pl端设置:

转载:xilinx平台中zynq的PS端iic使用_hhh_fpga的博客-CSDN博客_zynq 模拟iic

欢迎转载!

ps端:

1、初始化操作

2、写操作

使用函数“XIicPs_MasterSendPolled(&Iic, senddata, len, addr)”

定义一个u8 senddata[6];

senddata[0] = reg;   寄存器地址

senddata[1] = val; 数据内容

&lic:设备地址,

senddata:寄存器地址和写内容

len:写入数据的长度

addr:是iic器件地址。

3、读操作

XIicPs_MasterRecvPolled(&Iic, val, len, addr);

&lic:设备地址,

Val: 读取的数据内容

len:读取数据的长度

addr:是iic器件地址。

对于读函数,需要在注意的地方在于需要根据实际设备的读时序进行封装,直接调用这个函数可能不会成功。

在这个时序中可以看出,我们是先发送一个写动作,但没有实际数据写入,然后在发送一个读指令。在sdk中写函数和读函数是分开的,所以我们在读取数据时,可能跟我们在使用模拟iic操作的时候不太一样。

unsigned char IIC_read_reg(unsigned char address, unsigned char reg)

{

unsigned char val;

int Status;

unsigned char senddata[6];

senddata[0] = reg;

Status = XIicPs_MasterSendPolled(&Iic, senddata, 1, address);

if (Status != XST_SUCCESS)

{

printf("IIC Master integerReg Wirte Failed\r\n");

return XST_FAILURE;

}

while(XIicPs_BusIsBusy(&Iic));

Status = (si0_iic_read(&val,2,address));

if (Status != XST_SUCCESS)

{

printf("IIC Master integerReg Read Failed\r\n");

return XST_FAILURE;

}

return (val);

}

嘻嘻嘻。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值