0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过SerDes远端I²C接口访问16位I²C外设寄存器地址

星星科技指导员 来源:ADI 作者:ADI 2023-02-09 14:34 次阅读

本应用笔记介绍如何通过吉比特多媒体串行链路(GMSL) SerDes的远端I²C接口访问16位寄存器地址。

引言

Maxim吉比特多媒体串行链路(GMSL)串行器/解串器(SerDes)系列包括MAX9249、MAX9259、MAX9260、MAX9263和MAX9264,具有UART/I²C转换器,用于远端控制I²C接口外设。这些外设包括相机传感器、I/O端口扩展器、音频模/数转换器(ADC)和数/模转换器(DAC),以及LED照明。

在GMSL数据资料和相关技术文件中,通过UART端口直接连接至电子控制单元(ECU)的一端被称为“本地端”,另一端被称为“远端”。

I²C外设接口是控制通道基本模式中的默认设置。GMSL系列SerDes只转换器件地址不同于GMSL串行器或解串器地址的UART数据包。UART/I²C转换器接收(比如)汽车ECU发出的UART读或写数据包,并将其转换为I²C主控制器协议。

I²C接口支持外设使用的多种不同格式,有或没有变址寄存器以及8为或16位变址寄存器地址均可,通过远端寄存器位I2CMETHOD (寄存器0x05位7)设置实现。

对于没有变址寄存器的外设:

设置I2CMETHOD = 1,按照标准GMSL UART协议发送读/写数据包。UART/I²C转换器将去掉读/写数据包中的8位寄存器地址,如图1所示。

pYYBAGPkk9qAEztQAABB5Kd0zNg748.gif?imgver=1


图1. 命令模式(I2CMETHOD = 1)下UART和I²C之间的格式转换

对于采用8位变址寄存器的外设:

设置I2CMETHOD = 0,按照标准GMSL UART协议发送读/写数据包,如图2所示。

poYBAGPkk9yAR0ZmAABHK6b0zXg258.gif?imgver=1


图2. 带有寄存器地址(I2CMETHOD = 0)时,UART和I²C之间的格式转换

对于采用16位变址寄存器的外设:

3.1. 写操作。设置I2CMETHOD = 1,按照标准GMSL UART协议产生写数据包。将16为变址寄存器地址置于数据的前2个字节,使字节的数量等于发送数据的原始数量加2。UART/I²C转换器将去掉标准写数据包中的8位寄存器地址,如图1所示。

例如,如果外设需要16位变址寄存器和8位数据,类似于:

poYBAGPkk96AfWxgAAAQGcbro1Y462.gif?imgver=1

假设device_address = 0x22,index_register_address = 0x3344,及data = 0x55。主控ECU需要将数据包0x79 + 0x22 + 0x00 + 0x03 + 0x33 + 0x44 + 0x55写入UART端口,然后读取来自UART端口的ACK字节,检查写操作是否成功。

0x79为同步字节,
0x22为带有写操作指示的器件地址,
0x00为虚拟字节,可为任意值;UART/I²C转换器在转换时将其删除,
0x03为字节数量,
0x33为16位变址寄存器地址的高位字节,
0x44为16为变址寄存器地址的低位字节,
0x55为8位数据。

UART/I²C转换器之后,数据包将变为:

pYYBAGPkk9-AP8lzAAAOLs3SJzg798.gif?imgver=1

3.2. 读操作。完成写操作需要2个UART数据包,1个写数据包后跟1个读数据包。写数据包设置变址寄存器地址,读数据包读取数据。

假设外设的器件地址和变址寄存器地址相同,需要读取1个数据字节,需按以下步骤进行:

设置I2CMETHOD = 1,
ECU发送写数据包0x79 + 0x22 + 0x00 + 0x02 + 0x33 + 0x44至UART端口,
ECU从UART端口读取ACK字节,
ECU发送读数据包0x79 + 0x23 + 0x00 + 0x01至UART端口,
ECU从UART端口读取ACK字节,
然后ECU从UART端口读取数据。

对于写数据包:
0x79为同步字节,
0x22为带有写操作指示的器件地址,
0x00为虚拟字节,可为任意值;UART/I²C转换器在转换时将其删除,
0x02为字节数量,
0x33为16位变址寄存器地址的高位字节,
0x44为16位变址寄存器地址的低位字节。

对于读数据包:
0x79为同步字节,
0x23为带有读操作指示的器件地址,
0x00为虚拟字节,可为任意值;UART/I²C转换器在转换时将其删除,
0x01为字节数量。

