车载A2B芯片AD2428 IIC功能介绍
- 一,功能描述
- 二,架构概念
- 2.1 I2C接口
- 2.2 I2C时钟拉伸
- 2.3 收发器I2C接口
- 2.4 收发器I2C访问延迟
一,功能描述
A2B收发器在节点之间的距离上连接多通道I2S(IC间声音)同步脉冲编码调制(PCM)数据(电缆长度在产品数据表中指定)。它还将I2S的同步、时分复用特性扩展到连接多个节点的系统,其中每个节点都可以消耗数据、提供数据或两者兼而有之。
A2B收发器通过多通道I2S/TDM接口与通用DSP、FPGA、ASIC、麦克风、ADC、DAC和编解码器直接接口,支持这些A2B功能。A2B总线链路上的数据是曼彻斯特编码的。收发器还完全支持A2B链路上的I2C通信。A2B收发器可用于从节点或主节点。默认情况下,收发器作为从收发器启动,但如果主机设置了A2B_CONTROL.MSTR位,则可以配置为主收发器。
具有四个节点的简化A2B系统图显示了一个简单的A2B系统示例。主机程序在每个节点中注册,以控制A2B总线上的数据流量。来自从属节点0和2的麦克风数据被传递到主机,从属节点1和2的扬声器数据从主机传递到DAC。
二,架构概念
以下部分提供了描述硬件块、接口和互连的信息。
2.1 I2C接口
I2C接口用于从本地连接的主机直接访问收发器寄存器空间,并通过A2B总线在主收发器和系统中任何发现的从节点之间远程交换I2C数据。该协议被称为远距离I2C,其中交换的I2C数据嵌入同步控制帧SCF(下游,从主设备到目标从设备)和同步响应帧SRF(上游,从目标从设备到主设备)中。
收发器中的I2C接口与高达5V的逻辑电平兼容,并具有以下功能:
- A2B主节点中的仅从属操作
- A2B从节点中的主、多主或从操作
- 以100k或400k bits/s的速率运行,由A2B_I2CCFG.DATARATE位配置
- 7位寻址
- 时钟伸展
注意:主节点上的A2B主机必须支持I2C时钟扩展,以便与主节点连接收发器。
配置为主收发器的收发器识别两个I2C设备地址:
- BASE_ADDR-用于通过I2C端口直接访问其寄存器空间
- BUS_ADDR-用于使用I2C远距离协议通过A2B总线远程访问从节点寄存器和从节点I2C外围设备
I2C BASE_ADDR由通电复位时ADR2/IO2和ADR1/IO1引脚上的逻辑电平设置,从而为连接到同一I2C总线的多达四个主设备提供支持。7位设备地址的LSB决定了I2C数据交换是使用BASE_ADDR(位1=0)访问收发器,还是使用BUS_ADDR(位1=1)通过启用主控的收发器访问总线节点,如I2C地址表所述。
配置为从属的收发器无法识别BUS_ADDR。在从收发器上,I2C接口允许I2C主站和从站行为。当收发器通过A2B总线从主机接收远程I2C外围设备访问请求时,它作为I2C主机。然后,该从属收发器作为I2C主机将接收到的I2C事务转发到其A2B_CHIP寄存器中编程的I2C从属地址。当本地外部控制器通过I2C端口访问收发器寄存器(BASE_ADDR)时,它作为I2C从机。
注意:虽然本地外部控制器可以对从属收发器的寄存器空间进行编程,但远程主机必须通过A2B总线写入A2B_SWCTL、A2B_RESPCYCS、A2B_SLOTFMT、A2B_DATCTL、A2B_ RAISE和A2B_GENER寄存器。从本地I2C端口写入这些寄存器中的任何一个都不会对寄存器产生影响。
收发器上的I2C接口允许在PLL锁定之前进行寄存器编程。动作写入1(W1A)位(例如,A2B_CONTROL.ENDDSC和A2B_CONTROL.NEWSTRCT)在PLL锁定之前无效,因为协议引擎仍处于重置状态。
注意:在PLL锁定之前,A2B_SWCTL、A2B_SLOTFMT、A2B_DATCTL和A2B_DISCVRY寄存器不能写入主收发器。在PLL锁定建立之前对这些寄存器的写入无效。
警告:系统软件的设计必须避免从A2B主机(通过A2B总线)和本地处理器(通过I2C端口)同时写入同一从属寄存器。当发生写入争用时,两个写入都完成了,但它们完成的顺序是不可预测的。
2.2 I2C时钟拉伸
收发器使用I2C时钟扩展功能来确保I2C访问有足够的时间进行处理。它主要用于通过A2B总线对从节点收发器和从节点I2C外围设备进行主机I2C访问。时钟拉伸由主机在以下时间响应主机I2C访问而启动:
- 在写访问期间——在每个数据字节后的确认位之前
- 在读取访问期间——在读取请求后的确认位之前
- 在多于一个字节的突发读/写访问期间——在后续数据字节的第一位之前
将SCL信号拉低向主机表明收发器需要更多时间来处理请求。一旦收发器准备好确认请求,它就会让SCL信号变高,这样主机就可以重新控制SCL,并继续进行确认(ACK)和下一个字节。
重要提示:在A2B系统设计中,主机(I2C主机)必须支持I2C时钟扩展。
当从节点中的外围设备延长I2C时钟时,SCL信号也会在主收发器和主机之间延长。如果外围设备在32个超帧的时间内没有释放SCL信号,则主设备会注册超时(A2B_INTPND2.I2CERR=1),释放SCL,并停止延长主机时钟。此超时可确保从属外围设备无法使主机的I2C接口永久停止。
2.3 收发器I2C接口
7位设备地址的LSB决定了I2C数据交换是使用BASE_ADDR(位1=0)访问收发器,还是使用BUS_ADDR(位1=1)通过主配置的收发器访问总线节点,如下表所示。
A2B收发器支持以下读写操作:
- 单字写入操作——A2B主设备(I2C从设备)在第九个时钟脉冲期间通过将SDA拉低来发出确认,从而完成访问。
- 突发模式写入序列——收发器在每个数据字节后自动递增寄存器地址指针,因此可以在不重新编程地址的情况下写入顺序数据寄存器。
- 单字读取操作-第一个读/写(R/W)位为0,表示写入操作。这是因为仍然必须写入寄存器地址才能设置内部地址。在I2C从属设备确认收到寄存器地址后,I2C主设备必须发出重复的启动命令,然后是R/W位设置为1(读取)的芯片地址字节。这导致I2C数据线SDA反转方向并开始将数据驱动回I2C主设备。然后,I2C主设备每九个脉冲向从设备发送一个确认脉冲。
- 突发模式读取序列-收发器在每次读取数据字节后自动递增寄存器地址指针,因此可以在不重新编程地址的情况下读取顺序数据寄存器。
通过I2C接口进行数据传输需要以下步骤:
- 数据传输由连接到A2B收发器的微控制器启动。
- 微控制器建立启动条件(SDA上的高到低转换,而SCL保持高),这表示地址/数据流随之而来。
- 在接下来的八个SCL周期中,A2B收发器从主机接收7位地址和R/W位(MSB优先)。
- A2B收发器识别所传输的地址,并在第九个时钟脉冲(确认位)期间通过将数据线拉低来做出响应。
R/W位决定数据的方向。当第一个字节的LSB被清除(=0)时,主机将信息写入主机。当第一个字节的LSB设置为(=1)时,主机从主机读取信息。数据传输一直持续到遇到停止条件(SDA从低转变为高,而SCL保持高)。寄存器地址指针自动递增,以支持主设备和从设备的突发模式I2C写入和突发模式I2C读取。
I2C格式图显示了以下I2C操作的格式:
- 写入BASE_ADDR/BUS_ADDR可以包含一个或多个字节的数据。设备地址后的第一个字节设置设备中的寄存器地址。后续字节被写入寻址寄存器。由于地址指针在每次写入后递增,因此可以在单个事务中写入顺序寄存器。
- 从BASE_ADDR/BUS_ADDR读取的数据可以包含一个或多个字节的数据。带有写指示的设备地址后面是设备中的寄存器地址和带有读访问指示的重复设备地址。
重复设备地址后的第一个字节包含所寻址寄存器的值。设备地址后的第一个字节设置设备中的寄存器地址。它后面是重复的设备地址,但带有读取访问指示。后续字节包含自动递增的寄存器地址的值。
I2C写入时序图显示了I2C写入时序。
I2C读取时序图显示了I2C读取时序。
2.4 收发器I2C访问延迟
当通过A2B总线远距离访问远程收发器时,会产生延迟。I2C访问的总线延迟表中提供了不同类型I2C访问的A2B总线延迟。
例如,考虑正在写入远程外围设备(连接到从节点)寄存器的情况。在I2C访问延迟图中,I2C访问延迟用绿色箭头标记。
注意:I2C访问的总线延迟表中描述的延迟适用于没有冲突的访问。如果I2C消息没有立即得到确认,或者由于GPIO中断、线路故障中断、I2C问题(NACK)等更高优先级的事件而被推迟,则尝试执行消息交换之前产生的延迟不包括在表中提供的值中。