IIC从机模式,跟上司有分歧,然后迷茫了。
以前一直从单片机做主机,给从设备发数据,而且从设备一般都是EPROM之类。现在需要用单片机做IIC从机,其它设备做IIC主机。而单片机可能从其它通讯方式(比如蓝牙)收到数据,然后通过IIC接口传给主机。(类似蓝牙串口透传,但是现在接口不是串口而是IIC接口)。
我的想法是当单片机(IIC)从蓝牙接收到数据,就放到buf中,等待主机的轮询读取,
IIC主机通过轮询方式,读单片机(IIC从机)的数据,但是有个疑惑:
IIC主机读从机设备,NOACK 是IIC主机发的,而IIC主机不知道从机有多少可以读取的数据,如何解决?
上司说我的思路不对,他认为我的IIC方式是读取EEPROM的方式 (即:开始 从地址 应答 数据 非应答停止),而现在IIC主从都是单片机,不需要这样的规则,由我们自己定。
我疑惑了,IIC就是这么规定的通讯方式,难道我还能自己定别的方式吗?而芯片的IIC控制器也是需要达到这样的约束才能实现,我如何自己定义?自己定义那就不叫IIC总线了。奈何上司不这么认为,难道我错了? IIC主机读从机设备,NOACK 是IIC主机发的,而IIC主机不知道从机有多少可以读取的数据,如何解决?
****************
读多少不是主机或从机定,是写软件的人定。
可以自定。IIC只定义了基本格式。 中间要发什么数据。你可以自己定义。比如。你可以每次开始后。第一个包读取有多少字节。
也可以命令的方式。比如1命令读有多少字节。2命令离数据。3命令……,等等都可以根所需要自己定义 IIC只要能发送和接收数据就可以了。这是基本的。至于数据类容是什么,格式是什么是你自己定义的。完成不必要按照EEPROM来。当然最基本的IIC格式你是要遵守的,不然有些硬件集成的IIC没法工作。 协议上再加协议 IC主机不知道从机有多少可以读取的数据,如何解决?——可以用通信协议来解决。在传输的数据前面发送数据字节数。
自己定义那就不叫IIC总线了——这个说法不妥。IIC只是物理层。通信链路层当然可以自己定义。参考OSI通信7层协议。 你还没有离职啊。。。 楼主还要加强学习,早日打通任督二脉 自定协议,主机先查询从机有多少数据,再读取具体长度的数据 你上司是对的,自己定协议更好 lei129210 发表于 2015-5-20 13:30
你还没有离职啊。。。
另一家了,兄弟 ccxlslr 发表于 2015-5-19 12:49
IIC只要能发送和接收数据就可以了。这是基本的。至于数据类容是什么,格式是什么是你自己定义的。完成不必 ...
恩,我原来的意思就是最基本的协议要符合IIC的。 上司说不用,所以当时一下子迷茫了的。
mcuisp 发表于 2015-5-20 13:59
楼主还要加强学习,早日打通任督二脉
恩恩,需要学习。来这里就是为了学习的。 ningling_21 发表于 2015-5-20 15:35
自定协议,主机先查询从机有多少数据,再读取具体长度的数据
多谢,也是i这么想的。 结贴要给分老是错误,只好以未满意结贴了。 我也想这么做的,有没有demo???
页:
[1]