打印
[PIC®/AVR®/dsPIC®产品]

PIC12f1822单片机的I2C通信问题

[复制链接]
1207|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
从机地址是器件地址,决定选择哪个器件的读写;起始地址是器件的内部地址,读写器件内部数据时的数据地址。

使用特权

评论回复
5
huangchui| | 2022-1-1 12:33 | 只看该作者
看从机的通信协议,这种IO模拟很容易。

使用特权

评论回复
6
yszong| | 2022-1-1 12:35 | 只看该作者
从程序看,应该是字符‘M’、‘i’、‘c’、‘r’、‘o’、‘c’写入从机的地址,,,应该不可以去掉

使用特权

评论回复
7
llljh|  楼主 | 2022-1-1 12:38 | 只看该作者
从机地址好像是包含在第一次发送的数据里边的。。

使用特权

评论回复
8
heweibig| | 2022-1-1 12:40 | 只看该作者
这个只是demo程序..

所发送的数据不是I2C协议所必需的.

使用特权

评论回复
9
heweibig| | 2022-1-1 12:49 | 只看该作者
你可以根据自己的需求, 和你所通信的主从的要求,自定义数据内容的.

使用特权

评论回复
10
llljh|  楼主 | 2022-1-1 12:53 | 只看该作者
了解~!谢谢

使用特权

评论回复
11
北极风| | 2022-1-1 13:06 | 只看该作者
I2C总线就两根线连接所有器件,每个器件的器件地址不能相同,I2C主控先发送期间地址是选择和哪个器件通讯。

使用特权

评论回复
12
pzsh| | 2022-1-7 11:29 | 只看该作者
I2C就是个总线

使用特权

评论回复
13
woshigeshuai| | 2023-1-16 21:45 | 只看该作者
PIC18C452   只能烧写一次吗?

使用特权

评论回复
14
michaelleng| | 2023-1-31 09:05 | 只看该作者
woshigeshuai 发表于 2023-1-16 21:45
PIC18C452   只能烧写一次吗?

是的  OTP芯片

使用特权

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

本版积分规则

855

主题

11301

帖子

6

粉丝