[PIC®/AVR®/dsPIC®产品] PIC12f1822单片机的I2C通信问题

[复制链接]
 楼主| llljh 发表于 2022-1-1 12:26 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2022-1-7 11:28 编辑

这是我从microchip的官网下载的I2C代码。展示了我有疑惑的一部分。

    Send_I2C_StartBit();                    // send start bit
    Send_I2C_ControlByte(block_address,0);  // send control byte with R/W bit set low
    Send_I2C_Data(word_address);            // send starting address
    Send_I2C_Data('M');             // send data byte 1
    Send_I2C_Data('i');             // send data byte 2
    Send_I2C_Data('c');             // send data byte 3
    Send_I2C_Data('r');             // send data byte 4
    Send_I2C_Data('o');             // send data byte 5
    Send_I2C_Data('c');             // send data byte 6

请教一下各位大佬。
为什么发完从机地址之后,还要将起始地址发过去。。
    Send_I2C_Data(word_address);            // send starting address
去掉可以吗?
 楼主| llljh 发表于 2022-1-1 12:29 | 显示全部楼层
本帖最后由 llljh 于 2022-1-1 12:31 编辑

还有什么吗
supernan 发表于 2022-1-1 12:31 | 显示全部楼层
关键要看您的从机协议,如果其首先要接收要操作的地址,那您就不能省略这一步。
北极风 发表于 2022-1-1 12:33 | 显示全部楼层
从机地址是器件地址,决定选择哪个器件的读写;起始地址是器件的内部地址,读写器件内部数据时的数据地址。
huangchui 发表于 2022-1-1 12:33 | 显示全部楼层
看从机的通信协议,这种IO模拟很容易。
yszong 发表于 2022-1-1 12:35 | 显示全部楼层
从程序看,应该是字符‘M’、‘i’、‘c’、‘r’、‘o’、‘c’写入从机的地址,,,应该不可以去掉
 楼主| llljh 发表于 2022-1-1 12:38 | 显示全部楼层
从机地址好像是包含在第一次发送的数据里边的。。
heweibig 发表于 2022-1-1 12:40 | 显示全部楼层
这个只是demo程序..

所发送的数据不是I2C协议所必需的.
heweibig 发表于 2022-1-1 12:49 | 显示全部楼层
你可以根据自己的需求, 和你所通信的主从的要求,自定义数据内容的.
 楼主| llljh 发表于 2022-1-1 12:53 | 显示全部楼层
了解~!谢谢
北极风 发表于 2022-1-1 13:06 | 显示全部楼层
I2C总线就两根线连接所有器件,每个器件的器件地址不能相同,I2C主控先发送期间地址是选择和哪个器件通讯。
pzsh 发表于 2022-1-7 11:29 | 显示全部楼层
I2C就是个总线
woshigeshuai 发表于 2023-1-16 21:45 | 显示全部楼层
PIC18C452   只能烧写一次吗?
michaelleng 发表于 2023-1-31 09:05 | 显示全部楼层
woshigeshuai 发表于 2023-1-16 21:45
PIC18C452   只能烧写一次吗?

是的  OTP芯片
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

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