SPI多机通讯

SPI多机通信
我现在想用两台单片机上进行SPI的多机通信,可收发,用到四根线SDO,SDI,EN,SCK、

我是这样进行假设的、

主机发送一个数据的8位、每个时钟上升沿开始发送数据、8个时钟后数据发送完毕

从机的话是如何进行接收的呢?(主机发送的8位数据不可能是全部存在了SDO上面的吧)、那么从机是检测每来一个时钟进行一次数据的存储了吗?那这样的话,从机的sck线是不是要设为输入状态了呢?

感觉发送很容易


void send(unsigned char date)
{
   en=1;
   _delay(10);
   en-0;
   sck=0;
   for(int i=0;i<8;i++)
   {
       sdo=date&0x80;
       sck=1;
       _delay(10);
       date<<=1;
       sck=0;
   }
}


上面是我写帖子时顺手写下的发送函数,要是主机以这样的方式发送出去的话、从机应该如何接收?

了解的人,请帮助帮助、谢谢了

------解决方案--------------------
网络中需要启用使能端或者片选端EN。
其实需要自定义协议。
假定所有IC均空闲,则都将EN设置为输入。EN上拉将使所有IC均发现总线空闲。
如果发现空闲,且某一IC需要发送数据,则设置为输出低。
发送ID,则对应ID的IC启动输入作业。

接收发送数据,都有硬件缓冲区。
除非自定义IO端口,模拟SPI。