SPI多机通信

嵌入式Linux,
嵌入式领域专家
博客专家认证
2013-04-24 04:31:27
我现在想用两台单片机上进行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;
}
}


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

了解的人,请帮助帮助、谢谢了
...全文
291 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
嵌入式Linux, 2013-05-01
  • 打赏
  • 举报
回复
引用 1 楼 duojinian 的回复:
网络中需要启用使能端或者片选端EN。 其实需要自定义协议。 假定所有IC均空闲,则都将EN设置为输入。EN上拉将使所有IC均发现总线空闲。 如果发现空闲,且某一IC需要发送数据,则设置为输出低。 发送ID,则对应ID的IC启动输入作业。 接收发送数据,都有硬件缓冲区。 除非自定义IO端口,模拟SPI。
引用 1 楼 duojinian 的回复:
网络中需要启用使能端或者片选端EN。 其实需要自定义协议。 假定所有IC均空闲,则都将EN设置为输入。EN上拉将使所有IC均发现总线空闲。 如果发现空闲,且某一IC需要发送数据,则设置为输出低。 发送ID,则对应ID的IC启动输入作业。 接收发送数据,都有硬件缓冲区。 除非自定义IO端口,模拟SPI。
恩'谢谢
DISINHUI 2013-04-26
  • 打赏
  • 举报
回复
网络中需要启用使能端或者片选端EN。 其实需要自定义协议。 假定所有IC均空闲,则都将EN设置为输入。EN上拉将使所有IC均发现总线空闲。 如果发现空闲,且某一IC需要发送数据,则设置为输出低。 发送ID,则对应ID的IC启动输入作业。 接收发送数据,都有硬件缓冲区。 除非自定义IO端口,模拟SPI。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