单片机/MCUwilliam hill官网
直播中

zhu0309

11年用户 77经验值
擅长:电源/新能源 测量仪表 嵌入式技术 控制/MCU
私信 关注

I2C写寄存器地址问题

本帖最后由 zhu0309 于 2015-4-14 08:32 编辑

本人玩刚接触单片机,想做个HDMI5进1出切换器,用的IC为PI3HDMI336,红色字体部分希望大侠们帮我分析分析,感谢啦
如下为datasheet寄存器部分,
PI3HDMI336 Datasheet.pdf (1018.2 KB)
(下载次数: 90, 2015-4-14 08:29 上传)

void At24c02Write(unsigned char addr,unsigned char dat)

        I2C_Start();
        I2C_SendByte(0xa0, 1);//发送写器件地址
        I2C_SendByte(addr, 1);//发送要写入内存地址,这边内存地址addr是不是为0,1,2三种即可?各位大侠帮帮忙啦~~
        I2C_SendByte(dat, 0);        //发送数据
        I2C_Stop();
},

1.jpg 2.jpg 3.jpg






已退回1积分

回帖(6)

韩山童

2015-4-14 11:55:43
第一种:你要查看你的单片机的内存地址(SRAM),是8位的还是16位的,然后将地址代入你的addr,当然还要区分是写入SRAM还是写入Flash,因为大多数单片机的SRAM和Flash的地址是分开的,所以这些地址会有重叠。

第二种:定义SRAM变量var,令addr=&var,也是可以的。
举报

zhu0309

2015-4-15 17:18:23
引用: 韩山童 发表于 2015-4-14 11:55
第一种:你要查看你的单片机的内存地址(SRAM),是8位的还是16位的,然后将地址代入你的addr,当然还要区分是 ...

sorry,我上面描述错误了,单片机我用的是STC 90C516RD+(8位),HDMI切换芯片用的是PI3HDMI336(上面有datasheet),
我想用单片机的I2C连接到HDMI切换芯片上 并控制HDMI切换芯片工作状态,
在HDMI切换芯片datasheet里介绍有3个寄存器,现在就是不明白这三个寄存器的地址是多少?还请大侠能帮帮我啦,
举报

韩山童

2015-4-16 10:12:51
PI3HDMI336确定了6位地址,剩下一位I2C_ADR给你确定,即(101010XX),如果要写到PI3HDMI336,则地址为二进制(10101010)=0xaa或者是(10101000)=0xa8,也就是说地址寄存器的I2C_ADR位由你确定。




举报
  • 从机地址寄存器

zhu0309

2015-4-16 11:10:57
引用: 韩山童 发表于 2015-4-16 10:12
PI3HDMI336确定了6位地址,剩下一位I2C_ADR给你确定,即(101010XX),如果要写到PI3HDMI336,则地址为二进 ...

我现在遇到问题是,不知道PI3HDMI336内存地址是多少?如下器件地址我已经确定为0xa0,
但是困惑的是addr(内存地址),是不是addr改成0、1、2就可以了?或者应该是别的?
I2C_Start();
        I2C_SendByte(0xa0, 1);//发送写器件地址
       I2C_SendByte(addr, 1);//发送要写入内存地址,这边内存地址addr是不是为0,1,2三种即可
        I2C_SendByte(dat, 0);        //发送数据
        I2C_Stop();
1,发送器件地址2,发送内存地址??????
3,发送数据
举报

韩山童

2015-4-16 11:32:44
PI3HDMI336这个没有SRAM啊,看看你主机的SRAM,SRAM的地址编址要看其大小,如256k的avrSRAM编址从0x0000~0xFFFF。
举报

韩山童

2015-4-16 11:33:47
还有不知道你发送内存地址干嘛?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分