打印
[嵌入式linux]

关于Realtek交换机芯片RTL8367 RB的EEPROM SMI Slave类I2C总线读取寄存器数据时出错的问题

[复制链接]
1935|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 stefaniey 于 2023-6-8 22:04 编辑

最近在做以太网相关的电路设计,在调试过程中想添加一些功能,需要涉及到对RTL8367RB的寄存器读写操作,尝试了SPI和SMI Slave的方式,都没有成功,这里主要想请教关于SMI的问题。datasheet上关于这部分的说明在附图。
我的实现方式是用STM32F103的PB13和PB14引脚模拟SMI,输出时设置为推挽输出,输入时设置为上拉输入。smi的读写程序是参考api文件(https://github.com/BootingUp/Realtek_Unmanaged_Switch_API_V1.3.12_20171124)中的smi.c改写过来的。对寄存器进行写操作时能正常收到ACK,但进行读操作时,写入控制字节(1101100x)的最后一位(1,读;0,写)后,SDA的高电平电压会随着SCK下降沿产生立刻发生变化(3.3V--->2.4V),电平变化会在写一个字节写完后的第一个SCK下降沿恢复,后续收不到ACK。排查了很久,不知道问题所在,所以想请教各位大佬。
附上示波器测得的时序图(图里的寄存器地址是0x2010或0x12C0,接收ACK最大次数是5次),datasheet文件。

SMIRead2010局部.jpg (419.28 KB )

读寄存器过程

读寄存器过程

SMIRead2010.jpg (402.83 KB )

读寄存器过程

读寄存器过程

12C0.jpg (437.96 KB )

读寄存器过程

读寄存器过程

SMIWrite.jpg (412.92 KB )

写寄存器过程

写寄存器过程

RTL8367_SMI.png (444.42 KB )

RTL8367_SMI.png

2202111700_Realtek-Semicon-RTL8367RB-VB-CG_C2761412.pdf

1.9 MB

RTL8367RB datasheet

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