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
    +关注

    关注

    240

    文章

    23128

    浏览量

    658245
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119975
  • dac
    dac
    +关注

    关注

    43

    文章

    2268

    浏览量

    190819
收藏 人收藏

    评论

    相关推荐

    MM32F013x上实现I2C地址的功能应用

    I2C地址的功能应用。 1.配置方式 MM32F013X的多地址功能是通过配置I2C\_SLAVMASK
    发表于 01-05 11:43 2076次阅读

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

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

    存储I/O空间

    存储I/O空间:C240X芯片有16地址线,可以访问
    发表于 09-20 18:06 40次下载

    ARM I2C 总线接口寄存器设置

    ARM I2C 总线接口寄存器设置 控制ARM 12C总线接口需要配置总线控制寄存器(rII
    发表于 03-14 18:00 1713次阅读

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

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

    I2C LCD 器件通过驱动带有 I2C 接口的 2 线式 16 字符 LCD

    I2C LCD 器件通过驱动带有 I2C 接口的 2 线式 16 字符 LCD
    发表于 10-10 08:22 13次下载
    <b class='flag-5'>I2C</b> LCD 器件<b class='flag-5'>通过</b>驱动带有 <b class='flag-5'>I2C</b> <b class='flag-5'>接口</b>的 2 线式 <b class='flag-5'>16</b> 字符 LCD

    Atmel SAMC21的I2C驱动寄存器操作和寄存器代码免费下载

    本文档的主要内容详细介绍的是Atmel SAMC21的I2C驱动寄存器操作和寄存器代码免费下载。
    发表于 06-20 08:00 19次下载

    AVR中I/O端口寄存器介绍

    ATmega16的4个8的端口都有各自对应的3个I/O端口寄存器,它们占用了I/O空间的12个地址
    的头像 发表于 02-16 11:28 2912次阅读
    AVR中<b class='flag-5'>I</b>/O端口<b class='flag-5'>寄存器</b>介绍

    C语言访问MCU寄存器

    C语言访问MCU寄存器问题由来://下面这行代码的意思是直接操作0X020C4068这个寄存器//具体
    发表于 10-25 13:21 3次下载
    <b class='flag-5'>C</b>语言<b class='flag-5'>访问</b>MCU<b class='flag-5'>寄存器</b>

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

    发表于 11-17 12:41 0次下载
    <b class='flag-5'>通过</b> GMSL <b class='flag-5'>SerDes</b> 远程端 <b class='flag-5'>I</b>²<b class='flag-5'>C</b> <b class='flag-5'>接口</b><b class='flag-5'>访问</b> <b class='flag-5'>16</b> <b class='flag-5'>位</b> <b class='flag-5'>I</b>²<b class='flag-5'>C</b> <b class='flag-5'>外设</b><b class='flag-5'>寄存器</b><b class='flag-5'>地址</b>

    具有中断输出和配置寄存器的低压 16 I²C 和 SMBus I/O 扩展-NCA9555

    具有中断输出和配置寄存器的低压 16 I²C 和 SMBus I/O 扩展
    发表于 02-07 20:12 3次下载
    具有中断输出和配置<b class='flag-5'>寄存器</b>的低压 <b class='flag-5'>16</b> <b class='flag-5'>位</b> <b class='flag-5'>I</b>²<b class='flag-5'>C</b> 和 SMBus <b class='flag-5'>I</b>/O 扩展<b class='flag-5'>器</b>-NCA9555

    具有中断输出和配置寄存器的 PCA9535 远程 16I2C和SMBus I/O扩展数据表

    电子发烧友网站提供《具有中断输出和配置寄存器的 PCA9535 远程 16I2C和SMBus I/O扩展
    发表于 06-25 11:20 0次下载
    具有中断输出和配置<b class='flag-5'>寄存器</b>的 PCA9535 远程 <b class='flag-5'>16</b><b class='flag-5'>位</b><b class='flag-5'>I2C</b>和SMBus <b class='flag-5'>I</b>/O扩展<b class='flag-5'>器</b>数据表

    具有中断输出、复位和配置寄存器的PCA9539远程16I2C 和SMBus 低功耗 I/O 扩展数据表

    电子发烧友网站提供《具有中断输出、复位和配置寄存器的PCA9539远程16I2C 和SMBus 低功耗 I/O 扩展
    发表于 06-25 11:21 0次下载
    具有中断输出、复位和配置<b class='flag-5'>寄存器</b>的PCA9539远程<b class='flag-5'>16</b><b class='flag-5'>位</b><b class='flag-5'>I2C</b> 和SMBus 低功耗 <b class='flag-5'>I</b>/O 扩展<b class='flag-5'>器</b>数据表

    具有中断输出和配置寄存器的PCA9555远程16I2C和 SMBus I/O扩展数据表

    电子发烧友网站提供《具有中断输出和配置寄存器的PCA9555远程16I2C和 SMBus I/O扩展
    发表于 06-25 09:31 0次下载
    具有中断输出和配置<b class='flag-5'>寄存器</b>的PCA9555远程<b class='flag-5'>16</b><b class='flag-5'>位</b><b class='flag-5'>I2C</b>和 SMBus <b class='flag-5'>I</b>/O扩展<b class='flag-5'>器</b>数据表

    PCA9554A具有中断输出和配置寄存器的远程8I2C和SMBus I/O扩展数据表

    电子发烧友网站提供《PCA9554A具有中断输出和配置寄存器的远程8I2C和SMBus I/O扩展数据表.pdf》资料免费下载
    发表于 06-28 11:03 0次下载
    PCA9554A具有中断输出和配置<b class='flag-5'>寄存器</b>的远程8<b class='flag-5'>位</b><b class='flag-5'>I2C</b>和SMBus <b class='flag-5'>I</b>/O扩展<b class='flag-5'>器</b>数据表