在c8051f330的手册上将其设置为从接收器时,有这样一段话: “在SDA上接收串行数据,在SCL上接收串行时钟。在从事件被允许的情况下(INH = 0),当接收到一个起始条件(START)和一个含有从地址和数据方向位(此处应为写)的字节时,SMBus接口进入从接收器方式。在进入从接收器方式时将产生一个中断,并且ACKRQ被置‘1’。软件用一个ACK对接收到的从地址确认,或用一个NACK忽略接收到的从地址。如果接收到的从地址被忽略,从事件中断将被禁止,直到检测到下一个起始条件。如果收到的从地址被确认,将接收0个或多个字节的数据。在每接收到一个字节后,软件必须向ACK位写ACK或NACK,对接收字节作出应答。” 这是不是说,要写一段中断服务程序,用来判断这个地址是否是其它主机在找它通讯?也就是说。c8051f330虽然没有从机地址寄存器,但是我们可以给它定一个不和其它设备冲突的软地址,然后在其被配置为从机时,对其它主机的每次寻址通讯,都会产生一个中断,然后在中断服务程序里进行地址判断,如果是找自己,就响应(ACK),不是自己就不响应(NACK)。 同时,如果是这样的话,是不是可以给这种类型的mcu(没有地址寄存器)分配多个地址,反正都是通过中断服务程序来判断其它主机是否找自己通讯。 这样的理解大家看看对不对?
|