wyq165 发表于 2015-5-19 11:21

IIC从机模式,跟上司有分歧,然后迷茫了。

以前一直从单片机做主机,给从设备发数据,而且从设备一般都是EPROM之类。

现在需要用单片机做IIC从机,其它设备做IIC主机。而单片机可能从其它通讯方式(比如蓝牙)收到数据,然后通过IIC接口传给主机。(类似蓝牙串口透传,但是现在接口不是串口而是IIC接口)。

我的想法是当单片机(IIC)从蓝牙接收到数据,就放到buf中,等待主机的轮询读取,
IIC主机通过轮询方式,读单片机(IIC从机)的数据,但是有个疑惑:
IIC主机读从机设备,NOACK 是IIC主机发的,而IIC主机不知道从机有多少可以读取的数据,如何解决?

上司说我的思路不对,他认为我的IIC方式是读取EEPROM的方式 (即:开始 从地址 应答 数据 非应答停止),而现在IIC主从都是单片机,不需要这样的规则,由我们自己定。
我疑惑了,IIC就是这么规定的通讯方式,难道我还能自己定别的方式吗?而芯片的IIC控制器也是需要达到这样的约束才能实现,我如何自己定义?自己定义那就不叫IIC总线了。奈何上司不这么认为,难道我错了?

lyjian 发表于 2015-5-19 12:43

IIC主机读从机设备,NOACK 是IIC主机发的,而IIC主机不知道从机有多少可以读取的数据,如何解决?
****************
读多少不是主机或从机定,是写软件的人定。

ccxlslr 发表于 2015-5-19 12:45

可以自定。IIC只定义了基本格式。 中间要发什么数据。你可以自己定义。比如。你可以每次开始后。第一个包读取有多少字节。
也可以命令的方式。比如1命令读有多少字节。2命令离数据。3命令……,等等都可以根所需要自己定义

ccxlslr 发表于 2015-5-19 12:49

IIC只要能发送和接收数据就可以了。这是基本的。至于数据类容是什么,格式是什么是你自己定义的。完成不必要按照EEPROM来。当然最基本的IIC格式你是要遵守的,不然有些硬件集成的IIC没法工作。

ayb_ice 发表于 2015-5-19 12:49

协议上再加协议

xmar 发表于 2015-5-19 12:51

IC主机不知道从机有多少可以读取的数据,如何解决?——可以用通信协议来解决。在传输的数据前面发送数据字节数。

自己定义那就不叫IIC总线了——这个说法不妥。IIC只是物理层。通信链路层当然可以自己定义。参考OSI通信7层协议。

lei129210 发表于 2015-5-20 13:30

你还没有离职啊。。。

mcuisp 发表于 2015-5-20 13:59

楼主还要加强学习,早日打通任督二脉

ningling_21 发表于 2015-5-20 15:35

自定协议,主机先查询从机有多少数据,再读取具体长度的数据

奔牛滚滚 发表于 2015-5-20 21:22

你上司是对的,自己定协议更好

wyq165 发表于 2015-5-20 21:48

lei129210 发表于 2015-5-20 13:30
你还没有离职啊。。。

另一家了,兄弟

wyq165 发表于 2015-5-20 21:51

ccxlslr 发表于 2015-5-19 12:49
IIC只要能发送和接收数据就可以了。这是基本的。至于数据类容是什么,格式是什么是你自己定义的。完成不必 ...

恩,我原来的意思就是最基本的协议要符合IIC的。 上司说不用,所以当时一下子迷茫了的。

wyq165 发表于 2015-5-20 21:51

mcuisp 发表于 2015-5-20 13:59
楼主还要加强学习,早日打通任督二脉

恩恩,需要学习。来这里就是为了学习的。

wyq165 发表于 2015-5-20 21:51

ningling_21 发表于 2015-5-20 15:35
自定协议,主机先查询从机有多少数据,再读取具体长度的数据

多谢,也是i这么想的。

wyq165 发表于 2015-5-20 21:54

结贴要给分老是错误,只好以未满意结贴了。

风去 发表于 2015-5-20 22:15

yulin0668 发表于 2019-9-2 13:58

我也想这么做的,有没有demo???
页: [1]
查看完整版本: IIC从机模式,跟上司有分歧,然后迷茫了。