登录后可评论,请 登录或 注册
没有SPI控制器的单片机也可以用IO口来模拟SPI通信,IO口的每一个高低电平变化都由软件来控制,相对麻烦一点,占用CPU的资源也比较多。
可以在网上找相关的协议,简单地说就是一个时钟线一个数据线,规定上升沿还是下降沿读取数据。比如发一个字节的00111100,从低位开始发送,上升沿读取数据,就是下面的流程 拉低时钟,数据线为0(最低位),当数据线信号稳定后,拉高时钟,这样就把最低位发出去了 拉低时钟,数据线为0(次低位),当数据线信号稳定后,拉高时钟,这样就把次低位发出去了 拉低时钟,数据线为1(次低位),当数据线信号稳定后,拉高时钟,这样就把第3位发出去了 …… 还有一个使能端信号要在发数据的时候置位
意思就是说,双方事先不约定通信频率,主机以同步脉冲来控制从机接收数据的速度,
有些单片机内置了SPI控制器,使用的时候,设置好以后,把要发送出去的数据放到控制器的寄存器里面,就不用CPU操心了,SPI控制器会自动把数据发出去。
没有SPI控制器的单片机也可以用IO口来模拟SPI通信,IO口的每一个高低电平变化都由软件来控制,相对麻烦一点,占用CPU的资源也比较多。
可以在网上找相关的协议,简单地说就是一个时钟线一个数据线,规定上升沿还是下降沿读取数据。比如发一个字节的00111100,从低位开始发送,上升沿读取数据,就是下面的流程
拉低时钟,数据线为0(最低位),当数据线信号稳定后,拉高时钟,这样就把最低位发出去了
拉低时钟,数据线为0(次低位),当数据线信号稳定后,拉高时钟,这样就把次低位发出去了
拉低时钟,数据线为1(次低位),当数据线信号稳定后,拉高时钟,这样就把第3位发出去了
……
还有一个使能端信号要在发数据的时候置位