PCA9535 IO扩展板使用记录

最近因项目需要,使用PCA9535扩展stm32的IO,这款芯片网上用的人不多,参考资料比较少,记一下遇到的坑。

首先,感谢这两位博主的博文,帮了我不少忙:

stm32f3的i2c使用小结 - 资料共享

IO扩展芯片TCA9535的驱动程序和中断bug问题的解决_fhqlongteng的博客-CSDN博客

下面说一下我遇到的坑:

PCA9535的配置和output设置很简单,使用I2C协议依照时序图发命令就行,没啥可说的,重点说一下读寄存器。

一、

关于read时序中的restart信号如何处理?

如果你是用模拟I2C方式来操作PCA9535,那按照时序图发命令就行,如果你用的是stm32的官方固件库使用硬件I2C访问的话,那就需要修改接口了,因为固件库的HAL_I2C_Master_Receive接口内部固定是发送停止位的,而这里发完地址和命令后不能发送停止信号,所以需要将接口中的I2C_AUTOEND_MODE改为I2C_SOFTEND_MODE,即不自动发送停止信号,随后,再改成I2C_AUTOEND_MODE即可。

二、PCA9535的Int引脚中断问题:

如果你使用了Int作为外部触发中断的话,可能会遇到上电后该引脚一直为低电平且中断不触发的问题,我使用的是8 input和8 output,input全部接到按键上,8 output全部接到led上,原因就是 P0端口接LED灯时,芯片上电此端口默认为输入,读取到了LED灯上拉产生的电平,产生了中断,而如果你不先读取一次输入引脚的数据,Int中断引脚的状态就不会改变,导致你后面按键怎么按都不会有中断触发,因此,解决的方法就是初始化的时候先读取一次,即先手动清除该中断。


2022-04-02:由于请求资源的人太多了,有时候来不及回复,我把资源上传了,大家自行下载,链接如下:

https://download.csdn.net/download/baidu_15814023/85067344icon-default.png?t=M276https://download.csdn.net/download/baidu_15814023/85067344

评论 84
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值