探索PCA9665/PCA9665A:Fm+并行总线到I2C总线控制器的深度解析

电子说

1.4w人已加入

描述

探索PCA9665/PCA9665A:Fm+并行总线到I2C总线控制器的深度解析

在电子设计领域,总线控制器扮演着至关重要的角色,它能够实现不同类型总线之间的通信,为系统的集成和扩展提供了强大的支持。今天,我们将深入探讨NXP公司的PCA9665/PCA9665A Fm+并行总线到I2C总线控制器,详细分析其特点、功能、应用场景以及使用过程中的注意事项。

文件下载:PCA9665PW,118.pdf

一、产品概述

PCA9665/PCA9665A作为一款高性能的总线控制器,主要用于连接标准并行总线微控制器/微处理器和串行I²C总线,实现两者之间的双向通信。它具备主模式和从模式两种工作模式,既可以作为发送器,也可以作为接收器。通过字节或缓冲模式,结合中断或轮询握手方式,实现与I²C总线的高效通信。此外,该控制器还能自动控制I²C总线的特定序列、协议、仲裁和时序,无需外部定时元件,大大简化了设计过程。

(一)突出特性

  1. 高速传输:支持1 MHz的传输速度,能够满足大多数高速数据传输的应用需求。
  2. 强大驱动:SCL/SDA引脚的驱动能力高达25 mA,确保信号的稳定传输。
  3. 大容量缓冲:配备68字节的数据缓冲区,可缓存更多的数据,提高数据处理效率。
  4. 通用呼叫功能:支持I²C总线通用呼叫,方便系统进行全局控制。
  5. 软件复位:可通过并行总线进行软件复位,方便系统进行故障恢复和初始化。
  6. 宽电压范围:工作电源电压范围为2.3 V至3.6 V,具有较好的兼容性和灵活性。
  7. 高耐压I/O:I/O引脚具有5 V耐压能力,增强了系统的抗干扰能力。
  8. 多模式兼容:支持标准模式和快速模式I²C总线,并与SMBus兼容,可广泛应用于各种系统中。
  9. 静电保护:ESD保护能力超过2000 V HBM和1000 V CDM,有效保护芯片免受静电损伤。
  10. 闩锁保护:经过JEDEC Standard JESD78测试,闩锁电流超过100 mA,确保芯片在复杂环境下的稳定性。

(二)封装类型

PCA9665提供SO20、TSSOP20、HVQFN20三种封装形式,而PCA9665A则采用TSSOP20封装,用户可以根据实际应用需求选择合适的封装。

二、功能详解

(一)内部振荡器

PCA9665和PCA9665A内部均集成了振荡器,用于提供I²C总线的时序信号。PCA9665的典型振荡器频率为28.5 MHz,PCA9665A为32 MHz。当ENSIO位设置为‘1’后,振荡器需要最多550 μs的启动时间。

(二)寄存器配置

PCA9665/PCA9665A包含11个寄存器,用于配置设备的操作以及发送和接收串行数据。其中,4个寄存器可直接访问,7个寄存器需通过设置寄存器指针间接访问。

  1. 直接寄存器
    • 状态寄存器(I2CSTA):8位只读寄存器,用于反映I²C总线的状态。最低两位始终为零,高六位包含状态代码,共有30种可能的状态代码。当I2CSTA为F8h时,表示处于空闲状态,无串行中断请求;其他值对应不同的定义状态,进入这些状态时会请求串行中断。
    • 间接指针寄存器(INDPTR):8位只写寄存器,用于指向间接地址空间中的寄存器。通过设置该寄存器的值,可以选择要访问的间接寄存器。
    • I²C总线数据寄存器(I2CDAT):8位读写寄存器,用于存储要发送或刚刚接收的串行数据。在主模式下,还包含主设备要发送的从设备地址。
    • 控制寄存器(I2CCON):8位读写寄存器,其中两位受总线控制器硬件影响。SI位在请求串行中断时置位,STO位在I²C总线上出现停止条件时清零。通过并行接口写入该寄存器会自动清除SI位,触发下一个时钟脉冲。
    • 间接数据字段访问寄存器(INDIRECT):用于访问间接地址空间中的寄存器。在读写之前,需要先将INDPTR寄存器设置为要访问的间接寄存器的地址。
  2. 间接寄存器
    • 字节计数寄存器(I2CCOUNT):8位读写寄存器,用于记录主/从缓冲接收器模式下已存储的字节数,以及主/从缓冲发送器模式下要发送的字节数。最高位为最后一个字节控制位,仅在主/从缓冲接收器模式下有效。
    • 自身地址寄存器(I2CADR):8位读写寄存器,存储微控制器的自身从设备地址。在主模式下,该寄存器内容未被使用;在从模式下,高七位为自身从设备地址,最低位决定是否识别通用呼叫地址。
    • 时钟速率寄存器(I2CSCLL和I2CSCLH):8位读写寄存器,用于定义PCA9665/PCA9665A作为总线主设备时的数据速率。实际频率由tHIGH、tLOW、tr、tf和td值决定,可通过公式 (f{SCL}=frac{1}{T{osc}(I2CSCLL + I2CSCLH)+t{r}+t{f}+t{d}}) 计算,其中 (T{osc}) 为内部振荡器周期。
    • 超时寄存器(I2CTO):8位读写寄存器,用于确定SCL允许保持低电平的最长时间。当超过该时间时,I²C总线状态机将被复位,或PCA9665/PCA9665A将对I²C总线发起强制操作。
    • 并行软件复位寄存器(I2CPRESET):8位只写寄存器,通过连续写入两个特定字节(A5h和5Ah)来实现软件复位。如果写入序列不符合要求,则复位操作将被中止。
    • I²C总线模式寄存器(I2CMODE):8位读写寄存器,包含控制位,用于在主模式下选择合适的时序参数(AC[1:0])。根据AC[1:0]的值,可以选择标准模式、快速模式、快速模式Plus或Turbo模式。

