a2b总线集成i2c,I2S,TDM,PDM以及A2B总线通讯方式,i2c总线主要用于控制通讯,I2S/TDM/PDM主要用于音频数据通讯,A2B总线主要用于各个节点之间的通。以ad2428为例,其功能引脚图如下:
我们所用的I2C通讯用到SCL,SDA,也就是I2C通讯的时钟和数据引脚。A2B总线的结构链中,最前端的host(通常电路中指的是MCU)能够通过I2C总线直接访问master(通常表示host后的第一个节点)寄存器,对于主节点后的其余从节点,I2C总线无法直接进行访问寄存器,但是可以通过host与被访问节点之间的节点进行透传模式进行本地寄存器的访问。在此过程中,需要用到两个两种方式:
Direct I2C Register Accesses:直接寄存器访问,简略的说就是通过I2C直接寄存器访问,对应寄存器BASE_ADDR (I2C ADDR: BASE)
Remote Slave I2C Register Accesses:远端从节点寄存器访问,对应寄存器BUS_ADDR (I2C ADDR: BUS)
I2C的设备地址:
I2C的BASE_ADDR由ADR2/IO2 and ADR1/IO1电平决定,两引脚共有四种方式的地址:
读写过程中通常将读写操作分开,在最后进行I2C写入的时候进行合并。
I2C寄存器的访问方式主要包括三种:master的访问,slave的访问,slaver的外围设备的访问,基本的操作过程如下:
A2B总线的I2C访问主要包括以下几个寄存器:
I2C Chip Address Register,Node Address Register
host to master:直接地址访问,采用最基本的I2C数据传输协议,地址+数据的方式
host to slave:
1.host访问slave寄存器,由于host无法直接对slave进行访问,需要通过master节点透 传进行,首先通过BASE_ADDR直接寄存器访问方式,配置master的node address register的NODE位选择从节点数。
2.设置完master的node之后,可以通过BUS_ADDR远程寻址的方式访问所设置的节点,BUS_ADDR+寄存器地址+数据的方式进行数据设置。
host to slave peripheral:
1.通过I2C的方式访问A2B结构链中slave通过I2C与slave外挂的外围设备,需要有master,slave一路透传过来,所以需要设置master以及slave。与host访问slave相似,首先通过BASE_ADDR直接地址访问设置master的node位选择从节点数。BASE_ADDR+0x01+数据
2.通过BUS_ADDR间接寻址方式设置slave的i2c chip address register ,写入需要访问的外围设备的chip address,BUS_ADDR+0x00+chip_addr
3.通过BASE_ADDR直接寄存器访问master的PERI位,使能远端的外围设备
4.通过BUS_ADDR间接寻址的方式访问外围设备的寄存器,BUS_ADDR+地址+数据
在A2B总线通过I2C访问的时候,可以通过广播的范式覆盖所有的node,包括主节点和从节点,可以通过设置A2B_NODEADR.BRCST。