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

[复制链接]
3491|0
 楼主| stefaniey 发表于 2023-6-8 22:03 | 显示全部楼层 |阅读模式
本帖最后由 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文件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部