审核编辑:郭婷

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

    关注

    237

    文章

    22450

    浏览量

    645892
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • dac
    dac
    +关注

    关注

    43

    文章

    1973

    浏览量

    189525
收藏 人收藏

    评论

    相关推荐

    关于I2C的从机地址寄存器地址

    最近在写一个I2C。阅读协议,理解master先寻址slave,然后发送或接受数据但如果主机寻址发送的是从机的设备地址,那么如何确定读写寄存器地址呢?还是我理解错了?主机寻址的时候就
    发表于 01-26 14:22

    I2C寄存器地址问题

    啦如下为datasheet寄存器部分, void At24c02Write(unsigned char addr,unsigned char dat)I2C_Start();I2C
    发表于 04-14 08:30

    pyboardCN V2 使用I2C接口驱动I2C外设DS3231

    的模式为Master即主机模式,接口类型为Master即主机的I2Cpyb.I2C(2).scan()#调用scan()成员函数,扫描I2C2总线接口上面的硬件
    发表于 08-17 16:53

    【FPGA学习】模拟 I²C 接口程序的基本框架

    7 保存从节点地址,最后一保存读写命令;当传递普通数据时,8 保存一个字节数据。数据传输寄存器具体内容如表 4-3 所示。7.数据接
    发表于 10-09 11:28

    TC277i2c寄存器配置

    I2C_SFR_RUNTIME_USER_MODE_WRITE32(I2C_MODULE_X[HwUnit].TPSCTRL.U, I2C_TWO);配置文件中由这样一句对于TPSCTRL寄存
    发表于 12-14 10:39

    采用双向I2C接口SERDES IC ISL34340

    并行数据;SERIO引脚的AC耦合可以最大限度地减少两个SERDES之间DC共模压差和本地电源变化的影响;对任何不稳定性极为敏感的接收参考时钟有助于恢复高速串行流的时钟;I2C接口
    发表于 05-08 07:00

    I2c通信怎么设置寄存器地址

    tm4c123 launchpad作为master时i2c写操作要先输出device address,再给一个RegisterAddress,然后才能写i2c读操作也要给定这两个地址
    发表于 04-07 13:17

    基于 FPGA 的模拟 I²C协议设计使用

    拷贝到数据接收寄存器中。在写操作时,数据传输寄存器中的数据拷贝到数据移位寄存器中,然后依次通过 SDA 将数据传输到 I²
    发表于 09-02 19:12

    理解I2C协议所需的工具与资源

    寄存器数  再次发出启动序列(重复启动)  发出从地址,其中R/W为高电平  读取数据字节  发出停止序列  MSP MCU通信外设  为了实现串行通信,MSP器件上有可能提供4种不
    发表于 12-14 14:17

    i2c总线往摄像头寄存器中写寄存器

    1摄像头配置 用i2c总线往摄像头寄存器中写寄存器i2c总线为:一条时钟线,一条数据线,遵循i2c协议来写;摄像头的sccb
    发表于 08-06 06:51

    C语言是如何访问MCU寄存器

    C语言访问MCU寄存器的三种方式MCU中的特殊功能寄存器SFR,实际上就是SRAM地址已经确定的SRAM单元,在
    发表于 11-03 08:42

    如何使用I2C设备驱动接口开发应用程序

    ;以本文示例代码其中一次调用 rt_i2c_transfer() 发送数据为例,从机 MPU6050 地址 16 进制值为 0X68,寄存器地址
    发表于 08-18 10:54

    MIMXRT685-EVK如何访问8字节地址I3C设备寄存器

    我有一个 I3C 设备,它的寄存器地址有 8 个字节。查看通过I3C接口读取数据的SDK示例后,
    发表于 04-14 09:04

    快速定位DMA访问外设寄存器地址

    快速定位DMA访问外设寄存器地址快速定位DMA访问外设寄存器
    发表于 10-19 08:14

    通过SerDes远端I2C接口访问16位I2C外设寄存器地址

    Maxim吉比特多媒体串行链路(GMSL)串行器/解串器(SerDes)系列包括MAX9249、MAX9259、MAX9260、MAX9263和MAX9264,具有UART/I²C转换器,用于远端控制I²C接口外设。这些
    发表于 03-02 14:53 3484次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>SerDes</b><b class='flag-5'>远端</b>I2C<b class='flag-5'>接口</b><b class='flag-5'>访问</b><b class='flag-5'>16</b>位I2C<b class='flag-5'>外设</b><b class='flag-5'>寄存器</b><b class='flag-5'>地址</b>