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

PCA9535PCA9535C作为NXP半导体公司推出的16位I2C/GPIO扩展器,拥有多个提升设计的特性。它们通过提供增强的驱动能力,使得用户可以更有效地驱动负载。5V容错功能增加了系统的稳健性,使得设备能够在5V电压下正常工作而不受损。低功耗设计则有助于实现能源管理,降低系统整体能耗。独立IO配置允许用户根据需求灵活设定每个引脚的功能,而小包装设计简化了电路板布局。这些特性特别适合于ACPI电源开关、传感器、按钮、LED和风扇等控制应用。 参考资源链接:[PCA9535/PCA9535C: 16-Bit I2C/GPIO扩展器增强方案](https://wenku.csdn.net/doc/7t1z6zac5i?spm=1055.2569.3001.10343) 在具体实现ACPI电源开关和传感器控制时,开发者需要通过I2C总线向PCA9535/C写入相应的寄存器配置。首先,确定需要控制的GPIO引脚,并将它们配置为输出模式。例如,若要开启或关闭一个LED灯(作为电源开关指示),可以通过写入输出寄存器来设置引脚的高低电平状态。对于传感器控制,同样需要配置为输入模式,并通过读取输入寄存器的状态来获取传感器的数据。此外,可以根据需要设置信号极性,通过Polarity Inversion寄存器来反转输入输出信号的极性。 为了完成这些任务,推荐参考《PCA9535/PCA9535C: 16-Bit I2C/GPIO扩展器增强方案》一书。该资料详细介绍了PCA9535/C的功能和寄存器操作,为开发者提供了清晰的指导,有助于准确实现I2C接口GPIO扩展器的特性应用,无论是对初学者还是有经验的工程师,都是一份宝贵的资源。 参考资源链接:[PCA9535/PCA9535C: 16-Bit I2C/GPIO扩展器增强方案](https://wenku.csdn.net/doc/7t1z6zac5i?spm=1055.2569.3001.10343)
评论 84
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值