三、工作模式

(一)配置模式

PCA9665/PCA9665A支持字节模式和缓冲模式,可通过I2CCON寄存器中的MODE位进行选择。

  1. 字节模式:一次只能执行一个特定命令,执行完后更新状态寄存器。命令可以是启动、停止、字节写入、字节读取等。
  2. 缓冲模式:可以在生成中断和更新I2CSTA寄存器之前执行多个指令。微控制器可以一次性请求多达68字节的传输序列,让PCA9665/PCA9665A自动执行,无需每次执行单个命令时都访问状态寄存器和控制寄存器,提高了系统的运行效率。

(二)操作模式

PCA9665/PCA9665A共有四种操作模式,每种模式都可以在字节模式或缓冲模式下使用。

  1. 主发送器模式:主设备向从设备发送数据。在字节模式下,一次发送一个字节;在缓冲模式下,可以一次发送多个字节。
  2. 主接收器模式:主设备从从设备接收数据。同样,字节模式下一次接收一个字节,缓冲模式下可以一次接收多个字节。
  3. 从接收器模式:从设备接收主设备发送的数据。
  4. 从发送器模式:从设备向主设备发送数据。

四、特殊情况处理

(一)同时重复启动条件

当两个主设备同时生成重复启动条件时,PCA9665/PCA9665A会检测到总线上的重复启动条件,并将其作为自己的启动条件,继续发送从设备地址。

(二)仲裁丢失后的处理

在主发送器和主接收器模式下,仲裁可能会丢失。当出现38h、68h和B0h状态时,表示仲裁丢失。如果I2CCON寄存器中的STA标志被设置,当总线再次空闲时,将自动发送启动条件(状态08h),重新开始串行传输。

(三)强制访问I²C总线

在某些情况下,可能会出现总线挂起的问题,例如不受控制的源产生多余的启动信号或屏蔽停止条件。此时,如果STA标志被设置,且在合理时间内未获得总线访问权限,PCA9665/PCA9665A可以进行强制访问。当总线空闲时间达到超时时间时,会发送启动条件。

(四)I²C总线阻塞

如果SCL或SDA被不受控制的源拉低,会导致I²C总线挂起。当SCL被拉低且持续时间等于超时值时,PCA9665/PCA9665A会判定为总线错误,并进行相应处理。如果SDA被拉低,PCA9665/PCA9665A会发送九个时钟脉冲,然后发送停止条件。如果SDA被释放,则发送正常启动条件,继续串行传输;否则,判定为总线错误,加载70h到I2CSTA,生成中断信号,并释放SCL和SDA线。

(五)总线错误

当START或STOP条件出现在格式帧的非法位置时,会发生总线错误。PCA9665/PCA9665A检测到总线错误后,会释放SDA和SCL线,设置中断标志,并将状态寄存器加载为00h。此时,微控制器必须发送外部硬件或软件复位信号来重置PCA9665/PCA9665A。

五、应用场景

(一)添加I²C总线端口

对于没有集成I²C总线端口的微控制器、微处理器、自定义ASIC、DSP等设备,PCA9665/PCA9665A可以将8位并行数据转换为支持多主设备的I²C总线端口,实现与I²C总线或SMBus组件的接口。

(二)添加额外I²C总线端口

当设备已经有一个I²C总线端口,但需要更多端口来连接更多的I²C总线或SMBus组件时,PCA9665/PCA9665A可以将8位并行数据转换为额外的I²C总线端口。

(三)并行数据转串行数据

作为从发送器,PCA9665/PCA9665A可以将8位并行数据转换为两线I²C总线数据流,避免在印刷电路板上铺设大量的并行线路,简化了电路设计。

六、注意事项

(一)电源管理

在电源上电时,PCA9665/PCA9665A会进行内部上电复位,直到VDD达到VPOR。上电初始化阶段需要550 μs,在此期间,禁止通过并行端口写入数据,但可以读取。

(二)复位操作

PCA9665/PCA9665A可以通过将RESET引脚拉低至少 (t_{w(rst)}) 或使用并行软件复位序列进行复位。需要注意的是,复位操作只会重置内部寄存器和控制逻辑,不会重新初始化内部振荡器。如果设备卡死且无法响应正常的复位信号,只能通过断电再上电来恢复。

(三)I2CCOUNT寄存器

请求发送或接收的字节数应为1到68之间的值,否则将导致数据无法传输,并在写入I2CCON寄存器后生成中断。此时,I2CSTA状态寄存器将加载FCh,表示请求加载到I2CCOUNT的值无效。

七、总结

PCA9665/PCA9665A Fm+并行总线到I2C总线控制器是一款功能强大、性能优越的总线控制器,具有高速传输、大容量缓冲、多模式兼容等优点,能够满足各种复杂的应用需求。在实际设计中,我们需要根据具体的应用场景,合理配置寄存器,选择合适的工作模式,并注意处理各种特殊情况,以确保系统的稳定运行。希望本文能够为电子工程师们在使用PCA9665/PCA9665A时提供有益的参考。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分