SPI多机通讯
SPI多机通信
我现在想用两台单片机上进行SPI的多机通信,可收发,用到四根线SDO,SDI,EN,SCK、
我是这样进行假设的、
主机发送一个数据的8位、每个时钟上升沿开始发送数据、8个时钟后数据发送完毕
从机的话是如何进行接收的呢?(主机发送的8位数据不可能是全部存在了SDO上面的吧)、那么从机是检测每来一个时钟进行一次数据的存储了吗?那这样的话,从机的sck线是不是要设为输入状态了呢?
感觉发送很容易
上面是我写帖子时顺手写下的发送函数,要是主机以这样的方式发送出去的话、从机应该如何接收?
了解的人,请帮助帮助、谢谢了
------解决方案--------------------
网络中需要启用使能端或者片选端EN。
其实需要自定义协议。
假定所有IC均空闲,则都将EN设置为输入。EN上拉将使所有IC均发现总线空闲。
如果发现空闲,且某一IC需要发送数据,则设置为输出低。
发送ID,则对应ID的IC启动输入作业。
接收发送数据,都有硬件缓冲区。
除非自定义IO端口,模拟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。