第一步,首先需要主机对片选信号端进行选择,通常是将CS/SS引脚拉低代表选择该从机进行通信,实际使用时需要阅读使用手册来确定是拉低还是拉高。 第二步,选择好要通信的芯片后就需要对其发送时钟信号了,SPI有四种工作模式,分别如下: 我们根据想要通信的芯片的数据手册配置对应的时钟信号,在对应的时钟信号上升或下降沿向其输入我们想要存入的数据即可。 第三步,当我们的主机要向从机的缓冲区发送数据时,数据的长度可以是不固定的,数据将会跟随我们的时钟上升或下降沿一位一位的发出。 以93C46为例(一个常见的额EEPROM芯片),以下为向其发送数据时的标准格式: 
比如我们要向其0X0000001(7位)地址位发送0X00001111(8位)数据时就需要对其发送如下数据。 
该芯片片选端为高电平有效,时钟线空闲默认为低电平,且为上升沿读取数据,那么在实际传输数据时MOSI引脚和SCK引脚的电平匹配如下。 
通过如上配置我们便将需要传输的数据发送到芯片的对应地址进行保存了。以上的通信过程仅为该芯片使用的通信配置,当使用其他芯片时需以芯片手册为准。 第四步,了解完写入数据我们还需要了解一下读取数据,即从机发送数据给主机。 还是以93C46为例,在主机读取其数据时也需要向其发送数据,数据内容如下。 
即我们需要将起始位、读写位、地址位给到从机,从机会将对应地址的数据通过MISO引脚传输过来,实际数据通信过程如下。 这样就完成了一个8位地址的读取。 |