ZYNQ的SDK裸机使用CAT9555扩展输出IO

项目场景:

项目需求里面要求输出IO比较多,所以用上CAT9555来扩展芯片,芯片介绍如下
在这里插入图片描述
端口命令字节
在这里插入图片描述
根据资料,项目中我只用到输出IO,那么我只需要用到这几个寄存器。
在这里插入图片描述
在这里插入图片描述


问题描述

造孽啊,按照芯片手册文档说明,写入地址位,前面四个bit位是固定地址,后面A0,A1,A2作为硬件的IP地址,那么如果我地址为0,那么就是0x40,是这个数据没错的吧!!!
在这里插入图片描述
根据ZYNQ里面给的例程demo
在这里插入图片描述
然后我再删掉一些不想要的东西,初始化程序如下
在这里插入图片描述
数据发送
在这里插入图片描述

这个IIC_SLAVE_CIOUT_ADDR等于0x40理论上肯定可以的是吧,但是就是死活无法通讯,只能上示波器了。


原因分析:

我根据资料给的demo,直接写入0x40看着也是对的
在这里插入图片描述
资料上的示波器图片我也是深信不疑
在这里插入图片描述
后来发现仔细再看一下文档,才发现人家4+3=7,不是8位字节,
在这里插入图片描述


解决方案:

拿示波器抓取波形的时候,发现我这发的数据,地址位其实只有7个时钟,也就是7个bit,就是说我其实应该不是0x40,应该要>>一个地址位,#define IIC_SLAVE_CIOUT_ADDR 0x20
验证,哟,我的IO亮了!!!大功告成!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值